| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC18F65J10 + I2C EEPROM Проблем http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=5514 |
Страница 1 от 1 |
| Автор: | SurchO [ Пон Фев 25, 2008 9:55 pm ] |
| Заглавие: | 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 11:05 pm ] |
| Заглавие: | |
За този контролер нямам идея, но за други Microchip контролери с хардуерен I2C модул често се случва да зависне комуникацията. Същевременно когато направя софтуерна комуникация няма проблеми. Избягвай в безкраен цикъл да чакаш да се вдигне SSPIF. Включи един софтуерен броч, с който да засичаш колко пъти си преминал през безкрайния цикъл. Като достигнеш някаква критична стойност break и напускаш, като връщаш някакъв код за грешка. След това задължително преинициализация на хардуера. Доста време си бях загубил да търся причината за странното поведение на MSSP модулите, накрая се отказах. Когато имам възможност си използвам софтуерната комуникация, поне знам, че е бетон. Сложи хубави филтрови кондензатори на захранването, ако имаш иглички може да се объркат MSSP модула и/или паметта. Прегледай errata документите, ако има такива за този професор, MSSP има доста бъгчета. |
|
| Автор: | SurchO [ Пон Фев 25, 2008 11:19 pm ] |
| Заглавие: | |
Ами оказва се че ми вдига флаг за BUSCOLLISION и немога да разбера защо? |
|
| Автор: | ¶ [ Пон Фев 25, 2008 11:47 pm ] | |||||||||
| Заглавие: | ||||||||||
Ако имаш само един Мастер на буса, значи софтуера ти куца. Ако са повече от един Мастер, е напълно нормална ситуация. Тук преди време постнах един код за PIC18F, работи коректно, сравни да видиш какво правиш. |
||||||||||
| Автор: | SurchO [ Вто Фев 26, 2008 1:14 am ] |
| Заглавие: | |
само пика и еепрома са на шината, няма нищо друго. Сорса сам го пейстнал... немога да разбера засщо вдига тъпиа флаг за колизия на шината. Сорса съм го взел от сайта на маикрочип. само че там е написан на асемблер но иначе е едно към едно...... |
|
| Автор: | stanleyhacker [ Вто Фев 26, 2008 11:34 am ] |
| Заглавие: | |
Доколкото разбрах на имаш пулъпи на дата-та , но и на клока. Този на клока е излишен и може да бърка пик-а. Другия го направи на 4.7к, колкото е препоеъчително. А ти имаш ли кондензатори от пиновете на кварца към маса? Пробвай да ги намалиш на 18пФ, ако са повече. |
|
| Автор: | SurchO [ Вто Фев 26, 2008 2:26 pm ] |
| Заглавие: | |
ами резисторите са ми по 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. Това е от документа на ПИКА. по-скоро проблема ми е във втората част. Като го закача на Цифровиа осцилоскоп се визда,че не сваля ДАТА-шината в нула при Старт. Старнното че от време на време тръгва пустинята... |
|
| Автор: | Cekins [ Вто Фев 26, 2008 5:17 pm ] |
| Заглавие: | |
Това ми мяза на лоша инициализация на модула. Освен това дай малко време на еепрома да зацепи. При хардуерен I2C трябва пулъп на клока щото подава само ниско ниво и high impedance. |
|
| Автор: | ¶ [ Вто Фев 26, 2008 6:33 pm ] |
| Заглавие: | |
SSPEN бита на SSPxCON1 регистъра го вдигни с побитово ИЛИ след като си инициализирал всичко. Разрешаваш модула при положение, че имаш още инициализации, а не бива. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|