Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Extern├ę preru┼íenie

Extern├ę preru┼íenie

V┼íetko ─Źo sa t├Żka mikropo─Ź├şta─Źov + Sekcia Arduino

Moderátori: psichac, Moderátori

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 21 J├║l 2016, 22:54

Principi├ílne to nie je vymyslen├ę dobre. Len na ├║vod - m├í┼í premenn├║ znak zadefinovan├║ ako volatile? Ak nie to je prv├Ż pr├║ser. Ak ner├ítam to ├║plne od veci pomenovanie. V tej premennej ┼żiadny znak nes├şdli.

Teraz k tomu n├ípadu meni┼ą v preru┼íen├ş iba pr├şznak a stav ─Źasova─Źa ─Ź├şta┼ą a┼ż v hlavnom programe. Tento n├ípad nie je v├┤bec dobr├Ż. Ty predsa chce┼í ─Źo najpresnej┼íie zmera┼ą ─Źas medzi t├Żmi dvomi preru┼íeniami. Len┼że ak si len nastav├ş┼í pr├şznak tak v vy─Ź├ştaniu ─Źasova─Źa m├┤┼że d├┤js┼ą bohviekedy. V hlavnej slu─Źke toti┼ż rob├ş┼í ─Źasovo n├íro─Źn├ę veci ako v├Żpo─Źet na double (alebo u┼ż mo┼żno float) a potom p├şsanie po displeji. Tak┼że kedy sa ten k├│d dostane k vy─Ź├ştaniu ─Źasova─Źa je ├║pln├í n├íhoda.

Posledn├í vlna kritiky bude k tomu n├ípadu sp├║┼í┼ąa┼ą a zastavova┼ą ─Źasova─Ź. To je tie┼ż zl├Ż n├ípad.

Ako sa tak├ęto veci robia?

1. Nejak├ęmu ─Źasova─Źu sa nastav├ş vhodne preddeli─Ź a nech├í sa po─Ź├şta┼ą st├íle.
2. Ak je to trochu lep┼í├ş procesor tak m├í niektor├Ż ─Źasova─Ź funkciu capture. To je tak├í funkcia ┼że na nejak├║ hranu, nejak├ęho vstupu sa obsah ─Źasova─Źa odchyt├ş do nejak├Żch registrov. Z├írove┼ł sa zvykne aktivova┼ą preru┼íenie ┼że toto nastalo.
3. Ak tak├Ż dobr├Ż procesor nem├í┼í (─Źo pochybujem) tak sa toto odchytenie rob├ş v obsluhe preru┼íenia od extern├ęho vstupu, samozrejme na nejak├║ hranu.
4. Ako sa zist├ş ─Źas medzi impulzami? Ve─żmi ─żahko. Treba na to iba ma┼ą zapam├Ątan├║ hodnotu ─Ź├şta─Źa pri predch├ídzaj├║com preru┼íen├ş. Doba sa vypo─Ź├şta ako rozdiel medzi aktu├ílnou hodnotou teraz a v predch├ídzaj├║com preru┼íen├ş. Netreba sa b├í┼ą ani toho ┼że ─Źasova─Ź prete─Źie. Celo─Ź├şseln├í aritmetika si s t├Żm porad├ş.
5. Treba sa b├í┼ą iba toho ┼że ─Źasova┼ą prete─Źie viackr├ít ne┼ż raz. To sa d├í minimalizova┼ą pomocou vhodn├ęho nastavenia preddeli─Źa. Samozrejme ┼że sa to ale stane ak ┼żiadny impulz nepr├şde. Tak┼że to treba ma┼ą vyrie┼íen├ę aj programom.

Na z├íver len dod├ím ┼że to nie je jednoduch├ę ak sa nevie ako pracuje CPU, ako pracuj├║ preru┼íenia. Ako pracuj├║ ─Źasova─Źe. Toto v┼íetko vy┼żaduje dos┼ą hlbok├ę znalosti z ─Ź├şslicovej techniky a samozrejme programovania v C.

Ked┼że neholdujem PIC tak je to odo m┼ła v┼íetko iba v abstraktnej rovine, ktor├í plat├ş na ka┼żd├║ architekt├║ru.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 12:13

perteple diky.

zaujima ma ┼że ─Źi sa v tych malych 8-bit procakov, mo┼żu navzajom ovplyvnova┼ą preru┼íenia.
Preto┼że ak pou┼żivam preru┼íenie na vstupe IOC a pou┼żivam aj preru┼íenie na timer2 100mS , tak ten timer 2 tych 100mS ned├íva ale v┼żdy to nejak pobehuje v┼íelijako, raz je ve─Ź┼íi a raz je men┼íi ─Źas toho timera. ako keby bol problem s tym ┼że ve─żmi ─Źasto sa preru┼íuje na IOC. diky.
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod rudko » 03 Aug 2016, 12:32

