Re: Zase Arduino - jak dostat data do přerušení

Jirka Mww jirka.mww na gmail.com
Pondělí Leden 29 15:28:36 CET 2024


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>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

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
> 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/ca1819e7/attachment.htm>


Další informace o konferenci Hw-list