|
ATmega16 + DS18B20. Код на ассемблере не работает. |
|
|
|
Dec 6 2008, 04:24
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 30-06-08
Пользователь №: 38 638

|
Здравствуйте. Столкнулся с такой проблемой. Передо мной стоит задача научить AVR-ку читать температуру с термодатчика и, хотя бы, выкидывать полученные данные в терминал по USART. Термодатчик смонтирован на плате и подключен к 6 pin PORTA, питание не паразитное. Мега работает на 8 MHz и тактиурется от внутреннего RC-генератора. Код написан на ассемблере в AVR studio. Теперь суть самой проблемы - термодатчик выдает presence импульс(то есть он всётаки работает), но все остальные действия безрезультатны - вместо температуры приходит всякая дребедень, но только не температура. Свой код перепроверял много раз, но не могу понять в чем ошибка. Знающие люди, поглядите на код пожалуйста, может я не вижу ошибки? Или подскажите возможные проблемы.. Заранее благодарен.
ds18b20_test.rar ( 1.76 килобайт )
Кол-во скачиваний: 417Целиком код в прикреплении, а вот участки с "функциями" записи и чтения: Код _ds_wr_byte: sbi DDRA, 6 ;шестой пин PORTA на выход
ldi wr_counter, 8 _start_wr: sbrc ds_cmd, 0 rjmp _wr_one rjmp _wr_zero _wr_one: cbi PORTA, PA6 rcall _delay_1us rcall _delay_1us rcall _delay_1us rcall _delay_1us rcall _delay_1us rcall _delay_1us rcall _delay_1us rcall _delay_1us sbi PORTA, PA6 ldi box, 8 rcall _ds_s_delay ; 10us * box rjmp _end_wr
_wr_zero: cbi PORTA, PA6
ldi box, 8 rcall _ds_s_delay
sbi PORTA, PA6
rjmp _end_wr
_end_wr: lsr ds_cmd
ldi box, 1 rcall _ds_s_delay dec wr_counter brne _start_wr ret
_ds_rx_t_bytes: ; функция принимает 2 байта содержащих температуру ldi wr_counter, 8 ldi lbyte, 0x00 ldi hbyte, 0x00 _read_l_b: sbi DDRA, 6 ;---------------------------- cbi PORTA, PA6 rcall _delay_1us ; 3 мкс rcall _delay_1us ;sbi PORTA, PA6 ;---------------------------- cbi DDRA, 6 ldi box, 1 ; 10 мкс rcall _ds_s_delay ;---------------------------- sbic PINA, PA6 ori lbyte, (1 << 7) lsr lbyte ;ldi box, 7 ;rcall _ds_s_delay rcall _delay_1us rcall _delay_1us
dec wr_counter breq _read_l_b ldi wr_counter, 8 _read_h_b: sbi DDRA, 6 ;---------------------------- cbi PORTA, PA6 rcall _delay_1us ; 3 мкс rcall _delay_1us ;sbi PORTA, PA6 ;---------------------------- cbi DDRA, 6 ldi box, 1 ; 10 мкс rcall _ds_s_delay ;---------------------------- sbic PINA, PA6 ori hbyte, (1 << 7) lsr hbyte rcall _delay_1us dec wr_counter breq _read_h_b ret З.Ы. Может быть проблема в нестабильном RC генераторе в меге?
ds18b20_test.rar ( 1.76 килобайт )
Кол-во скачиваний: 417
|
|
|
|
|
 |