jasne. prerusenia sa ovplyvnuju. treba pozriet v DS k danemu obvodu ktore ma aku prioritu, pripadne ci sa daju priority nastavit
Tu sa hodi pamatna veta mojho ucitela jednocipakov zo strednej: "Prerusenie s nizsou prioritou moze byt prerusene prerusenim s vyssou prioritou, avsak prerusenie s vyssou prioritou nemoze byt prerusene prerusenim s nizsou prioritou" :-)
Drink coffee. Do stupid things faster with more energy...
Na predaj...
rudko
Obr├ízok pou┼ż├şvate─ża
Power user
Power user
Pr├şspevky: 2052
Vek: 33.13
Zalo┼żen├Ż: 28.12.2012
Bydlisko: Stupava
Paragraf: 24

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 13:02

hej, mal som v ruke raz 16bit procak, a ten tieto nastavenia má, ale tento 16F1939 taketo nastavenia nema.
tak┼że potom ost├íva len logicky napisa┼ą program.
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 03 Aug 2016, 14:23

Nerozumiem tvojej ot├ízke. ─îo to je ovplyv┼łova┼ą? Z logiky veci mi pr├şde ┼że tieto dve preru┼íenia s├║ na sebe nez├ívisl├ę. Preru┼íenie od ─Źasova─Źa a preru┼íenie od extern├ęho vstupu s├║ nez├ívisl├ę a to znamen├í ┼że treba po─Ź├şta┼ą so v┼íetk├Żmi mo┼żnos┼ąami. V pr├şpade ak ich obsluhy p├ş┼íe ─Źlovek neznal├Ż veci, ktor├Ż ani nevie ako ─Źasto sa preru┼íenie objavuje a ako dlho trv├í jeho obsluha sa ─żahko dostane do situ├ície ┼że jeho v├Żtvor trp├ş n├íhodn├Żmi chybami.

Ako pr├şklad som v tomto vl├íkne uv├ídzal pou┼żitie preru┼íenia od extern├ęho sign├ílu na ├║rove┼ł. Ale ani preru┼íenie na hranu nieje bez rizika. Zale┼ż├ş na tom ako ─Źasto t├í hrana pr├şde.

─Äal┼íie probl├ęmy s├║ spojen├ę s viacvl├íknovos┼ąou tak├Żchto sw kon┼ítrukc├ş. Pre jednoduch├ę MCU sa jedn├í iba o dvojvl├íknov├ę behy, ale probl├ęmy ako atomicita oper├íci├ş, reentrantnos┼ą funkci├ş, dead lock to tu v┼íetko funguje a treba to ma┼ą na pam├Ąti.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 14:58

perteple.

No ako som pisal skor, robil som ten snima─Ź ota─Źok ktory u┼ż funguje. funguje tak ┼że v┼żdy na nabe┼żnu hranu sa zapne preru┼íenie a zapne ─Źasova─Ź a na dal┼íiu nabe┼żnu hranu sa v preru┼íeni vypne ─Źasova─Ź a tak dokole─Źka. Len┼że teraz som tam zapol timer2 ktory je nastaveny na 100mS a po prete─Źeni sa zapne preru┼íenie a momentalne len neguje vystup na ktorom je LEDka a snimam to skopom.

ak je externe preru┼íenie vypnute, tak ten timer2 ide pekne, ka┼żda hrana rovnaky ─Źas, ale ak zapnem externe preru┼íenie ktore sa vyskytuje ─Źastej┼íie od jednotiek po 10tok milisekund, tak vtedy ten timer 2 jaksi sa sprava nekorektne
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 03 Aug 2016, 15:52

Ak├í dlh├í je obsluha extern├ęho preru┼íenia? Nem├í┼í to n├íhodou tak ┼że pri nejakej hrane zablokuje┼í preru┼íenia? Si si vedom├Ż toho ┼że si zablokoval aj preru┼íenie od toho TIMER2? Tu si to treba nakresli┼ą a rozmy┼íla┼ą s t├Żm ┼że ko─żko ─Źo trv├í. Ke─Ć be┼ż├ş jedno preru┼íenie nem├┤┼że be┼ża┼ą druh├ę. Ale preru┼íovacie udalosti sa zapam├Ąt├ívaj├║, tak┼że sa vedia aktivova┼ą po ukon─Źen├ş obsluhy predch├ídzaj├║ceho preru┼íenia.

