DS18B20 na AVR



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "WJ" <wj78[nospam]_at_nospam_wp.pl>
Subject: DS18B20 na AVR
Date: Thu, 23 Sep 2004 21:55:13 +0200


Witam.
Od 2 dni męczę się z obsługą czujnika DS18B20 na procesorze ATMega8. Czujnik
jest podpięty do portu PB0 (również jest z niego zasilany - DQ przez
rezystor 4,7k podpięty do Vcc, a VDD zwarty z masą). Próbowałem skorzystać z
kodu z wątku
http://www.google.pl/groups?q=ds18b20+i+at89s8252+poszukiwany+kod&hl=pl&lr=&ie=UTF-8&newwindow=1&selm=cibprm%24n2%241%40nemesis.news.tpi.pl&rnum=1 ,
ale po konwersji ciągle dostaję wartość 5 (bez konwersji 0, czyli nic nie
odczytuje). Czy ktoś mogłby mnie wspomóc działającym kodem w C dla AVR?
Byłbym zobowiązany. Z góry dziękuję za pomoc! Pozdrawiam

--
WJ
wj78[nospam]_at_nospam_.wp.pl

PS. Korzystam z wewnętrzego oscylatora. Na razie ustawiony fabrycznie na
1MHz



========
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: mlodedrwale <mlodedrwale_at_nospam_interia.pl>
Subject: Re: DS18B20 na AVR
Date: Thu, 23 Sep 2004 23:26:54 +0200


WJ wrote:

Byłbym zobowiązany. Z góry dziękuję za pomoc! Pozdrawiam




#include <avr/io.h>
#include <avr/delay.h>
#include "lcd.h"

#define OWPORT PORTB
#define OWPIN 0
#define OWPININ PINB
#define OWDDR DDRB
#define OWIN 1 // 2^OWPIN

#define delay_us(x) delay_loop2(x*2)
#define ow_lo() sbi(OWDDR, OWPIN)
#define ow_hi() cbi(OWDDR, OWPIN)

uint8_t ow_reset(void){
uint8_t a;
ow_lo();
delay_us(480);
ow_hi();
delay_us(70);
a = inp(OWPININ) & OWIN; // 0 - obecny, else - nieobecny
delay_us(410);
return a;
}

void ow_wrbit(uint8_t bit){
ow_lo();
if(bit == 0){
delay_us(60);
ow_hi();
delay_us(10);
}
else {
delay_us(6);
ow_hi();
delay_us(64);
}

}

uint8_t ow_rdbit(void){
uint8_t a;
ow_lo();
delay_us(6);
ow_hi();
delay_us(9);
a = inp(OWPININ) & OWIN; //0 - 0, else -1
delay_us(55);
return a;
}

uint8_t ow_rdbyte(void){
uint8_t a, b;
a = 0;
for(b = 0; b <8; b++){
a >>= 1;
if (ow_rdbit()) a += 128;
}
return a;
}

void ow_wrbyte(uint8_t data){
uint8_t a;
for(a = 0; a < 8; a++){
ow_wrbit(data & 1);
data >>= 1;
}
}

void lcd_putuint8(uint8_t a){
uint8_t b;
b = a / 100;
if (b) lcd_putc(b + 0x30);
a -= b * 100;
b = a / 10;
lcd_putc(b + 0x30);
a -= b * 10;
lcd_putc(a + 0x30);
}

void lcd_putuint16(uint16_t a){
uint8_t b;
b = a / 10000;
// lcd_putc(b + 0x30);
a -= b * 10000;
b = a / 1000;
lcd_putc(b + 0x30);
a -= b * 1000;
b = a / 100;
lcd_putc(b + 0x30);
a -= b * 100;
b = a;
lcd_putuint8(b);
}


int main(void){
uint8_t a, b, c;
uint16_t e;

lcd_init( LCD_DISP_ON);
cbi(OWPORT, OWPIN);
ow_hi();
for(;;){
ow_reset();
ow_wrbyte(0xCC); //SKIP ROM
ow_wrbyte(0x44); //CONVERT T
for(a = 1; a <100; a++){
delay_us(10000);
}
ow_reset();
ow_wrbyte(0xCC); //SKIP ROM
ow_wrbyte(0xBE); //READ SCRATCHPAD
a = ow_rdbyte();
b = ow_rdbyte();
c = a & (0x0F); // wartości dziesiętne (po przecinku)
a >>= 4;
b <<= 4;
a = a | b;
e = 625 * c;
lcd_clrscr();
lcd_home();
lcd_putuint8(a);
lcd_puts(",");
lcd_putuint16(e);
}
return 0;
}


kod dla avr-gcc
--
> WJ
> wj78[nospam]_at_nospam_.wp.pl
>
> PS. Korzystam z wewnętrzego oscylatora. Na razie ustawiony fabrycznie na
> 1MHz
>
>
ustaw na 8


--
-=GumibaR=-

Co robi? by?y prezydent na hubie dc?
www.mlodedrwale.neostrada.pl/slawni.html

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "WJ" <wj78[nospam]_at_nospam_wp.pl>
Subject: Re: DS18B20 na AVR
Date: Sat, 25 Sep 2004 10:58:59 +0200


