Re: Zase Arduino - jak dostat data do přerušení
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Pondělí Leden 29 16:18:17 CET 2024
Arduino reseni, sry nedalo mi to ;-)
Nevime proc to nefungovalo, nevime, pro neco pomohlo ale je to hotovy...
Ja uz po zkusenostech vim, ze se takovy pristu drive nebo pozdeji na
100% vymsti.
Kazdopadne taky nemuzu prijit jen ctenim zdrojaku na to, kde je problem,
ze to blokuje delsi dobu preruseni by asi v zakladu vadit nemelo,
protoze snad knihovna pouziva jen jedno dalsi od casovace, ale nevim, co
dela zbytek programu. Chtelo by to zkouset ruzne veci. A jeste by se
program nemel dlouho zdrzovat v preruseni, zvlast pokud je to atmega a
nema prioritni system.
Dne 29.01.2024 v 15:28 Jirka Mww napsal(a):
> Díky za připomínku, tohle jsem už opravil, zdá se, že to povolení
> přerušení to vyřešilo, díky všem za pomoc.
>
> Zdravi
> Jirka Sloupenský OK1MWW
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
> Neobsahuje žádné viry.www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>
>
>
> po 29. 1. 2024 v 15:09 odesílatel Miroslav Šinko <sinkomiro na gmail.com>
> napsal:
>
> Arduino kniznice nepoznam, a teda mozno toto nesuvisi s problemom..
>
> volatile byte K;
> ..
> }while (K>= 0);
>
> Podmienka je vzdy platna, myslim, ze sa vam to ostane cyklit.
>
> miro
>
> On 29.01.2024 14:07, Jirka Mww wrote:
> > Dobrý den,
> >
> > tak jsem se k tomu zase dostal, dole je zdrojovy kod té přerušovací
> > rutiny. K tomu jen pár vysvětlení :
> > Celé to má sloužit k imitaci snímače absolutního úhlu , je to
> spouštěné
> > sestupnou hranou CS ( žlutá) , CLKEXT ( fialová) , jsou hodiny
> > generované nadřízeným systémem, DOEXT je výstup s daty, měla by se
> > přenést proměnná TEST1.
> > V hlavní smyčce programu je aktuálně jen delay (100), jinak se
> tam nic
> > nedělá
> > Proměnná TEST1 se v přerušovací rutině opakovaně plní 0xAAA, takže
> > riziko, že ji nějak přepíše něco v hlavní smyčce je snad nulové
> > Když ten řádek, kde se zapisuje , tj.
> > digitalWrite(DOEXT,bitRead(TEST1,R)); nahradím tím, co je v
> komentáři (
> > XREF= !XREF atd...), tj. jen reverzací proměnné XREF
> > tak to dává data dle obrázku v příloze - žlutá je CS, od toho je to
> > přerušení, fialová jsou hodiny - oboje generované nadřízeným
> systémem
> > Modrá jsou data - tak nějak bych si to představoval , že by to
> mělo vypadat
> > Na všech třech drátech mám osciloskop - viz přiložený obrázek
> > Když to pustím po resetu s tím
> digitalWrite(DOEXT,bitRead(TEST1,R)); tak
> > mi na osciloskopu nějaká data jednou probliknou, ani nejsou
> celá, a pak
> > ten výstup DOEXT ( modrý ) zůstane trvale v nule.
> >
> >
> >
> > /* RUTINA PRo VYSTUP DAT */
> > void DataOut() {
> > // cli(); // disable global interrupts
> > volatile byte K; // pocitadlo pro hodiny
> > volatile byte R; // pocitadlo pro vystup bitu
> > volatile unsigned int TEST1 = 0xAAA; // jen pro test
> > volatile byte XREF = 0; // pro vysledek
> > K= 10;
> > R= 10;
> > XREF = 0;
> > do { digitalRead(CLKEXT);} while (digitalRead(CLKEXT) ==
> HIGH);// ceka
> > na sest. hranu hodin
> > delayMicroseconds(30);
> > do {
> > do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == LOW);//
> ceka na
> > vzestupnou hranu, aby zapsal data
> > delayMicroseconds(3);
> > digitalWrite (DOEXT,bitRead(TEST1,R)); // tady je problem
> > // XREF = !XREF; // tohle dává obrázek na osciloskopu v příloze
> > // if ( XREF > 0) {digitalWrite (DOEXT,0);} else {
> digitalWrite
> > (DOEXT,1);}
> > delayMicroseconds(30);
> > K= K-1;
> > R = R-1;
> > do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) ==
> HIGH); // ceka
> > na sestupnou hranu kdy Master cte data
> > delayMicroseconds(30);
> > } while (K>= 0);
> > do {digitalRead(CLKEXT);} while (digitalRead(CLKEXT) == LOW); //
> konecny
> > prechod do jednicky
> > sei();// enable interrupts
> > }// konec preruseni
> >
> > Zdravi
> > Jirka Sloupenský OK1MWW
> >
> >
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz <http://www.HW.cz>
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240129/c774816b/attachment.htm>
Další informace o konferenci Hw-list