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

 
 
> 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

Сообщений в этой теме
- 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
- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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