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

Jirka Mww jirka.mww na gmail.com
Pondělí Leden 29 14:41:01 CET 2024


Dobrý den,
zkoušel jsem vyseparovat jednotlivé bity různými způsoby, ale bezúspěšně.
Teď jsem ale dal povolení   přerušení sei(); hned na začátek té přerušovací
rutiny a ne až na konec a zdá se, že to začíná fungovat.
Asi  jsem tím přerušením blokoval nějaké funkce Arduina, i když nevím
jaké.....



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 14:34 odesílatel Martin Záruba <swz na volny.cz> napsal:

> Pokud se nemýlím, tak obě verze se liší jen použitím bitRead. Zkuste místo
> toho napsat posun TEST1 vpravo o R-1 + and 1
>
> Martin Záruba
>
> Dne 29.1.2024 v 14:07 Jirka Mww napsal(a):
>
> 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
>
>
>
> <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>
>
> ne 28. 1. 2024 v 20:49 odesílatel Jaroslav Buchta <
> jaroslav.buchta na hascomp.cz> napsal:
>
>> nebo sem poslat cast zdrojaku...
>> Dne 28.01.2024 v 20:09 Jirka Mww napsal(a):
>>
>> Tím to bohužel nebude, v současném stavu tam v hlavní smyčce dávám
>> konstantu a ani ta se celá neposle.Bude to nějaká blbost, asi to chce
>> pauzu...
>>
>> Dne ne 28. 1. 2024 19:03 uživatel Jaroslav Buchta <
>> jaroslav.buchta na hascomp.cz> napsal:
>>
>>> Data jsou sdilena v jednom pametovem prostoru, v tom by problem byt
>>> nemel. Tipnul bych, ze bude nejaky problem v synchronizaci hlavni smycky a
>>> data se prepisou znova driv, nez se odeslou?
>>> Dne 28.01.2024 v 19:00 Jirka Mww napsal(a):
>>>
>>> Dobrý večer,
>>>
>>> zase se tady trápím s Arduinem.  Potřebuji v přerušení od pinu 2 u
>>> Arduino Nano poslat ven dvanáct bitů.  Přerušení vyvolá vstup CS od
>>> nadřízeného stroje, pak jdou hodiny asi po 200  uS a na jejich sestupnou
>>> hranu potřebuji posílat ven data.  V podstatě mi to funguje, pokud ta data,
>>> co potřebuji poslat, vytvořím až v té přerušovací proceduře.  Nevím ale,
>>> jak tam dostat data, která vyrobím v hlavní smyčce. Deklaraci té proměnné ,
>>> co chci poslat, mám jako volatile unsigned integer , zkoušel jsem i
>>> volatile byte, deklaraci  mám v hlavním programu ,zkoušel jsem to
>>> deklarovat i v té přerušovací proceduře, ale nejsem úspěšný.  Ta data se
>>> pošlou jen jednou, a ještě ne celá. Pak to vypadá, že se ta data nějak
>>> smažou, nebo co. Posílá to už jen nuly.  Bohužel, ladící výpis tam nejde
>>> udělat.  Můžete mne prosím zase nějak nakopnout ?
>>>
>>> Zdravi
>>> Jirka Sloupenský  OK1MWW
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> 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/fc1fd8d4/attachment.htm>


Další informace o konferenci Hw-list