avr-gcc i 1wire - ponownie

Loading thread data ...

Jaki masz zegar? Wnioskuje, ze 8MHz? Moze lepiej skorzystac z delay z biblioteki standardowej gcc?

^^^^^^^^^^^^^ A tu chyba ma byc DDR, a nie port. Bo tak wystawiasz silne 0 na magistrale i nie dajesz mozliwosci wymuszenia stanu przez slave 1-wire.

Troche za krotko, bezpieczniej bedzie poczekac z 15us, bo 1-wire co prawda szybciej zwykle wystawia wartosc, ale nie zapominaj, ze szyna pracuje z pull-upem i potrzebuje troche czasu na przejscie z 0 do 1.

Bezpieczniej bedzie czekac az pojawi sie ponownie "1". To ma tez ta kozysc, ze mozesz skrocic czas transmisji bitu "1", co ci przyspieszy cala transmisje po 1-wire.

To nie blad, ale mozna zastosowac maly myk. Wpisujac 0 do port, wystawianie 0 lub 1 na 1-wire bedzie polegalo po prostu na przelaczaniu tylko DDR. Czyli DDR 1->out, na wyjsciu masz 0, jesli chcesz 1 to DDR=0 i szyna jest w stanie "1" utrzymywanym przez zewnetrzny pull=up.

Tu musisz poczekac az szyna po 0 wroci do 1, inaczej pierwsze transmisje po 1-wire moga trafic jeszcze na presence pulse.

Dodaj male opoznienie. Bo write_bit konczy sie szybko i jesli wystawia "0" to szyna przed nastepnym bitem moze nie zdazyc wrocic do "1".

Tutaj analogicznie, read_bit nie czekasz az szyna wroci do "1" i jesli ds dluzej trzyma niz 80us szyne to masz kaszane.

Reply to
T.M.F.

Jakies info o licencji na jakiej to udostepniasz dodaj, bo takie czasy, ze strach cos sciagac z netu :) Dobra robota, tylko dodaj jeszcze SearchROM i MatchROM (to drugie latwe do zaimplementowania). Bo bez tego trudno z tego korzystac. No i jesli chce ci sie bawic przerob te wymuszanie stanow tak, zeby wystarczylo zmieniac DDR, bez PORT, zawsze to pare bajtow mozna zaoszczedzic. Ale gratuluje roboty.

Reply to
T.M.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.