To iste plat├ş ak je preru┼íenie zak├ízan├ę a potom sa povol├ş. M├┤┼żu by┼ą kludne zapam├Ątan├ę aj dve ┼żiadosti o preru┼íenie, ktor├í bude obsl├║┼żen├í ako prv├í z├íle┼ż├ş od toho ako prioritne sa vyvol├ívaju pre ten PIC. V┼íetko je ur─Źite pop├şsan├ę v DS. Ja sa PIC nevenujem tak┼że ani keby si uk├ízal k├│d tak sa anal├Żzy nedo─Źk├í┼í.

Teoreticky plat├ş ┼że d─║┼żka toho ├║seku generovan├ęho pomocou TIMER2 m├┤┼że kol├şsa┼ą o +- dobu obsluhy preru┼íenia toho extern├ęho. S t├Żm sa ned├í ni─Ź robi┼ą. Ak je to viac tak potom je tam nejak├í chyba.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 16:50

hej , asi to spravim tak ako si to pisal najprv, jeden timer si nastavim na 100mS a potom budem v┼íetky vstupy po─Źita┼ą do druhych ─Źita─Źov. a po ka┼żd├Żch 100mS vyhodnocova┼ą, ur─Źite to pojde. V─Ćaka.
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 03 Aug 2016, 17:59

Neviem ─Źi sa ch├ípeme. Ale to je norm├ílne ┼że ka┼żd├Ż si predstav├ş v re─Źi toho druh├ęho pr├íve to ─Źo potrebuje. Ak ide o meranie ─Źasu medzi dvoma impulzami tak som to myslel ├║plne inak.
Ak chce┼í mera┼ą ot├í─Źky tak ┼że bude┼í po─Ź├şta┼ą impulzy po dobu 0,1 sekundy tak sa priprav na dos┼ą biedne rozl├ş┼íenie. a to 600ot/min (1 * 10 * 60)
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 21:08

ja ┼ąa chapem, ale nemo┼żem na ostrom krose predsa mera┼ą ota─Źky raz za sekundu alebo raz za minutu. +-500 ot├í─Źiek hore dole ─Źo u┼ż.
mo┼żno by som to dal e┼íte na bud 150 alebo a to u┼ż fakt asi maximalne 200mS ked┼że aj tak schopnos┼ą LCD r├Żchlo vypisova┼ą ─Ź├şsla tie┼ż nieje bohvieaka a t├Żm by sa mi aj spresnilo meranie na +-300 a to u┼ż by bolo v pohode.

ak by mi to v┼íetko pekne fungovalo tak to tam chcem e┼íte zakomponova┼ą aj motomera─Ź a aj kmh, odvodenej od zadnej rozety. ─Źi┼że na honde to mame 9tisc * 60 = 540tisic = 1 motohodina.
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 03 Aug 2016, 21:16

preto som ti nap├şsal ako sa to meria. Ked┼że si pustil ─Źo m├í┼í za MCU toto sa p├ş┼íe na strane 3 DS
Two Capture, Compare, PWM Modules (CCP)
- 16-bit Capture, max. resolution 125 ns
- 16-bit Compare, max. resolution 125 ns


Tak┼że nemusi┼í ani prstom pohn├║┼ą a hw ti zmeria periodu medzi dvoma impulzmi a rozl├ş┼íen├şm na 125ns.
Samozrejme ┼że tam treba aj tro┼íka sw. A hlavne na┼ítudova┼ą ako to funguje.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 03 Aug 2016, 21:38

vdaka, hej je to tam pekne popisane, hned ako sa k tomu dostanem to vysku┼íam. V─Ćaka za dobr├Ż tip
Pr├şlohy
ccpaspacutper.png
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod amater-sc » 04 Aug 2016, 09:32

Mam pocit ze to co potrebujes vediet je tu:
Datasheet PIC16F193X/LF193X, strana 95:

The firmware within the Interrupt Service Routine (ISR)
should determine the source of the interrupt by polling
the interrupt flag bits. The interrupt flag bits must be
cleared before exiting the ISR to avoid repeated
interrupts. Because the GIE bit is cleared, any interrupt
that occurs while executing the ISR will be recorded
through its interrupt flag, but will not cause the
processor to redirect to the interrupt vector.


V skratke po slovensky, ked vojdes do ISR musis overit ktory zdroj prerusenia
vyvolal prerusenie - to zistis pomocou interrupt flag bitu danej periferie.
Samozrejmym prepokladom pre uspech je co najkratsia obsluha ISR a nulovanie flag bitu
ktory prerusenie vyvolal.
amater-sc
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 81
Zalo┼żen├Ż: 27.03.2012
Bydlisko: Senec
Karma: 2