PS. Korzystam z wewnętrzego oscylatora. Na razie ustawiony fabrycznie na
1MHz

ustaw na 8

Już jest 8MHz ;)) Dzięki za kod. Niestety dalej nie działa. Stawiam na
uszkodzenie czujnika (z Allegro). Wczoraj ktoś mi powiedział, że wystarczy
pomylić nóżki przy podłączeniu i czujnik już jest do wymiany. Naprawdę jest
taki delikatny? Mój jest oczywiście z całą pewnością podpięty tak jak
trzeba. Mam jeszcze jedno pytanko: czujnik mam podpięty 2-przewodowo, a
jakie korzyści daje podłączenie go trzema przewodami? To, że czujnik działa
wtedy na dłuższym przewodzie, to wiem, ale są jeszcze inne korzyści z
takiego podłączenia? Pozdrawiam

--
WJ



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!www.wizzard.one.pl!new

Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: DS18B20 na AVR
Date: Sat, 25 Sep 2004 16:17:01 +0200


Już jest 8MHz ;)) Dzięki za kod. Niestety dalej nie działa. Stawiam na
uszkodzenie czujnika (z Allegro). Wczoraj ktoś mi powiedział, że wystarczy
pomylić nóżki przy podłączeniu i czujnik już jest do wymiany. Naprawdę jest

Jesli podlaczysz odwrotnie zasilanie to tak.

taki delikatny? Mój jest oczywiście z całą pewnością podpięty tak jak
trzeba. Mam jeszcze jedno pytanko: czujnik mam podpięty 2-przewodowo, a
jakie korzyści daje podłączenie go trzema przewodami? To, że czujnik działa
wtedy na dłuższym przewodzie, to wiem, ale są jeszcze inne korzyści z
takiego podłączenia? Pozdrawiam

Upraszcza sterowanie czujnikiem - nie musisz dawac strong pull-up na
czas konwersji, a druga zaleta - umozliwia odczytywanie temperatur >85
stopni.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?=22Przemcio_=AF=2E=22?= <przemcio_at_nospam_WYTNIJTOonet.pl>
Subject: Re: DS18B20 na AVR
Date: Thu, 23 Sep 2004 23:52:12 +0200


WJ napisał(a):

Witam.
Od 2 dni męczę się z obsługą czujnika DS18B20 na procesorze ATMega8. Czujnik
jest podpięty do portu PB0 (również jest z niego zasilany - DQ przez
rezystor 4,7k podpięty do Vcc, a VDD zwarty z masą). Próbowałem skorzystać z
kodu z wątku
http://www.google.pl/groups?q=ds18b20+i+at89s8252+poszukiwany+kod&hl=pl&lr=&ie=UTF-8&newwindow=1&selm=cibprm%24n2%241%40nemesis.news.tpi.pl&rnum=1 ,
ale po konwersji ciągle dostaję wartość 5 (bez konwersji 0, czyli nic nie
odczytuje). Czy ktoś mogłby mnie wspomóc działającym kodem w C dla AVR?
Byłbym zobowiązany. Z góry dziękuję za pomoc! Pozdrawiam


nie wiem czy to ma znaczenie, bo na razie za bardzo nie mam kiedy
sprawdzic kodu, ale to jest dla 51 kod, a nie dla AVR - przeciez
masz podana wersje procka... moze sie roznic czyms...

ale jak napisalem - moge byc w wielkim bledzie... nie musi miec to
znaczenia...

--
Pozdrawiam - Przemcio Ż.
http://www.svpl.info - Savoir-Vivre w sieci...
http://www.nasza.behende.pl - strona Nasza:)))
- MY - FORUM - GALERIA - TY -
gg: 1156769, tlen: belmotybe

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "WJ" <wj78[nospam]_at_nospam_wp.pl>
Subject: Re: DS18B20 na AVR
Date: Sat, 25 Sep 2004 11:11:42 +0200


nie wiem czy to ma znaczenie, bo na razie za bardzo nie mam kiedy
sprawdzic kodu, ale to jest dla 51 kod, a nie dla AVR - przeciez
masz podana wersje procka... moze sie roznic czyms...

Kod w C ma to do siebie, że jest "przenośny" między różnymi platformami
sprzętowymi, więc to powinno działać. Co do procesora, to wykorzystuję
bibliotekę <iom8v.h>. Pozdrawiam

--
WJ



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!www.wizzard.one.pl!new

Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: DS18B20 na AVR
Date: Sat, 25 Sep 2004 16:18:18 +0200


WJ wrote:

nie wiem czy to ma znaczenie, bo na razie za bardzo nie mam kiedy
sprawdzic kodu, ale to jest dla 51 kod, a nie dla AVR - przeciez
masz podana wersje procka... moze sie roznic czyms...


Kod w C ma to do siebie, że jest "przenośny" między różnymi platformami
sprzętowymi, więc to powinno działać. Co do procesora, to wykorzystuję
bibliotekę <iom8v.h>. Pozdrawiam

Szyna 1-wire ma dosys duze wymagania jesli chodzi o timingi. Dlatego kod
'51 i AVR mimo, ze w C niekoniecznie musi byc przenoscny. Ale to zalezy
w duzej mierze od tego jak napisana jest biblioteka. Dlatego ja wole
assembler ;P



--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai