Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 11 17, 06:14. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
Sveiki, pradėjau aiškintis kaip veikia pertrauktys Atmegos'e.
Bandymam naudoju Atmega8. Kompiliatorius AVR-GCC,
Programoj specifinės esmės nėra, čia tik bandymai.
Ant PORTD pakabinti šviesos diodai.
while(1) cikle turi sumirksėt visi PORTD diodai 300ms intervalais, paskui įsijungt pertrauktis. Pertrauktyje sumirksėjus 5000ms intervalais vėl grįžt prie 300ms mirksėjimo. Bet grįžimas neįvyksta, visada pakimba pertraukty ir mirksi 5000ms intervalais.
Pažiūrėk kur uždarai visą sekciją Uždarai po while visą main programą ir tas interuptas jau būna kaip atskiras reikalas, nebegrįš į pradžią
Kalbu apie antrą fig. skliaustų porą. Perkelk po sei() pirmą ir antrą skliaustą( } ) į patį programos galą
klausimas į temą, tada kaip daryt pavyzdžiui signalizaciją, kai paveikiamas tarkim įėjimas, ir sirena turi rėkti kokia 10min, bet kiti įėjimai turi tiap pat būti stebimi, ir fiksuojami, jei bus paveikti? Tada stebėjimą dėti į interuptą, o uždelsimą programoj naudot?
Gali pagrindiniam while stebeti, gali naudoti timerio interuptus ir pan. Priklauso nuo taavo fantazijos ir situacijos Kuo daugiau skaitysi ir praktikuosi, tuo lengviau bus tokius sprendimus priimti
klausimas į temą, tada kaip daryt pavyzdžiui signalizaciją, kai paveikiamas tarkim įėjimas, ir sirena turi rėkti kokia 10min, bet kiti įėjimai turi tiap pat būti stebimi, ir fiksuojami, jei bus paveikti? Tada stebėjimą dėti į interuptą, o uždelsimą programoj naudot?
kadangi interupto kas 10min nepadarysi tai patogiausia darysi interrupta kas sekunde o paskui naugoti papildoma skaitliuka.
sakykim kievienas pertraukimas skaitliuka sumazina vienetu
ir jei skaitliuko reiksme didesne nei nulis sirena ijungiama jei lygi nuliui isjungiama.
tada is pagridines programos reikes uzduoti laika kiek sirena kauks ir jinai uztils automatiskai po nurodyto laiko
viskas gerai ten uzdaryta, tik per daznai inicializuojamas tas interuptas.
nereikia inicializacijos i cikla deti
kita problame, kad pertraukimo viduje deti 10 sek uzdelsima kazkaip absurdiska.
procesoriaus tiesiog pakibs
Bandysiu dėt ne į ciklą.
O patį sei() kišt į ciklą ar ne?
interrupte uždelsimai įdėti tam, kad būtų aiškesnis vaizdas bandymuose.
Ba1tuks rašo:
Pažiūrėk kur uždarai visą sekciją Uždarai po while visą main programą ir tas interuptas jau būna kaip atskiras reikalas, nebegrįš į pradžią
Kalbu apie antrą fig. skliaustų porą. Perkelk po sei() pirmą ir antrą skliaustą( } ) į patį programos galą
Gerai,tarkim interrupto programą įmetu į ciklą. Bet ar tada pats interruptas nebus eilinė ciklo nuoseklaus vykdymo dalis ir tiesiog viskas vyks visada ratu?
klausimas į temą, tada kaip daryt pavyzdžiui signalizaciją, kai paveikiamas tarkim įėjimas, ir sirena turi rėkti kokia 10min, bet kiti įėjimai turi tiap pat būti stebimi, ir fiksuojami, jei bus paveikti? Tada stebėjimą dėti į interuptą, o uždelsimą programoj naudot?
kadangi interupto kas 10min nepadarysi tai patogiausia darysi interrupta kas sekunde o paskui naugoti papildoma skaitliuka.
sakykim kievienas pertraukimas skaitliuka sumazina vienetu
ir jei skaitliuko reiksme didesne nei nulis sirena ijungiama jei lygi nuliui isjungiama.
tada is pagridines programos reikes uzduoti laika kiek sirena kauks ir jinai uztils automatiskai po nurodyto laiko
Va po tokių pamąstymų aš kažkodėl nebesuprantu interruptų pranašumo prie paprastas funkcijas...
interuuptai ir neturi turetu pranasumuu prie funkcijas ne jie ir yra funkcijos.
ju nauda yra tu funkciju paleidimo metodikoje.
sakykim paspaudus mygtuka reikia iykdyti kazkokia funkcija.
tai interruptas tiesiog hardwariskai tikrina ta mygtuka ir jam suveikus paleidzia tavo funkcija kuri atveju mygtuko tikrinimu reiketu rupintis paciam.
del tavo pogramos, sei() i cikla nedek
dek pries cikla.
bet kodel pakimba tai nelabai aisku.
paprastai problema buna kad interruptas vykdoms dazniau nei jo funkcija speja pasibaigti.
bet tavo atevju taip neturetu buti.
beje is kur zinai kad kazkas pakimba?
bes tavo atveju be sosilografo nelamai ka matysi
programa i porta D nuolatos irasines 0 it itk labai trumpam ten kartais atsras 0xff
LED net sumirgseti nespes
interuuptai ir neturi turetu pranasumuu prie funkcijas ne jie ir yra funkcijos.
ju nauda yra tu funkciju paleidimo metodikoje.
sakykim paspaudus mygtuka reikia iykdyti kazkokia funkcija.
tai interruptas tiesiog hardwariskai tikrina ta mygtuka ir jam suveikus paleidzia tavo funkcija kuri atveju mygtuko tikrinimu reiketu rupintis paciam.
del tavo pogramos, sei() i cikla nedek
dek pries cikla.
bet kodel pakimba tai nelabai aisku.
paprastai problema buna kad interruptas vykdoms dazniau nei jo funkcija speja pasibaigti.
bet tavo atevju taip neturetu buti.
beje is kur zinai kad kazkas pakimba?
bes tavo atveju be sosilografo nelamai ka matysi
programa i porta D nuolatos irasines 0 it itk labai trumpam ten kartais atsras 0xff
LED net sumirgseti nespes
Dabar LED'ai pastoviai žiba ir tik retkarčiais mirkteli.
Kodas perrašytas taip, kad interruptas uždega LED'us, o ciklo pirmas žingsnis yra LED užgesinimas ir 3000ms uždelsimas. Tokiu būdu tiksliai matosi, kad LED'ai niekada neužgesinami todėl, kad po sei() patenkami tiesiai į interuptą ir ten pakimba.
Manau tas trumpas mirktelėjimas yra skaitliuko užsipildymas ir nusinulinimas. Bet aš nesuprantu kodėl tas skaitliukas sukasi tik pertraukty.
Pagal interruptų koncepciją, po interupte parašyto kodo įvykdymo turėtų vykti tolesnis kodas, bet nevyksta.
Cia siaip....neismananciojo sapaliones...... ar nieks nepagalvojo, kiek trunka interuptas ir kitas ne interupte veiksmas) ?.....gal as ti sapalioju......cia juk svarbu laikas,.