реклама на сайте
подробности

 
 
> ATmega16 + DS18B20. Код на ассемблере не работает.
neurox
сообщение Dec 6 2008, 04:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Dec 8 2008, 11:14
Сообщение #2


Профессионал
*****

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



не надо увлекаться 1 мкс - я несколькими постами ранее согласился с вами.

что касается "подстройки под линию" - вы меня критиковали на счет подстройки софта ради шнурка - а тут даже в микросхемке предусмотрена подстройка...

и тем не менее, как следует понимать ситуацию с 22 мкс - если линия нагруженная. как это вяжется с декларируемыми везде и всюду 15 мкс?

наконец, можете указать на документ, где написано, что при наличии ноги VCC девайс не генерирует PRESENCE при подаче питания? если iButton и 1-Wire есть суть одно и то же (по крайней мере отдельного описания "стандарта" для 1-Wire я не нашел), то в стандарте такого упоминания нет.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Dec 8 2008, 12:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(ARV @ Dec 8 2008, 14:14) *
и тем не менее, как следует понимать ситуацию с 22 мкс - если линия нагруженная. как это вяжется с декларируемыми везде и всюду 15 мкс?

Ну где везде и всюду?

http://pdfserv.maxim-ic.com/en/an/AN126.pdf
A - минимум 5, рекомендовано 6, максимум 15
E - минимум 5, рекомендовано 9, максимум 12

Тогда получаем для MasterSample (A+E):
минимум 10, рекоммендовано 15, максимум 27

22мкс вполне укладываются в этот интервал

Цитата(_Pasha @ Dec 8 2008, 14:49) *
Берем датаshit ставим средние времена и оно работает.


Неее... я лучше возьму датаsheet smile.gif
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 8 2008, 12:42
Сообщение #4


Профессионал
*****

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



Цитата(Aesthete Animus @ Dec 8 2008, 15:06) *
Неее... я лучше возьму датаsheet smile.gif
вот так берешь один даташит, второй третий - всюду читаешь о 15 мкс - делаешь вывод, что это норма. потом выясняется, что на самом деле все не так... sad.gif
спасибо за указания на документацию. только вот кто поручится, что спустя некоторое время не выснится, что есть еще какой-то документ, переворачивающий все с ног на голову...

P.S. в "правильную статью" внес коррективы smile.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - xemul   Цитата(ARV @ Dec 8 2008, 14:14) что касае...   Dec 8 2008, 11:44
- - _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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 18:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016