Ответов
|
Dec 8 2008, 09:04
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
просмотрел 1-wire память, часы, АЦП, термометры - вроде все поддерживают паразитное питание... что я пропустил? кстати, я в смятении - изложенные аргументы я принял, но меня странно удивила информация, которую я вычитал из документа, описывающего DS2490... там написано, что интервал чтения мастера не должен превышать 22 мкс  а как же быть с 15 мкс, определенными "по-умолчанию"?
Сообщение отредактировал ARV - Dec 8 2008, 09:19
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Dec 8 2008, 11:04
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(ARV @ Dec 8 2008, 12:04)  просмотрел 1-wire память, часы, АЦП, термометры - вроде все поддерживают паразитное питание... что я пропустил? Хорошо, сформулирую иначе: если у ванварного девайса есть нога Vcc, он не будет генерить Presence при подаче питания. Не готов сейчас просматривать даташиты на все девайсы в микробанках (MicroCAN  ), но, имхо, и там найдутся предатели. Цитата кстати, я в смятении - изложенные аргументы я принял, но меня странно удивила информация, которую я вычитал из документа, описывающего DS2490... там написано, что интервал чтения мастера не должен превышать 22 мкс  а как же быть с 15 мкс, определенными "по-умолчанию"? Вы не обратили внимания, что это написано применительно к Flexible mode DS2940 (возможность подстроиться под характеристики шины). Ограничение в 22 мкс вызвано сомнениями в способности ванварного слейва с паразитным питанием дотянуть 0 на шине до требуемой длительности и не упасть самому без сил (по-видимому, актуально при минимальных длительностях 1 на шине между тайм-слотами; мне до такого безобразия доходить не удавалось). Стандартные тайминги (чуть ниже Fig.6) tLOW1 = 8 us, tDSO = 6 us. Заметьте, еще чуть ниже: *Power-up defaults for Flexible speed: tLOW1=12µs, tDSO=7µs, что вполне объяснимо, учитывая логику работы ванварной шины. Я, пожалуй, приведу полностью абзац, в котором содержится удивившее Вас предложение, т.к. он достаточно аргументировано опровергает Вашу теорию о пользе 1-мкс импульса: Цитата If the network is large or heavily loaded, flexible speed should be selected and the Write-1 low time (tLOW1) should be extended to more than 8 µs to allow the 1-Wire bus to completely discharge. Since a large or heavily loaded network needs more time to recharge, it is also recommended to delay sampling the bus for reading. A higher Data Sample Offset value (tDSO) will increase the voltage margin and also provide extra energy to the slave devices when generating a long series of Write-0 time slots. However, the total of tLOW1 + tDSO should not exceed 22 µs. Otherwise the slave device responding may have stopped pulling the bus low when transmitting a logic 0. Цитата(ARV @ Dec 8 2008, 13:38)  1821 вообще недоделок какой-то... он принципиально не стандартный, если сравнивать с остальными 1-wire... даже адреса не имеет... DS1821 имеет функциональность только термостата и термометра, но с ванварной шиной. Если со склерозом все в порядке, есть еще DS1621 с такой же функциональностью, но под SPI.
|
|
|
|
Сообщений в этой теме
neurox ATmega16 + DS18B20. Код на ассемблере не работает. Dec 6 2008, 04:24 oll Резистор подтягивающий 4,7К у Вас есть? Похоже так... Dec 6 2008, 04:59 domowoj Может поможет
http://radioded.ru/index.php?option=... Dec 6 2008, 06:00 Aesthete Animus 2neurox
Меня смущает Ваша функция _ds_rx_t_bytes, ... Dec 6 2008, 12:48 ARV Цитата(Aesthete Animus @ Dec 6 2008, 15:4... Dec 7 2008, 11:50  Aesthete Animus Цитата(ARV @ Dec 7 2008, 14:50) ни каких ... Dec 7 2008, 12:56   ARV Цитата(Aesthete Animus @ Dec 7 2008, 15:5... Dec 7 2008, 20:26    xemul Цитата(ARV @ Dec 7 2008, 23:26) хотите ве... Dec 7 2008, 21:19     ARV Цитата(xemul @ Dec 8 2008, 00:19) На стр.... Dec 8 2008, 06:16      xemul Цитата(ARV @ Dec 8 2008, 09:16) не ошибае... Dec 8 2008, 08:01    Aesthete Animus Цитата(ARV @ Dec 7 2008, 23:26) хотите ве... Dec 7 2008, 23:30    Т.Достоевский Цитата(ARV @ Dec 7 2008, 23:26) ...хотите... Dec 14 2008, 03:51 Deka А можно я просто выложу свой ассемблерный код обще... Dec 6 2008, 21:08 Aesthete Animus Ну если на то пошло, то вот
http://www.maxim-ic.c... Dec 7 2008, 02:53 neurox ЦитатаРезистор подтягивающий 4,7К у Вас есть? Похо... Dec 8 2008, 04:29 Aesthete Animus Цитата(ARV @ Dec 8 2008, 12:04) просмотре... Dec 8 2008, 10:30  ARV Цитата(Aesthete Animus @ Dec 8 2008, 13:3... Dec 8 2008, 10:38   Aesthete Animus Цитата(ARV @ Dec 8 2008, 13:38) 1821 вооб... Dec 8 2008, 11:16    ARV Цитата(Aesthete Animus @ Dec 8 2008, 14:1... Dec 8 2008, 11:34 ARV не надо увлекаться 1 мкс - я несколькими постами р... Dec 8 2008, 11:14 xemul Цитата(ARV @ Dec 8 2008, 14:14) что касае... Dec 8 2008, 11:44 Aesthete Animus Цитата(ARV @ Dec 8 2008, 14:14) и тем не ... Dec 8 2008, 12:06  ARV Цитата(Aesthete Animus @ Dec 8 2008, 15:0... Dec 8 2008, 12:42 _Pasha 1-wire!
Бляха-муха стока флейма Вам не стыдно?... Dec 8 2008, 11:49 xemul имхо, наиболее общая расталдычка на эту тему с вре... Dec 8 2008, 13:37 sonycman Интересно, а вот допустим, есть сеть из нескольких... Dec 8 2008, 15:17 Nekromant Извиняюсь, я может не все заметил в бурных прениях... Dec 9 2008, 15:31  ARV Цитата(Nekromant @ Dec 9 2008, 18:31) Изв... Dec 9 2008, 15:44 _Pasha Цитата(ARV @ Dec 8 2008, 16:42) вот так б... Dec 9 2008, 18:10 neurox Хм.. поставил внешний кварц на 10 MHz ничего не из... Dec 10 2008, 02:20 Александр Куличок Цитата(neurox @ Dec 10 2008, 04:20) видим... Dec 14 2008, 22:17  neurox Цитата(Александр Куличок @ Dec 15 2008, 06... Dec 15 2008, 11:35   _Pasha Цитата(neurox @ Dec 15 2008, 15:35) в про... Dec 15 2008, 11:43 neurox А вот когда я ставлю PORTA на вход, как изменяется... Dec 13 2008, 03:28 ARV Цитата(neurox @ Dec 13 2008, 06:28) А вот... Dec 13 2008, 06:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|