| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| pic24 C30 portb проблем http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=8233 |
Страница 1 от 1 |
| Автор: | dan [ Вто Окт 26, 2010 4:40 pm ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Заглавие: | pic24 C30 portb проблем | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Здравейте! Понеже I2C интерфейса на Pic24fj32GA004 ми прави само проблеми, реших да си спретна една софтуерна имплементацийка на I2C на същите пинове (защото платката вече съм я направил). До някъде нещата се получиха: Изпращам нормални старт условие и данни, но щом добавих и код за четене на ACQ от сензора нещата се объркаха. Какво ставана: щом добавих кода за ack, при стартиране на програмата не се качва нивoтo на SDA.(има нещо като малко импулсче). Свързал съм SDA и SCL с 1,5k pull-up резистори. в main има следното:
в файла за I2C имам:
idle_line:
старт:
изпращане на данни:
за ACQ :
Ето oсцилограма, ако изпращам само данните (без кода за ack): http://img253.imageshack.us/i/send0x90withoutacq.png/ А с добавен код за ack: http://img401.imageshack.us/i/send0x90withacq.png/ Някой има ли представа защо може да става така? |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Автор: | dan [ Вто Окт 26, 2010 5:09 pm ] |
| Заглавие: | |
Странно. Като махнах сензора (TCN75) нещата се оправиха. Явно TCN-а е държал линията долу. Само ми е чудно защо. Нали след 8-ти такт (което за него е ack)трябва да освободи линията... |
|
| Автор: | CarBeta [ Вто Окт 26, 2010 9:46 pm ] |
| Заглавие: | |
След осмия такт трябва да има девети(и задържаш клока в ниско ниво) и тогава чакаш АСК. При ниско ниво на SDA можеш да продължиш със следващи 8+1 такта или да генерираш STOP. При високо ниво на SDA(NACK - нещо не е наред) трябва да генерираш STOP. |
|
| Автор: | Cekins [ Вто Окт 26, 2010 10:14 pm ] |
| Заглавие: | |
@dan, я потърси из форума за тоя датчик. Имаше преди 2-3 месеца пак някакъв такъв проблем и се беше решил. |
|
| Автор: | dan [ Сря Окт 27, 2010 2:52 am ] |
| Заглавие: | |
Аз наскоро пак го борих този чип, но тогава беше друго. Наистина щом смъкнах последния клок на '0' и чипчето освободи линията SDA. |
|
| Автор: | zaphod [ Сря Окт 27, 2010 7:26 am ] |
| Заглавие: | |
ха 24ката позволява да пипнеш два пъти последователно един и същи порт? 30ката е бъгната и първото пипване не се случва, ако няма между тях поне едно нопче, много дразнещ бъг, много. |
|
| Автор: | dan [ Вто Ное 02, 2010 4:56 pm ] | |||||||||
| Заглавие: | ||||||||||
@zaphod Сега забелязах подобен бъг и тук: в следния код:
На реда за сетване на RB9 ми се изчиства предварително сетнатия RB13... |
||||||||||
| Автор: | dan [ Вто Ное 02, 2010 5:09 pm ] | |||||||||
| Заглавие: | ||||||||||
Странно, добавих NOP-чета, но проблема си остана същия.
Докато използвах pic12 и pic16 си бях свикнал с шадоу регистрите, ама егати 24-ката, ако и тук трябва да ги ползвам А още по-странното е, че и симулатора си го показва, че става така... |
||||||||||
| Автор: | dan [ Вто Ное 02, 2010 5:40 pm ] |
| Заглавие: | |
Най-любезно моля господата от Мокрочип да ми простят, за всичко което отнесоха. Не съм изключил аналоговата функция на пина |
|
| Автор: | zaphod [ Сря Ное 03, 2010 8:50 am ] |
| Заглавие: | |
не, онова е друго, ако беше 30ка нямаше да се изпълни първото обръщение, а не да пипне грешен пин. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|