Re: Extern├ę preru┼íenie

Odosla┼ąod boraicho » 04 Aug 2016, 13:01

no hej, v┼żdy ked vojdem do interuptu mam tam if(flag_preru┼íenia) ktore preru┼íenie interupt vyvolalo a v tom ife je napisany program, a samozrejme sa sna┼żim o ─Źo najmen┼íi kod vnutri.
"Aj nevinne vyzeraj├║ca s├║─Źiastka, m├┤┼że by┼ą pr├ş─Źinou nefunk─Źnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
boraicho
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 11839
Vek: 30.69
Zalo┼żen├Ż: 03.02.2007
Bydlisko: Prešov
Karma: 44

Re: Extern├ę preru┼íenie

Odosla┼ąod misocko » 16 J├║l 2019, 12:17

ahojte
skusam arduinom UNO merat skutocny vykon AC prudu. Robim to tak ze si nasamplujem napetie a prud jednej komplet sinusovky, nasledne prevediem vyppocet a vypisem. Na spravny start samplu pouzivam prerusenie-jasne islo by to aj bez neho ale mne sa to takto paci. V preruseni iba davam pomocnu premennu do 1, na zaklade toho spustim samplovanie , vypocet a odoslanie. A tu nastal problem s ktorym som vcera bojoval skoro cely den kym som to vyriesil velmi elegantne a 100% postacujuce pre moju potrebu.
ale najprv k problemu: vsetko by bolo super , keby procak stihol spravit vypocet a zapis (aktualne si cele pole hodnot prenasam na serial monitor) do dalsieho prerusenia, co samozrejme nema sancu. Takze skonci loop a pomocna premenna uz je v 1 lebo prerusenie uz nastalo pocas behu loopu. Teraz uz samplovanie nezacne na zaciatku sinusovky ale kdekolvek sa v tom case ten sinus nachadza. Skusal som na zaciatku loopu vypnut prerusenie , na konci loopu opet zapnut a na moje pocudovanie, vysledok podobny. Studovanim netu a tuto fora som sa dozvedel ze prerusenie aj tak nabehne hned po zapnuti kedze aj ked bolo vypnute tak reagovalo na akciu (naco mi je kurna take vypnutie prerusenia, sedliacky rozum mi vravel ze ked je nieco vypnute , tak to skratka nefunguje; programatori to maju zjavne inac a ovela tazsie).
Ja som to nakoniec vyriesil tak ze v preruseni inkrementujem premennu az na hodnotu o ktorej viem ze loop urcite skoncil, program v loope potom startuje az ked je premenna v mojom pripade vecsia ako 300.
Existuje nejaka moznost reagovat na najblizsiu udalost (ktora spusta prerusenie) ktora nasleduje hned po skonceni loopu?
(prosim nerieste to na co to pouzivam a ze netreba...., pytam sa obecne ak by som to na nieco v buducnosti potreboval :lol: :lol: )
─Äakujem
misocko
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2959
Vek: 42.82
Zalo┼żen├Ż: 14.06.2009
Bydlisko: Hlohovec
Karma: 23

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 16 J├║l 2019, 12:57

Nu┼ż vo svete MCU nie je miesto na sedliacky rozum. Respekt├şve sedliacky rozum je fajn (logika), ale nesmie by┼ą pokriven├Ż nespr├ívnymi dojmami. Ten hlavn├Ż tu sa vol├í vypnut├ę preru┼íenie. Ni─Ź tak├ę toti┼ż neexistuje. Namiesto f├│ra a internetu si sta─Ź├ş pre─Ź├şta┼ą DS pr├şslu┼ín├ęho procesora. Preru┼íovac├ş system je pri AVR pop├şsan├Ż na p├ír str├ínkach lebo je trapne jednoduch├Ż.
Tomu ─Źo ty hovor├ş┼í vypnutie preru┼íenia je v skuto─Źnosti jeho blokovanie (a povolovanie). To je oper├ícia ktorou si program├ítor na ur─Źit├║ dobu zablokuje preru┼íovac├ş syst├ęm aby nebol ur─Źite preru┼íen├Ż a potom urob├ş nejak├║ akciu ktor├í by v pr├şpade ┼że by bola preru┼íen├í dopadla za ur─Źit├Żch vz├ícnych podmienok ┼ípatne. Vol├í sa to atomickos┼ą oper├íci├ş a je to pre nesk├║sen├Żch program├ítorov zabijak.
Ak chce┼í nejak├ę preru┼íenie vypn├║┼ą tak nie je ni─Ź jednoduch┼íie. Ka┼żd├ę preru┼íenie sa d├í povoli┼ą/blokova┼ą. ─îo je blokovan├ę nem├┤┼że vznikn├║┼ą. Ak ale nie─Źo povol├ş┼í a ono sa aktivuje tak sa t├í inform├ícia nuluje dvomi sp├┤sobmi. Prv├Ż je ┼że sa spust├ş jeho obsluha. Druh├Ż je ┼że sa vynuluje z├ípisom nuly alebo jednotky do nejak├ęho registra kde sa dr┼ż├ş info ┼że nastalo. Ked┼że ni─Ź konkr├ętnej┼íieho si nepustil len ┼że m├í┼í arduino tak si to n├íjdi v DS s├ím.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod misocko » 16 J├║l 2019, 13:51

