Externé prerušenie
Moderátori: psichac, Moderátori
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
čím ďalej tým zaujímavejšie, zatiaľ si utrieďujem informácie ktoré mám.
1. arduino je v hodne zarušenom mieste - v blízkosti rozvádzača, spínané sú tam odporové aj indukčné záťaže, dokonca komutátorový motor
2. k arduinu sú pripojené desiatky metrov dlhé vodiče (neviem či tienené alebo nie) ktorými sa veľa vecí sníma a veľa vecí ovláda - nie sú galvanicky oddelené.
3. takto to funguje ako má.
4. na prerušovací vstup pripojíš 5cm vodič a povolíš prerušenie, v tom momente program v arduine začne padať, neviem presne ako sa to prejavuje.
5. ak v podstate skratuješ ten prerušovací vstup odporom 2R tak program funguje normálne.
6. Ak si na vstup pripojil len ten RC člen čo som ti poslal tak program padá ako keby tam bolo 5cm vodiča.
Je to tak?
ak áno sám asi vidíš že to nejako neštimuje. Ak tam pripojíš ten drát ale nepovolíš prerušenie, tak program padá ďalej alebo funguje normálne?
1. arduino je v hodne zarušenom mieste - v blízkosti rozvádzača, spínané sú tam odporové aj indukčné záťaže, dokonca komutátorový motor
2. k arduinu sú pripojené desiatky metrov dlhé vodiče (neviem či tienené alebo nie) ktorými sa veľa vecí sníma a veľa vecí ovláda - nie sú galvanicky oddelené.
3. takto to funguje ako má.
4. na prerušovací vstup pripojíš 5cm vodič a povolíš prerušenie, v tom momente program v arduine začne padať, neviem presne ako sa to prejavuje.
5. ak v podstate skratuješ ten prerušovací vstup odporom 2R tak program funguje normálne.
6. Ak si na vstup pripojil len ten RC člen čo som ti poslal tak program padá ako keby tam bolo 5cm vodiča.
Je to tak?
ak áno sám asi vidíš že to nejako neštimuje. Ak tam pripojíš ten drát ale nepovolíš prerušenie, tak program padá ďalej alebo funguje normálne?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
komediálne vlákno
ako vyzerá, keď padne program v chuine ? vyhodí modrú obrazovku
hej relátko je úplne najsamfasa na takéto veci, relátka majú MCU moc radi.
tie spínania a ich prepočty sú nádherné ...
riešiť prerušenie na viacmetrovom kábli priamo na pin, squelééééé a spolahlivé
... že pinom tečie 2A či koľko, tak to ma fakt pobavilo
ale je fakt paráda, že si sem nedal fotku, či zapojenie, ale viem asi prečo
sory za OT , ale už mi to nedalo
ako vyzerá, keď padne program v chuine ? vyhodí modrú obrazovku
hej relátko je úplne najsamfasa na takéto veci, relátka majú MCU moc radi.
tie spínania a ich prepočty sú nádherné ...
riešiť prerušenie na viacmetrovom kábli priamo na pin, squelééééé a spolahlivé
... že pinom tečie 2A či koľko, tak to ma fakt pobavilo
ale je fakt paráda, že si sem nedal fotku, či zapojenie, ale viem asi prečo
sory za OT , ale už mi to nedalo
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
Re: Externé prerušenie
myslim ze vsetko je asi tak ako je napisane. ked v programe vypnem prerusenie mozem na vstup pripojit pol metrovy dipol aj so zosilnovacom a nic sa nedeje...peterple napísal:čím ďalej tým zaujímavejšie, zatiaľ si utrieďujem informácie ktoré mám.
1. arduino je v hodne zarušenom mieste - v blízkosti rozvádzača, spínané sú tam odporové aj indukčné záťaže, dokonca komutátorový motor
2. k arduinu sú pripojené desiatky metrov dlhé vodiče (neviem či tienené alebo nie) ktorými sa veľa vecí sníma a veľa vecí ovláda - nie sú galvanicky oddelené.
3. takto to funguje ako má.
4. na prerušovací vstup pripojíš 5cm vodič a povolíš prerušenie, v tom momente program v arduine začne padať, neviem presne ako sa to prejavuje.
5. ak v podstate skratuješ ten prerušovací vstup odporom 2R tak program funguje normálne.
6. Ak si na vstup pripojil len ten RC člen čo som ti poslal tak program padá ako keby tam bolo 5cm vodiča.
Je to tak?
ak áno sám asi vidíš že to nejako neštimuje. Ak tam pripojíš ten drát ale nepovolíš prerušenie, tak program padá ďalej alebo funguje normálne?
ako sa prejavuje padanie arduina? no ze nieco, nieco a zrazu nic... zasekne sa, zmrzne, nic nerobi,...
vacsina kablov su tienene. este par pripevkov a mozno sa odhodlm rozpiasniu toho co vsetko arduino ma na starosti...
este:
In the data sheet Voltage Input Low (Vil) is -0.5 to 0.3 of Vcc, while Voltage Input High (Vih) is 0.6 of Vcc to Vcc+0.5
podla osciloskopu je na 2R rezistore pri umelom zaruseni napatie asi 0.25V opisovat frekvencie ale nebudem.. je to rusenie. chaos...
prerusenie na viac metrovom kabli ano, ale napajam ho 12 voltami pre znizenie citlivosti, a signal ide cez optoclen.
dva ampere by sli ked tak pinom rezistoru keby chcem dosiahnut log1 pri rezitore 2ohmy, i ked udajne podla datasheetu staci 0.6v.
preco som ndal fotku si uhadol. fotku dam potom co poriesim stabilne prerusenia a mozem urobit finalnu upravu.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
Na základe toho čo píšeš je podľa mňa jasné že padanie programu nespôsobuje rušenie ale zle napísaný kód obsluhy prerušenia.
Som absolútny neznalec Arduina ale podľa toho čo si utrúsil z kódu je tam hneď niekoľko nepekných vecí. Už ti to tu aj spomínali. Použitie float premenných (možnosť pretečenia zásobníka). Volanie print v prerušení ktoré samo vraj používa prerušenie ktoré je práve zakázané, a tiež možné pretečenie zásobnika. Takže vyhoď všetko a nechaj tam len inkrementovať celočíselnú premennú a uvidíme či to pomôže alebo nie.
-- Spojený príspevok 19 Dec 2014, 22:16 --
A ešte jak si prišiel na to že na logickú jednotku na vstupe stačí 0,6V? to akože 0.6 of VCC = 0,6V?
Som absolútny neznalec Arduina ale podľa toho čo si utrúsil z kódu je tam hneď niekoľko nepekných vecí. Už ti to tu aj spomínali. Použitie float premenných (možnosť pretečenia zásobníka). Volanie print v prerušení ktoré samo vraj používa prerušenie ktoré je práve zakázané, a tiež možné pretečenie zásobnika. Takže vyhoď všetko a nechaj tam len inkrementovať celočíselnú premennú a uvidíme či to pomôže alebo nie.
-- Spojený príspevok 19 Dec 2014, 22:16 --
A ešte jak si prišiel na to že na logickú jednotku na vstupe stačí 0,6V? to akože 0.6 of VCC = 0,6V?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
s tym programom to nebude az take zle, kede dokym sa to nejakym podnetom nezarusi ide to hodiny tak ako ma.
staci prist napr k vypinacu par krat vypnut a zapnut, ked mam zapnuty pocitac a vypisuje mi arduino impulzy na monitori vidim ze pridu take ktore tam byt nemaju, pride ich viac, a ked je rusenie dlhsie tak musim arduino zresetovat.
aj keby program opravim a prestane sa resetovat tie impulzy stale zaznamena.
s tym log 1 je to 0.6x, a nie 0.6v - suhlasim.
staci prist napr k vypinacu par krat vypnut a zapnut, ked mam zapnuty pocitac a vypisuje mi arduino impulzy na monitori vidim ze pridu take ktore tam byt nemaju, pride ich viac, a ked je rusenie dlhsie tak musim arduino zresetovat.
aj keby program opravim a prestane sa resetovat tie impulzy stale zaznamena.
s tym log 1 je to 0.6x, a nie 0.6v - suhlasim.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
ne veď to sa nevylučuje. Pokiaľ tam nemáš žiadny impulz tak to ide. Ale ked tam chytíš niečo z luftu tak to padne buď hneď, alebo keď ta to preruší po 200x krat bez toho aby si sa stihol vracať z prerušenia a pretečie ti zásobník.
Skús čo som ti napísal a bude jasno.
-- Spojený príspevok 19 Dec 2014, 22:42 --
tá posledná námietka je nejaká divná nie? To že to reaguje je OK. Potom sa už len zbaviť nechcených kratučkých rušivých impulzov a na to sú tie dolnopriepustné filtre.
Skús čo som ti napísal a bude jasno.
-- Spojený príspevok 19 Dec 2014, 22:42 --
tá posledná námietka je nejaká divná nie? To že to reaguje je OK. Potom sa už len zbaviť nechcených kratučkých rušivých impulzov a na to sú tie dolnopriepustné filtre.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
ano. potrebujem taky nejaky filter. "hodiny ide" znamena naratanie priemerne 4 imulzy za minutu.
dlzka signalu 80ms napatie 5V.
stale skusam kondenzatory, a rezistory aby rusenie odfiltrovali. este chcem skusit zapojenie s tranzitorom a oproclenom kde bude vstup proceora cez optoclen stale pripojeny na minus, a signalom sa vypne optoclen a cez rezistor a procesor pripoji na plus.
dlzka signalu 80ms napatie 5V.
stale skusam kondenzatory, a rezistory aby rusenie odfiltrovali. este chcem skusit zapojenie s tranzitorom a oproclenom kde bude vstup proceora cez optoclen stale pripojeny na minus, a signalom sa vypne optoclen a cez rezistor a procesor pripoji na plus.
0
Re: Externé prerušenie
VZDAL SOM TO.
pri dlhsom sledovani som zistil ze ani 2ohmy nepomozu. na prerusenie pride signal aj ked ho na tvrdo pripojim do minusu. s najvacsou pravdepodobnostou mam niekde spojeny minus a PEN, co to pri tnc-s moze dost vadit.
arduino mam napajane z impulzneho zdroja s pridanymi kondenaztormi, a zdroj je napajany cez filter.
pin som prekonfiguroval na bezny digitalny vstup, teraz mozem v blizkosti uz aj zvarat a nic sa nedeje.
uz len zisit o kolko impulzov pridem pocas toho ked bude program zaneprazdneny...
mozno bude najjednoduchsie pouzit dalsi procesor, ktory bude len snimat digitale vstupy, a tie cez 232 posielat do "hlavneho procesora", alebo natiahnut impulz na par stoviek ms.
pri dlhsom sledovani som zistil ze ani 2ohmy nepomozu. na prerusenie pride signal aj ked ho na tvrdo pripojim do minusu. s najvacsou pravdepodobnostou mam niekde spojeny minus a PEN, co to pri tnc-s moze dost vadit.
arduino mam napajane z impulzneho zdroja s pridanymi kondenaztormi, a zdroj je napajany cez filter.
pin som prekonfiguroval na bezny digitalny vstup, teraz mozem v blizkosti uz aj zvarat a nic sa nedeje.
uz len zisit o kolko impulzov pridem pocas toho ked bude program zaneprazdneny...
mozno bude najjednoduchsie pouzit dalsi procesor, ktory bude len snimat digitale vstupy, a tie cez 232 posielat do "hlavneho procesora", alebo natiahnut impulz na par stoviek ms.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
to by som rád videl ako je riešený ten napájací zdroj. Ak si tam len šlahol pár elektrolytov navyše ako si to robil pri tom optočlene, tak si tomu vôbec nepomohol.
No a že ti tam frčia špice po tých kábloch je jasné. Riešenie je tiež jasné - galvanicky oddeliť. Keby to bolo pár káblov na malej vidialenosti možno by pomohli aj tie rc členy na vstupoch ale v tvojom prípade pochybujem.
-- Spojený príspevok 20 Dec 2014, 14:50 --
Ešte k tomu programu. Jak zaneprázdnený? To si nemôžeš ani pustiť časovač a vzorkovať to napríklad každé 2ms?
No a že ti tam frčia špice po tých kábloch je jasné. Riešenie je tiež jasné - galvanicky oddeliť. Keby to bolo pár káblov na malej vidialenosti možno by pomohli aj tie rc členy na vstupoch ale v tvojom prípade pochybujem.
-- Spojený príspevok 20 Dec 2014, 14:50 --
Ešte k tomu programu. Jak zaneprázdnený? To si nemôžeš ani pustiť časovač a vzorkovať to napríklad každé 2ms?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
napajaci zdroj mam 12V/5A max 120mVp-p z ktoreho sa napaja dalich vemi vela veci...
5V je vyrabane DC/DC menicom s LM2596. kedze original v menici je na vystupe len 220u tak som na vystup pridal asi 2000uF
je zaneprazdneny znamena ze vzorkuje maximalne casto, ale vykonava vela inych cinnosti a delay-ov pocas ktorych vstup ignoruje, a impulz nestihne.
s arduinom som zacal preto, aby som sa to prakticky naucil, nie len preto aby som nieco urobil. venujem sa tomu rok, a stale velmi vela neviem. vela casu na to nemam, len sem tam nieco pridam, prerobim,..
doteraz som nemal ziadny vacsi problem ktory by som nebol poriesil. redpokladal som hlavne ze citlivost pri digitalnom vstupe je ta ista ako pri vstupe preruenia, ale ked som prekonfiguroval pin zrazu rusenie prestalo.
momentalne mam asi metrovym netienenym dratom prepojeny vstup arduina do minusu. drat je v tesnej blizkosti isticov, vodicov, rele,.. ked pride imulz zapise ho na sd kartu. po par hodinach nic, a to som skusal doslova robit obluky v blizkosti procesora.
mimochodom verzia s malym jazyckovym rele bola asi najspolahlivejsia. ziadne dvojite impulzy a minimum rusenia.
5V je vyrabane DC/DC menicom s LM2596. kedze original v menici je na vystupe len 220u tak som na vystup pridal asi 2000uF
je zaneprazdneny znamena ze vzorkuje maximalne casto, ale vykonava vela inych cinnosti a delay-ov pocas ktorych vstup ignoruje, a impulz nestihne.
s arduinom som zacal preto, aby som sa to prakticky naucil, nie len preto aby som nieco urobil. venujem sa tomu rok, a stale velmi vela neviem. vela casu na to nemam, len sem tam nieco pridam, prerobim,..
doteraz som nemal ziadny vacsi problem ktory by som nebol poriesil. redpokladal som hlavne ze citlivost pri digitalnom vstupe je ta ista ako pri vstupe preruenia, ale ked som prekonfiguroval pin zrazu rusenie prestalo.
momentalne mam asi metrovym netienenym dratom prepojeny vstup arduina do minusu. drat je v tesnej blizkosti isticov, vodicov, rele,.. ked pride imulz zapise ho na sd kartu. po par hodinach nic, a to som skusal doslova robit obluky v blizkosti procesora.
mimochodom verzia s malym jazyckovym rele bola asi najspolahlivejsia. ziadne dvojite impulzy a minimum rusenia.
0
Re: Externé prerušenie
... žiadne dvojité impulzy a minimum rušenia
škoda bolo to dosť zábavné vlákno
škoda bolo to dosť zábavné vlákno
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
Tak nejak som si myslel že si to urobil. Ako si prišiel na to že 220u je málo a že tam treba dalších 2G? Tu máš trocha osvety na túto tému
http://petr-kubac.blog.cz/1204/co-je-to ... jeni-dil-2
Nestíhačky procesora: Neviem čo tam všetko riešiš, ale ak to riešiš na float aritmetike tak sa nedivým že to nestíha. A ani ten arduino C++ štýl nebude príliš optimálny. Tu máš dve cesty - pridávať ďalšie procesory a lebediť si v programovaní v štýle ala arduino, alebo začať optimálne programovať. Napríklad žiadne delay slučky.
K tomu relé mám pripomienku. Chýba ti tam nulová dioda. Takže si priamo na procesorovom napájaní vyrábaš špicu pri každom rozopnutí relátka. A prečo je v emitore?
Nerozumiem tomuto
http://petr-kubac.blog.cz/1204/co-je-to ... jeni-dil-2
Nestíhačky procesora: Neviem čo tam všetko riešiš, ale ak to riešiš na float aritmetike tak sa nedivým že to nestíha. A ani ten arduino C++ štýl nebude príliš optimálny. Tu máš dve cesty - pridávať ďalšie procesory a lebediť si v programovaní v štýle ala arduino, alebo začať optimálne programovať. Napríklad žiadne delay slučky.
K tomu relé mám pripomienku. Chýba ti tam nulová dioda. Takže si priamo na procesorovom napájaní vyrábaš špicu pri každom rozopnutí relátka. A prečo je v emitore?
Nerozumiem tomuto
To je načo dobré?momentalne mam asi metrovym netienenym dratom prepojeny vstup arduina do minusu.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
preco dalsie 2G?
lebo podla osciloskopu to mierne pomohlo vyhladit napatie, a ako som spominal na zdroj mam napojenych viac zariadeni, a pri zapinani vypinani potrebujem aby to kondenzatory podrzali - 2G je este skor dost malo.
optimalne programovat znie pekne, ale na to si netrufam. momentalne pouzivam kniznice:
dht - na komunikaciu s dht11 a 22
xively - zasielanie dat na onlie vizualizaciu
sd - logovaie, a citanie z sd karty
httpclient, ethernet, tp - synchroizacia casu z ntp, web server
spi,wire - i2c na rtc,
BMP180 - tlakomer
eeprom - konfiguracia, a zaloha
+ vela veci riesim s dlhsim programom namiesto kniznice.
skoro vsetko riesim cez float. celkovo pouzivam mozno 40 premennych float, z toho minimalne 10 ako global variables
s tou diodou je to pravda, ale je to jedno kedze impulzy naskakovali aj ked vobec nemali - pin procesora bol priamo a minuse.
a naco je to dobre s tym dratom? lebo pri pouziti vstupneho pinu ako prerusenia procesor prijimal vsetko z okolia ci uz cez pen, alebo vzduchom. preto som skusal pin co najviac zarusit, ale ked je ako bezny digitalny vstup vsetko je ok a ziadne rusive impulzy nezachytava.
je jedno aky mam program, ked mne s mojim programom pride impulz na prerusenie ktory nema, myslim ze taky isty rusivy impulz pride aj keby to naprogramujem bez kompilatora az to ze by sa to asi nezaseklo - co by az tak velmi nepomohlo, kedze to sposobilo nieco co tam byt nemalo.
-- Spojený príspevok 20 Dec 2014, 18:28 --
lebo podla osciloskopu to mierne pomohlo vyhladit napatie, a ako som spominal na zdroj mam napojenych viac zariadeni, a pri zapinani vypinani potrebujem aby to kondenzatory podrzali - 2G je este skor dost malo.
optimalne programovat znie pekne, ale na to si netrufam. momentalne pouzivam kniznice:
dht - na komunikaciu s dht11 a 22
xively - zasielanie dat na onlie vizualizaciu
sd - logovaie, a citanie z sd karty
httpclient, ethernet, tp - synchroizacia casu z ntp, web server
spi,wire - i2c na rtc,
BMP180 - tlakomer
eeprom - konfiguracia, a zaloha
+ vela veci riesim s dlhsim programom namiesto kniznice.
skoro vsetko riesim cez float. celkovo pouzivam mozno 40 premennych float, z toho minimalne 10 ako global variables
s tou diodou je to pravda, ale je to jedno kedze impulzy naskakovali aj ked vobec nemali - pin procesora bol priamo a minuse.
a naco je to dobre s tym dratom? lebo pri pouziti vstupneho pinu ako prerusenia procesor prijimal vsetko z okolia ci uz cez pen, alebo vzduchom. preto som skusal pin co najviac zarusit, ale ked je ako bezny digitalny vstup vsetko je ok a ziadne rusive impulzy nezachytava.
je jedno aky mam program, ked mne s mojim programom pride impulz na prerusenie ktory nema, myslim ze taky isty rusivy impulz pride aj keby to naprogramujem bez kompilatora az to ze by sa to asi nezaseklo - co by az tak velmi nepomohlo, kedze to sposobilo nieco co tam byt nemalo.
-- Spojený príspevok 20 Dec 2014, 18:28 --
nikto nepisal ze je vsetkemu koniec.mato3000 napísal:škoda bolo to dosť zábavné vlákno
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
Tie 2G su na 12V VCC alebo na 5V VCC MCU? Myslel som že je jasné že sa bavíme o napájaní MCU a nie celého čuda.
Ako si myslíš že by ťa zaťažila detekcia toho pinu v prerušovacej rutine nejakého časovača pri 2ms vzorkovaní?
Veď netvrdím že si musíš všetko naprogramovať sám. Ale banalita vzorkovanie pinu ti je potom problém urobiť.
Tie float premmené sú naozaj nutné? Ja som ich zatiaľ v MCU na nič nepotreboval.
Ako si myslíš že by ťa zaťažila detekcia toho pinu v prerušovacej rutine nejakého časovača pri 2ms vzorkovaní?
Veď netvrdím že si musíš všetko naprogramovať sám. Ale banalita vzorkovanie pinu ti je potom problém urobiť.
Tie float premmené sú naozaj nutné? Ja som ich zatiaľ v MCU na nič nepotreboval.
S takouto argumentáciou je zdá sa zbytočné pokračovať v debate.s tou diodou je to pravda, ale je to jedno kedze impulzy naskakovali aj ked vobec nemali - pin procesora bol priamo a minuse.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
float pouzivam pri merani tlaku, teploty, vlhkosti, hladiny ultrazvukom, spotreby,...
tie kondenzatory mam aj tam aj tam, kedze napajanie procesora a vsetkych periferii mam z dvoch zdrojov ktore sa prepinaju aspon raz denne - podla pocasia...
prerusovacia rutina? az tak daleko som v mojom programovani neprisiel. vsetko ide jednoducho dokola jedno za druhym.
idem zistit ako sa to programuje...
tie kondenzatory mam aj tam aj tam, kedze napajanie procesora a vsetkych periferii mam z dvoch zdrojov ktore sa prepinaju aspon raz denne - podla pocasia...
prerusovacia rutina? az tak daleko som v mojom programovani neprisiel. vsetko ide jednoducho dokola jedno za druhym.
idem zistit ako sa to programuje...
0
Re: Externé prerušenie
a vieš len tak pre srandu povedať načo používaš tie float pri tých meraniach ?
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
Prečítal si si ten link čo som poslal? Ak áno tak teraz už vieš že ten 2G pri procesore je zbytočný.
Ideš počítať impulzy na prerušení a nevieš ako to s prerušením je. To bol celkom pekný pokus ktorý nedopadol dobre. To je potom jasné že neveríš že zle napísaná obsluha prerušenia má za následok veľmi záhadné správanie sa programu. Už si skúsil tú čo som ti poradil. Alebo aj to je podľa teba zbytočné?
Na to že tam nestíhaš obsluhovať čo treba len toľko - hlavný program nechať len počítať, posielať, zobrazovať údaje. Ako rýchle to bude je jedno.
Ostatné riešiť pomocou časovača. Raz za x ms sa spustí obslužná rutina prerušenia časovača a tá poberie čo treba.
Nesmie tam byť žiadny delay ani v hlavnom programe a ani v prerušení. Tá rutina musí byť napísaná efektívne aby sa za tých x ms s bohatou rezervou stihla vykonať.
Lenže tam je veľa vecí na ktorých môžeš havarovať, že to asi nedopadne dobre.
Ideš počítať impulzy na prerušení a nevieš ako to s prerušením je. To bol celkom pekný pokus ktorý nedopadol dobre. To je potom jasné že neveríš že zle napísaná obsluha prerušenia má za následok veľmi záhadné správanie sa programu. Už si skúsil tú čo som ti poradil. Alebo aj to je podľa teba zbytočné?
Na to že tam nestíhaš obsluhovať čo treba len toľko - hlavný program nechať len počítať, posielať, zobrazovať údaje. Ako rýchle to bude je jedno.
Ostatné riešiť pomocou časovača. Raz za x ms sa spustí obslužná rutina prerušenia časovača a tá poberie čo treba.
Nesmie tam byť žiadny delay ani v hlavnom programe a ani v prerušení. Tá rutina musí byť napísaná efektívne aby sa za tých x ms s bohatou rezervou stihla vykonať.
Lenže tam je veľa vecí na ktorých môžeš havarovať, že to asi nedopadne dobre.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
flaot? ra sa nejako iak dosiahnut presne cislo?
inak este musim poriesit aj to ze kazde cislo ktore pouzivam s float musi byt tiez float, inak je vysledok nepresny.
co sa tyka preruseia moja predstava bola taka ze:
attachInterrupt(4, stateChange, RISING);
spusti "stateChange"
v stateChange dam
detachInterrupt(4);
urobim - int = millis - last millis (zrusil som uz aj float)
attachInterrupt(4);
jednoducho tym prerusim beziaci program, urobi co treba a pokracuje dalej, ale asi to tak nebude.
skusil som to s tym preruseim od casovaca, ale asi tomu tie dalay-e vadili kedze obcas bezpriciny vypocitalo velmi dlhy, alebo minusovy cas.
tak ci tak som spokoje, kedze pred rokom som nevedel ze nejake boolean ci float existuje, venujem sa tomu vacsinou v zime a beha pri mne maly zaskodnik..
myslim ze hw problem je pri terajsom zapojeni tazko odstranitelny, a co sa tyka sw musim sa este vela ucit.
inak este musim poriesit aj to ze kazde cislo ktore pouzivam s float musi byt tiez float, inak je vysledok nepresny.
co sa tyka preruseia moja predstava bola taka ze:
attachInterrupt(4, stateChange, RISING);
spusti "stateChange"
v stateChange dam
detachInterrupt(4);
urobim - int = millis - last millis (zrusil som uz aj float)
attachInterrupt(4);
jednoducho tym prerusim beziaci program, urobi co treba a pokracuje dalej, ale asi to tak nebude.
skusil som to s tym preruseim od casovaca, ale asi tomu tie dalay-e vadili kedze obcas bezpriciny vypocitalo velmi dlhy, alebo minusovy cas.
tak ci tak som spokoje, kedze pred rokom som nevedel ze nejake boolean ci float existuje, venujem sa tomu vacsinou v zime a beha pri mne maly zaskodnik..
myslim ze hw problem je pri terajsom zapojeni tazko odstranitelny, a co sa tyka sw musim sa este vela ucit.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Externé prerušenie
Ten prístup k prerušeniam nie je taký ako si to napísal. To attachInterupt urobí to že od tohoto momentu sa vždy spustí funkcia stateChange keď nastane príslušná udalosť na danom pine. Tvoj (hlavný) program môže behať a robiť čo len chce, vždy keď nastane prerušovacia udalosť tak je jeho vykonávnanie dočasne prerušené a spustí sa tá funkcia stateChange. Tá by mala čo najrýchlejšie urobiť čo treba a mala by skončiť. Skončením sa totiž vrátiš späť do hlavného programu presne na miesto kde si bol prerušený. Z pohľadu hlavného programu sa vlastne nič nestalo iba sa na chvíľku prestal vykonávať.
Ešte platí také pravidlo že pokiaľ si v prerušení tak sa nemôže aktivovať iné alebo to isté prerušenie bez toho aby si sa z prerušenia vrátil. Preto musí byť tá obsluha rýchla aby si bol opäť v stave obslúžiť ďalšie prerušenie. Ak nejaké prerušenie bude aktivované počas behu v prerušovacej rutine tak sa zapamätá v hw procesora a po návrate do hlavného programu sa toto zapamätané prerušenie začne obsluhovať.
Práve si si na MCU vyrobil jednoduchý dvojúlohový operačný systém. Popredie - hlavný program, pozadie - obsluhy prerušení.
Pozor ale na jednu vec ktorej si sa dopustil. V obsluhe prerušenia sú ďalšie obsluhy prerušení zakázané, čo je dobre. Existuje však možnosť ich povoliť, čo si urobil, a to je zle. Prečo je to zle? Aby prerušenie mohlo použiť časti procesora tak aby hlavný program neprišiel o jeho údaje, tak sa musia niekam odložiť. Odkladajú sa preto do zásobníka. Ak máš v prerušení aktivované znova prerušenie tak sa to všetko môže opakovať aj 200x a zásobník narastá a narastá až pretečie a je zle. Kedže to záleží len od konštelácie hviezd tak takého chyby majú náhodný charakter a prejavuje sa u nich generálsky efekt. Veľa krát som videl prezentovať prácu s MCU, ktorá autorovi fungovala ale pri prezentácii šalela ako besná.
Deaktiváciu obsluhy prerušenia nesmieš robiť lebo nevieš kedy ti tá udalosť príde. Rieši sa to pomocou nejakej globálnej volatilnej premennej ktorou sa synchronizuješ z prerušenia s hlavným programom. V podstate na to stači jeden bit nejakej char premenej.
Čo sa týka presnosti float tak nie je nejak úžasná. Jeden z mojich jobov bolo prepísanie fiškálneho modulu po nejakých C machroch. Totižto keď sumy prešli cez milión tak modul začal tratiť haliere a to sa daňovákom nepáčilo. Počítal som tam DPH, počítal som tam s hmotnosťou na 3 desatinné miesta ale float som tam vôbec nepotreboval.
Ešte platí také pravidlo že pokiaľ si v prerušení tak sa nemôže aktivovať iné alebo to isté prerušenie bez toho aby si sa z prerušenia vrátil. Preto musí byť tá obsluha rýchla aby si bol opäť v stave obslúžiť ďalšie prerušenie. Ak nejaké prerušenie bude aktivované počas behu v prerušovacej rutine tak sa zapamätá v hw procesora a po návrate do hlavného programu sa toto zapamätané prerušenie začne obsluhovať.
Práve si si na MCU vyrobil jednoduchý dvojúlohový operačný systém. Popredie - hlavný program, pozadie - obsluhy prerušení.
Pozor ale na jednu vec ktorej si sa dopustil. V obsluhe prerušenia sú ďalšie obsluhy prerušení zakázané, čo je dobre. Existuje však možnosť ich povoliť, čo si urobil, a to je zle. Prečo je to zle? Aby prerušenie mohlo použiť časti procesora tak aby hlavný program neprišiel o jeho údaje, tak sa musia niekam odložiť. Odkladajú sa preto do zásobníka. Ak máš v prerušení aktivované znova prerušenie tak sa to všetko môže opakovať aj 200x a zásobník narastá a narastá až pretečie a je zle. Kedže to záleží len od konštelácie hviezd tak takého chyby majú náhodný charakter a prejavuje sa u nich generálsky efekt. Veľa krát som videl prezentovať prácu s MCU, ktorá autorovi fungovala ale pri prezentácii šalela ako besná.
Deaktiváciu obsluhy prerušenia nesmieš robiť lebo nevieš kedy ti tá udalosť príde. Rieši sa to pomocou nejakej globálnej volatilnej premennej ktorou sa synchronizuješ z prerušenia s hlavným programom. V podstate na to stači jeden bit nejakej char premenej.
Čo sa týka presnosti float tak nie je nejak úžasná. Jeden z mojich jobov bolo prepísanie fiškálneho modulu po nejakých C machroch. Totižto keď sumy prešli cez milión tak modul začal tratiť haliere a to sa daňovákom nepáčilo. Počítal som tam DPH, počítal som tam s hmotnosťou na 3 desatinné miesta ale float som tam vôbec nepotreboval.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Externé prerušenie
ondrej78, čo je to podla teba presné číslo . Meranie na 0,1 nepotrebuje float
0
osvitka: http://tinyurl.com/7e58nul
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
pec: http://tinyurl.com/zr3gw8t
maska: http://tinyurl.com/hodwv79
leptanie: http://tinyurl.com/gpsgq6g
prekovy: http://tinyurl.com/zr48jn2
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok