|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:06 am
|
Страница 1 от 1
|
[ 9 мнения ] |
|
PIC18F65J10 + I2C EEPROM Проблем
| Автор |
Съобщение |
|
SurchO
Ранг: Минаващ
Регистриран на: Вто Апр 05, 2005 9:34 am Мнения: 88
|
 PIC18F65J10 + I2C EEPROM Проблем
Здравейте. Имам един PIC18F65J10 към който съм вързал 24LC01B I2C EEPROM. Вързал съм го към MSSP1 модула. Пулл ЪП резисторите са 4,2К.
ПИК-а пуснат на 10Мхз КВАРЦ с PLL (Работи на 40Мхз)
Проблема е че веднъж тръгва да работи МССП модула, веднъж не.
Тоест пуска се захранване и проца чете един байт от ЕПРОМА и след това продължава. Само че него прави всеки път като се пусне захранване..
Докато си играх с тъпиа ПРОЦ забелязах че като си сложа пръста върху пиновете на кварца и нулата на захранването комуникациата тръгва.
Като тръгне веднъж после ако се рестартира пак тръгва но ако се остави 10-тина минути без захранване после неще да тръгне (  )
Интересното е че независимо дали ще тръгне МССП или не, ПРОЦа си работи нормално (Таимерите и I/O . Това ползвам) ?!?!?!
Ако якой му се е случвало подобно неще или пък знае какъв е проблема моля да помогне че съм го загазил а ми е спешно да го направя..
Благодаря...
.
.
// I2C BUS Config
TRISC=0xff;
SSP1STAT=0x80;
SSP1CON1=0x28;
SSP1CON2=0x00;
SSP1ADD=99; //100KHz
//-----------------------
.
.
.
.nop();
SEN=1;
while(!SSP1IF); // Еи тука веднъж вдига прекъсване, веднъж не
SSP1IF=0;
SSP1BUF=EPROM_W;
while(!SSP1IF); // Еи тук същото нещо...
SSP1IF=0;
while(ACKSTAT);
.
.
.
|
| Пон Фев 25, 2008 9:55 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
За този контролер нямам идея, но за други Microchip контролери с хардуерен I2C модул често се случва да зависне комуникацията. Същевременно когато направя софтуерна комуникация няма проблеми.
Избягвай в безкраен цикъл да чакаш да се вдигне SSPIF. Включи един софтуерен броч, с който да засичаш колко пъти си преминал през безкрайния цикъл. Като достигнеш някаква критична стойност break и напускаш, като връщаш някакъв код за грешка.
След това задължително преинициализация на хардуера. Доста време си бях загубил да търся причината за странното поведение на MSSP модулите, накрая се отказах. Когато имам възможност си използвам софтуерната комуникация, поне знам, че е бетон.
Сложи хубави филтрови кондензатори на захранването, ако имаш иглички може да се объркат MSSP модула и/или паметта.
Прегледай errata документите, ако има такива за този професор, MSSP има доста бъгчета.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Фев 25, 2008 11:05 pm |
|
 |
|
SurchO
Ранг: Минаващ
Регистриран на: Вто Апр 05, 2005 9:34 am Мнения: 88
|
Ами оказва се че ми вдига флаг за BUSCOLLISION и немога да разбера защо?
|
| Пон Фев 25, 2008 11:19 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Ако имаш само един Мастер на буса, значи софтуера ти куца. Ако са повече от един Мастер, е напълно нормална ситуация. Тук преди време постнах един код за PIC18F, работи коректно, сравни да видиш какво правиш.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Фев 25, 2008 11:47 pm |
|
 |
|
SurchO
Ранг: Минаващ
Регистриран на: Вто Апр 05, 2005 9:34 am Мнения: 88
|
само пика и еепрома са на шината, няма нищо друго. Сорса сам го пейстнал... немога да разбера засщо вдига тъпиа флаг за колизия на шината. Сорса съм го взел от сайта на маикрочип. само че там е написан на асемблер но иначе е едно към едно......
|
| Вто Фев 26, 2008 1:14 am |
|
 |
|
stanleyhacker
Ранг: Новодошъл
Регистриран на: Чет Дек 02, 2004 7:22 pm Мнения: 140
|
Доколкото разбрах на имаш пулъпи на дата-та , но и на клока. Този на клока е излишен и може да бърка пик-а. Другия го направи на 4.7к, колкото е препоеъчително.
А ти имаш ли кондензатори от пиновете на кварца към маса? Пробвай да ги намалиш на 18пФ, ако са повече.
|
| Вто Фев 26, 2008 11:34 am |
|
 |
|
SurchO
Ранг: Минаващ
Регистриран на: Вто Апр 05, 2005 9:34 am Мнения: 88
|
ами резисторите са ми по 4.7К. Гледах ги в един Аппликеишън на майкрочип. Май се оказва че не всеки път МССП модула успява да вземе контрол над I/O пиновете... ?!?!?
Имам кондензатори към кварза за към маса. пробвах с 5 различни кварца като честота и като модел но не намерих разлика.....
Проблема ми е този:
Note: If at the beginning of the Start condition,
the SDAx and SCLx pins are already sam-
pled low, or if during the Start condition, the
SCLx line is sampled low before the SDAx
line is driven low, a bus collision occurs,
the Bus Collision Interrupt Flag, BCLxIF, is
set, the Start condition is aborted and the
I2C module is reset into its Idle state.
Това е от документа на ПИКА.
по-скоро проблема ми е във втората част. Като го закача на Цифровиа осцилоскоп се визда,че не сваля ДАТА-шината в нула при Старт.
Старнното че от време на време тръгва пустинята...
|
| Вто Фев 26, 2008 2:26 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Това ми мяза на лоша инициализация на модула. Освен това дай малко време на еепрома да зацепи. При хардуерен I2C трябва пулъп на клока щото подава само ниско ниво и high impedance.
|
| Вто Фев 26, 2008 5:17 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
SSPEN бита на SSPxCON1 регистъра го вдигни с побитово ИЛИ след като си инициализирал всичко. Разрешаваш модула при положение, че имаш още инициализации, а не бива.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Вто Фев 26, 2008 6:33 pm |
|
|
|
Страница 1 от 1
|
[ 9 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|