K├│d: Vybra┼ą v┼íetko
int poleNapetie[50];
int polePrud[50];
volatile byte x=0;

void setup()
{
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, zapni, FALLING);

  Serial.begin(9600);
  while (!Serial) {;
                  }
}

void loop()
{

if (x>0)
  {
    x=0;
    for (int i = 0; i < 49; i = i + 1)
    {
      poleNapetie[i] = analogRead(A0);
      polePrud[i] = analogRead(A1);
    }
    Serial.println("A");
    for (int i = 0; i < 49; i = i + 1)
    {
      Serial.print(poleNapetie[i]);
      Serial.print(";");
      Serial.println(polePrud[i]);
    }
  }
}

void zapni()
{
x=1;
}

pustam moj program, neviem co viac potrebujete. Myslel som nieco jednoduche, liezt do registrov - to by som musel skutocne potrebovat. Ked vidim cislo zapisane v inom ako desiatkovom tvare a k tomu nejake PORTB &= ~((1 << PB4) | (1 << PB2)); tak sa mi jezia chlpy. len zapis 1/0 na jeden z pinou bez pouzitia digitalWrite mi trval asi dva dni kym som na chvilu pochopil, takze programator zo mna uz nikdz nebude.
misocko
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2959
Vek: 42.82
Zalo┼żen├Ż: 14.06.2009
Bydlisko: Hlohovec
Karma: 23

Re: Extern├ę preru┼íenie

Odosla┼ąod peterple » 16 J├║l 2019, 16:13

tak┼że INT0 reaguje na dobe┼żn├║ hranu.
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf#page=55
Tak si pre─Ź├ştaj kapitolu 12.2.3. a pod─ża toho sa zaria─Ć. Ak nechce┼í pou┼ż├şva┼ą tie zakl├şnadl├í ─Źo sa ti je┼żia vlasy, tak si poh─żadaj kni┼żnicu ─Źo to rie┼íi volan├şm nejakej ├║┼żasnej funkcie. Tie ja nepozn├ím.
Ale zakazova┼ą preru┼íenia vlastne ani nem├┤┼że┼í. Prestali by ti fungova┼ą tie veci okolo Serial.

Ale tebe by ├║plne sta─Źilo nulova┼ą t├║ premenn├║ x na konci toho if namiesto na za─Źiatku a preru┼íenie zakazova┼ą a povo─żova┼ą ani nepotrebuje┼í.

Inak to m├í ako┼że 50x navzorkova┼ą sietov├ę nap├Ątie a pr├║d po─Źas jednej s├şnusovky? Asi z teba program├ítor MCU naozaj nebude. Doporu─Źujem n├íjs┼ą si hotov├ę meranie v├Żkonu ktor├ę urobil niekto kto tomu naozaj rozumie. Bez znalost├ş ako to vo vn├║tri fi─Ź├ş to nejde.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Extern├ę preru┼íenie

Odosla┼ąod misocko » 16 J├║l 2019, 16:38

Vidis to s tym x na konci loopu ma vobec nenapadlo a urcite bude fungovat.
Co sa tyka samplovania, stihne to ulozit 90 vzoriek napetia a 90 vzoriek prudu pocas jednej sinusovky.
Stihlo by aj viac ale to by som musel zmenit preddelicku pre AD prevodnik aby stihol viac samplov.
misocko
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2959
Vek: 42.82
Zalo┼żen├Ż: 14.06.2009
Bydlisko: Hlohovec
Karma: 23

Predchádzajúca

Nasp├Ą┼ą na Mikropo─Ź├şta─Źe

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 2 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.86 sek├║nd