|
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 9 2008, 15:31
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369

|
Извиняюсь, я может не все заметил в бурных прениях но попытаюсь попасть в струю: Может все таки попробовать написать подобный код, Но скажем на Си? тем более что библиотчека уже выложена выше в постах и попробовать сравнить результаты того что выдает датчик на асме и на Си? И кстати не работает-т.е мы не получаем ничего или не получаем то что надо? ведь это разные вещи
|
|
|
|
Сообщений в этой теме
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 ARV просмотрел 1-wire память, часы, АЦП, термометры - ... Dec 8 2008, 09:04 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 xemul Цитата(ARV @ Dec 8 2008, 12:04) просмотре... Dec 8 2008, 11:04 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 _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
|
|
|