Gotowe podprogramy do obsługi 1-Wire i DS1990 w AVR GCC - potrzebuję pomocy!
1wire i avr gcc
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: 1wire i avr gcc
Date: Wed, 30 Nov 2005 22:50:42 +0100
Witam
walcze juz dzisiaj cały dzien z 1wire i DS1990
i niestety porażka
niemógłby mi ktos dac podprogramów obsługujących 1wire?
AzaZeL
From: "Ukaniu" <L99ukaszWYWALTO_at_nospam_gazeta.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:15:37 +0100
Użytkownik "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl> napisał w wiadomości
news:dml6rg$ilh$1_at_nospam_bgnet.pl...
Witam
walcze juz dzisiaj cały dzien z 1wire i DS1990
i niestety porażka
niemógłby mi ktos dac podprogramów obsługujących 1wire?
Hmm, ale gdzie masz problem?
Wszystkie czasy odpowiednie ?
Pozdrawiam Łukasz
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:27:42 +0100
Hmm, ale gdzie masz problem?
nie wiem :(
rece mi juz opadaja
AzaZeL
From: "Ukaniu" <L99ukaszWYWALTO_at_nospam_gazeta.pl>
Subject: Re: 1wire i avr gcc
Date: Thu, 1 Dec 2005 00:27:04 +0100
Użytkownik "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl> napisał w wiadomości
news:dml916$qnl$1_at_nospam_bgnet.pl...
Hmm, ale gdzie masz problem?
nie wiem :(
rece mi juz opadaja
Zapodaj w pętli jakąś komendę read cośtam, i przylukaj oscyloskopem co łazi
po magistrali, czy tajmingi są dobre, czy w ogóle odpowiada, czy nie
pomyliłeś kolejności bitów. Wszystko wyjdzie na ekranie. Dobrze mieć oscyl z
2 podstawami, albo wyprowadzić dodatkowy sygnał wyzwalania z procka
synchronizujący początek transmisji.
Pozdrawiam Łukasz
From: "Fishman" <domgor_at_nospam_wytnij.to.poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:18:49 +0100
Użytkownik "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl> napisał w wiadomości
news:dml6rg$ilh$1_at_nospam_bgnet.pl...
Witam
walcze juz dzisiaj cały dzien z 1wire i DS1990
i niestety porażka
niemógłby mi ktos dac podprogramów obsługujących 1wire?
Czek dysałt men: http://www.hpinfotech.ro/html/download.htm
Nie dość, że CVAVR ma biblioteki do obsługi 1Wire, to jeszcze masz w
downloadzie przykład z DS1990 właśnie. Nawet, jeżeli nie będziesz tego
używać, to zawsze możesz podpatrzeć, jak to jest zrobione.
Fishman
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:26:32 +0100
ale ja chce na gcc
AzaZeL
From: "Fishman" <domgor_at_nospam_wytnij.to.poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:34:23 +0100
Użytkownik "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl> napisał w wiadomości
news:dml8um$qip$1_at_nospam_bgnet.pl...
ale ja chce na gcc
To podejrzyj sobie, jak oni to zrobili i przepisz na gcc/porównaj z własnym
kodem.
Fishman
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: 1wire i avr gcc
Date: Wed, 30 Nov 2005 23:49:20 +0100
Fishman wrote:
niemógłby mi ktos dac podprogramów obsługujących 1wire?
Czek dysałt men: http://www.hpinfotech.ro/html/download.htm
Nie dość, że CVAVR ma biblioteki do obsługi 1Wire, to jeszcze masz w
downloadzie przykład z DS1990 właśnie. Nawet, jeżeli nie będziesz tego
używać, to zawsze możesz podpatrzeć, jak to jest zrobione.
BTW: A właśnie, jakiś czas temu ktoś tu pisał o pomyśle oprogramowania
1Wire AFAIR w przerwaniach, bez pętli czekającej aktywnie kwanty czasu.
I jak się zakończył tamten projekt? Chętnie bym się zapoznał z kodem
źródłowym (i pewnie nie tylko ja).
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Sun, 4 Dec 2005 19:42:58 +0100
Napisalem sobie podpogramy do 1 wire :)
szkoda ze dopiero teraz ale niebylo mnie jakis czas
okazało sie ze opóźnienia były nie takie jak chciałem
napisałem w symulatorze swoje i zadziałało bez gadania :)
jestem z siebie dumny :)
oto podprogramy dla kwarcu 8 Mhz i ATmega32
//>>>>>>>>>>>>>> 1 - wire <<<<<<<<<<<<<<<<<<<<<
void onewire_reset(void)
{
DDRD |= 1<<w1;
PORTD &= ~(1<<w1); //wyzerowanie 1w
czekaj_500us();
PORTD |= 1<<w1;
czekaj_500us();
}
void onewire_write_bit(unsigned char bit)
{
DDRD |= 1<<w1;
PORTD &= ~(1<<w1); //wyzerowanie 1w
czekaj_3us();
if ((bit & 0x01) == 1)
PORTD |= 1<<w1;
czekaj_70us();
PORTD |= 1<<w1;
}
unsigned char onewire_read_bit(void)
{
unsigned char bit = 0;
DDRD |= 1<<w1;
PORTD |= 1<<w1;
czekaj_3us();
PORTD &= ~(1<<w1);
czekaj_10us();
DDRD &= ~(1<<w1);
PORTD &= ~(1<<w1);
if(bit_is_set(PIND, w1))
bit = 1 ;
if(bit_is_clear(PIND, w1))
bit = 0;
czekaj_60us();
return bit;
}
void onewire_write(unsigned char byte)
{
unsigned char i = 0;
for(i = 0; i < 8; i++)
{
onewire_write_bit(byte >> i);
czekaj_70us();
}
czekaj_70us();
}
unsigned char onewire_read(void)
{
unsigned char byte = 0;
unsigned char i = 0;
for(i = 0; i < 8; i++)
{
byte |= (onewire_read_bit() << i);
czekaj_70us();
}
czekaj_70us();
return byte;
}
//>>>>>>>>>>>>>> koniec 1 - wire <<<<<<<<<<<<<<<<<<<<<
void czekaj_3us(void)
{
}
void czekaj_10us(void)
{
unsigned char i;
for(i=0;i<3;i++);
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void czekaj_20us(void)
{
unsigned char i;
for(i=0;i<10;i++);
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void czekaj_60us(void)
{
unsigned char i;
for(i=0;i<40;i++);
}
void czekaj_70us(void)
{
unsigned char i;
for(i=0;i<47;i++);
}
void czekaj_500us(void)
{
unsigned char i;
for(i=0;i<210;i++);
for(i=0;i<149;i++);
}
jak sie komus przyda to niech sie nie meczy jak Ja :)
Pozdrawiam
AzaZeL
From: "Piotrek Sz." <zumek_at_nospam_NOSPAM.gazeta.pl>
Subject: Re: 1wire i avr gcc
Date: Sun, 4 Dec 2005 20:12:52 +0000 (UTC)
AzaZeL <AzaZeL_B_at_nospam_poczta.onet.pl> napisał(a):
Napisalem sobie podpogramy do 1 wire :)
szkoda ze dopiero teraz ale niebylo mnie jakis czas
okazało sie ze opóźnienia były nie takie jak chciałem
napisałem w symulatorze swoje i zadziałało bez gadania :)
jestem z siebie dumny :)
oto podprogramy dla kwarcu 8 Mhz i ATmega32
//>>>>>>>>>>>>>> 1 - wire <<<<<<<<<<<<<<<<<<<<<
void onewire_reset(void)
{
DDRD |= 1<<w1;
PORTD &= ~(1<<w1); //wyzerowanie 1w
czekaj_500us();
PORTD |= 1<<w1;
czekaj_500us();
}
A w którym to miejscu łaskawco , sprawdzasz "presence pulse " ???
void onewire_write_bit(unsigned char bit)
{
DDRD |= 1<<w1;
PORTD &= ~(1<<w1); //wyzerowanie 1w
czekaj_3us();
if ((bit & 0x01) == 1)
PORTD |= 1<<w1;
czekaj_70us();
PORTD |= 1<<w1;
}
Nad powyższym , też jeszcze popracuj ;)
Pzdr
Piotrek
PS
Jak miło się krytykuje ;-)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: "AzaZeL" <AzaZeL_B_at_nospam_poczta.onet.pl>
Subject: Re: 1wire i avr gcc
Date: Sun, 4 Dec 2005 21:57:11 +0100
A w którym to miejscu łaskawco , sprawdzasz "presence pulse " ???
Nad powyższym , też jeszcze popracuj ;)
Jak miło się krytykuje ;-)
Celowo niesprawdzalem presence pulse bo mi to potrzebne nie jest
jak miło sie odpowiada
AzaZeL