1wire i avr gcc

Nov 30, 2005 10 Replies

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



U¿ytkownik "AzaZeL" <AzaZeL snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:dml6rg$ilh$ snipped-for-privacy@bgnet.pl...

Hmm, ale gdzie masz problem? Wszystkie czasy odpowiednie ?

Pozdrawiam £ukasz

U¿ytkownik "AzaZeL" <AzaZeL snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:dml6rg$ilh$ snipped-for-privacy@bgnet.pl...

Czek dysa³t men: http://www.hpinfotech.ro/html/download.htmNie 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

nie wiem :(

rece mi juz opadaja

AzaZeL

U¿ytkownik "AzaZeL" <AzaZeL snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:dml8um$qip$ snipped-for-privacy@bgnet.pl...

To podejrzyj sobie, jak oni to zrobili i przepisz na gcc/porównaj z w³asnym kodem.

Fishman

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).

U¿ytkownik "AzaZeL" <AzaZeL snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:dml916$qnl$ snipped-for-privacy@bgnet.pl...

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

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() <>>>>>>>>>>>>> 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

AzaZeL <AzaZeL snipped-for-privacy@poczta.onet.pl> napisał(a):

A w którym to miejscu łaskawco , sprawdzasz "presence pulse " ??? void onewire_write_bit(unsigned char bit)

Nad powyższym , też jeszcze popracuj ;)

Pzdr Piotrek

PS Jak miło się krytykuje ;-)

Celowo niesprawdzalem presence pulse bo mi to potrzebne nie jest

jak mi³o sie odpowiada

AzaZeL

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required