Atmel 2560 externe prerušenia a ich volanie v programe

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Jakubacek
Okoloidúci
Okoloidúci
Príspevky: 13
Dátum registrácie: 26 Feb 2016, 23:24

Atmel 2560 externe prerušenia a ich volanie v programe

Príspevok od používateľa Jakubacek » 22 Dec 2020, 21:33

Dobrý deň,

Pracujem na mojej Bc. práci, konkrétne 3f. plne riadený AC/AC menič (prostredníctvom striedy). Samozrejme riadenie je realizovane pomocou mikroprocesora, program mam napísaný a funkčný no len v simulačnom programe Proteus. Po nahratí programu do procesora a testovaní som zistil že sa funkčnosť nezhoduje so simuláciou.

Program som začal analyzovať a tak som sa dostal k prvému závažnému problému ktorého príčinu neviem zistiť taktiež ani jeho riešenie preto som sa rozhodol napísať tuna nakoľko si myslím že by sa spodobním problém už niekto z vás stretol a ak nie tak by sa niekto mohol inšpirovať aj mojim prípadom a prípadne sa vynúť do budúcna takémuto problému.

Popis činnosti: Pomocou tlačidla privedeného na INT0, sa aktivuje externe prerušenie kde sa nastaví na INT1 aktivácia externého prerušenia na dobehnú hranu signálu. Signál privádzaný na INT1 bude meniť s každou svojou dobežnou hranou stav výstupného pinu PH0.(toto je iba ilustračný príklad na vysvetlenie môjho problému)

Popis problému:Problém nastáva v tom že v simulácii sa po stačení tlačidla aktivuje príslušný pin až na prvú dobežanú hranu a pri dobežnej hrane sa zavolá prerušenie. V realite sa po stačení tlačidla zavolá prerušenie okamžite prerušenie a následne program už funguje ako sa očakávalo s každou dobežanou hranou mení stav príslušného pinu. Moja otázka znie prečo sa v realite nezavolá príslušný podprogram prerušenia až po detekcii dobežnej hrany ale okamžite po nastavení príslušnej detekcie hrany.....

Prikladám obrázky z Proteusu aj reálneho osciloskopu, program.

Vopred ďakujem za odpovede...
Prílohy
Osciloskop.PNG
Schema.PNG
main.cpp
(709 Bajtov) 77 stiahnutí
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Atmel 2560 externe prerušenia a ich volanie v programe

Príspevok od používateľa peterple » 22 Dec 2020, 22:46

Ako zvyčajne, odpoveď je v DS
When changing the ISCn bit, an interrupt can occur. Therefore, it is recommended to first
disable INTn by clearing its Interrupt Enable bit in the EIMSK Register. Then, the ISCn bit can be changed. Finally,
the INTn interrupt flag should be cleared by writing a logical one to its Interrupt Flag bit (INTFn) in the EIFR Register
before the interrupt is re-enabled.
https://ww1.microchip.com/downloads/en/ ... f#page=110
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Jakubacek
Okoloidúci
Okoloidúci
Príspevky: 13
Dátum registrácie: 26 Feb 2016, 23:24

Re: Atmel 2560 externe prerušenia a ich volanie v programe

Príspevok od používateľa Jakubacek » 22 Dec 2020, 23:16

Ďakujem, Vám za radu pomohlo to. Dokonca som našiel chybu v datasheet chybne označenie v registri.....
Prílohy
1.PNG
DS1Z_QuickPrint5.png
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok