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

Jirka Mww jirka.mww na gmail.com
Pondělí Leden 29 16:13:46 CET 2024


Je to simulace tohoto snímače

https://www.vk5dj.com/hh-12.html

je to pro kamaráda radioamatéra, který s tím má udělaný antenní rotátor ,
který má ale určité vůle v převodech , takže mu to při zastavení kmitá.
Cílem je číst ten snímač HH 12 ( to mi jde dobře) a do elektroniky
rotátoru, která je koupená a nedá se v ní nic programovat, posílat při
zastavení simulovaný údaj, který bude to kmitání potlačovat.
Úloha to je primárně jednoduchá, nedaří se mi ale úplně dobře chování toho
snímače arduinem simulovat.


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 16:04 odesílatel Jindrich Fucik <FULDA na seznam.cz> napsal:

> Hele, čtu to dobře, že to je SPI nebo synchroní sériák?
> Co tě nutí to dělat bit bankingem? Proč nepoužiješ SPI devic přímo v
> hardware procesoru?
>
> ---------- Původní e-mail ----------
> Od: Jirka Mww <jirka.mww na gmail.com>
> Komu: HW-news <hw-list na list.hw.cz>
> Datum: 29. 1. 2024 14:08:29
> Předmět: Re: Zase Arduino - jak dostat data do přerušení
>
> 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>
> <#m_4710967943847360956_-wm-DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> 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.cz <http://www.hw.cz>Hw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> 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 by www.HW.cz <http://www.hw.cz>Hw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> 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 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.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/225cf28b/attachment.htm>


Další informace o konferenci Hw-list