nesnasim 1-wire :-)
Martin Malý
martin.maly@gmail.com
Sobota Březen 26 07:52:15 CET 2005
Predpokladam, ze v read_temperature mate nasledujici sekvenci:
1. Vyslat pozadavek na mereni
2. Cekat na vysledek
3. Precist namerena data
Pokud ano, tak je riziko kolize opravdu velke. Zkuste to trochu
prekopat - vyhodit tu cekaci sekvenci a udelat read_temperature jako
precteni dat + vyslani pozadavku na mereni. Takova rutina bude trvat
vyznamne kratsi dobu a pokud behem ni zakazete preruseni od seriaku,
tak se nic moc tragickeho asi nestane...
Mozna jsem ale nepochopil v cem presne je problem s read_temperature.
Martin Maly
On Sat, 26 Mar 2005 07:11:11 +0100, Prichy <prichy@volny.cz> wrote:
> Zdravim.
>
> dotaz se tyce "me" meteostanice(89C52). Mam ji osazenou 18B20-kou
> komunikujici 1-wire .
>
> inicializace preruseni:
>
> TR0 = 1; // start timer 0
> ET0 = 1; // enable timer 0 interrupt
> ES = 1; // enable serial interrupt
> PS = 0; // set serial interrupts to
> hi priority
> EA = 1; // global interrupt enable
> TR1 = 1; // start timer 1
> inkrementuje promennou citac - > generuje 1 s pro hodiny
> TI = 0; // nastavuji pri potrebe vysilat
>
> v hlavni smycce
>
> tepl= Read_Temperature(); // cte teplotu z dallasu
>
> PC posila dotazy do zarizeni kazdou sekundu, problem je, kdyz dojde
> preruseni na serial
> pri konani casove narocne Read_Temperature() pak komunikace s Dallasem
> probehne spatne
> (volana pri kazdem pruchodu hl. smyckou).
>
> Napadaji me dve reseni:
>
> 1) zastavit na dobu konani Read_Temperature() preruseni seriaku
> (pokud by selhala komunikace PC - Hardware opakovat)
> 2)obnovovat promennou tepl v preruseni casovace, pak by ovsem
> muselo mit vetsi prioritu (take by se PC a hardware nemusely vzdy
> domluvit)
>
> Jak resite podobne problemy? (mozna je vic reseni, jeste nemam zahraty
> mozek :-D )
>
> Prichy
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list