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

Jindrich Fucik fulda na seznam.cz
Pondělí Leden 29 19:54:56 CET 2024


OK, tak jsem to odhadl dobře, je to SSI -> Synchronous Serial Interface
Takže bych se úplně vykašlal na magii s přerušením. Prostě v mainu budu 
sledovat signál CS a pokud mi udělá low to high, tak resetnu port, abych 
se syncnul a pak do něj rovnou naperu první bajt. Nejsem si jistej jak 
AVRko, ale PIC má dva bajty buffer, takže bych tam na hulváta napral i 
druhej bajt a zase z vesela čekal na to, až CS udělá low to high. 
Všechno ostatní udělá hardware sám.
Datasheet:
https://look.ams-osram.com/m/1b628d2f3c20b9a4/original/AS5040-DS000374.pdf

Teď něco dělám s PIC16F18015. Za necelé euro obvod co má dva USARTy, 
takže ten druhej rovnou použiješ na čtení reality. Odhadovaná délka 
programu je max dvě stránky, z toho první bude konfigurační balast, 
kterej za tebe napíše MCC. Ale je to trochu nepopulární platforma.
https://www.tme.eu/cz/details/pic16f18015-i_sn/rodina-pic-8-bitu/microchip-technology/

Dne 29.01.2024 v 16:13 Jirka Mww napsal(a):
> Je to simulace tohoto snímače
> 
> https://www.vk5dj.com/hh-12.html <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 
> <mailto: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 <mailto:jirka.mww na gmail.com>>
>     Komu: HW-news <hw-list na list.hw.cz <mailto: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 <mailto: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
>                 <mailto: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 bywww.HW.cz  <http://www.hw.cz>
>                         Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>                         http://list.hw.cz/mailman/listinfo/hw-list  <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.cz <mailto:Hw-list na list.hw.cz>
>                     http://list.hw.cz/mailman/listinfo/hw-list
>                     <http://list.hw.cz/mailman/listinfo/hw-list>
> 
> 
>                 _______________________________________________
>                 HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.hw.cz>
>                 Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>                 http://list.hw.cz/mailman/listinfo/hw-list  <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.cz <mailto:Hw-list na list.hw.cz>
>             http://list.hw.cz/mailman/listinfo/hw-list
>             <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.cz <mailto:Hw-list na list.hw.cz>
>         http://list.hw.cz/mailman/listinfo/hw-list
>         <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.cz <mailto:Hw-list na list.hw.cz>
>     http://list.hw.cz/mailman/listinfo/hw-list
>     <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ší informace o konferenci Hw-list