napisalem sobie prosciutki programik... standard, czyli miganie LEDami, super efekt swietlny typu Knight Rider [; mniejsza o to. do zabawy wykorzystuje 2 timery - jeden odpowiada za rzeczy typu inkrementowanie / dekrementowanie pozycji lub lekka przerwa miedzy cyklami (zeby wygladalo realistycznie do bolu [; ). drugi robi za PWM softwareowy. i teraz puszczam sobie debuggowanie... dziala. zapauzuje w momencie gdy diodki leca w gore/w dol - dziala (znaczy sie po odpauzowaniu dziala nadal jak nalezy). natomiast problem pojawia sie, gdy zapauzuje go w momencie oczekiwania. ostatnie przerwanie od dekrementacji przelacza VIC na inne przerwanie i lekko zmienia konfig timera. kolejne przerwanie powinno wiec (i robi to normalnie!) przestawic timer spowrotem na standard i zmienic funkcje w VIC. problem jest tego rodzaju, ze jesli zapauzuje program DOKLADNIE w momencie miedzy tymi dwoma przerwaniami to po uruchomieniu ponownym przerwania juz nie dzialaja. podgladajac pamiec widze ze:
- przerwania sa aktywowane w VIC
- przerwania sa zgloszone do VIC
- VIC posiada stosowne adresy, zeby przerwania obsluzyc
- timery dzialaja i sa skonfigurowane jak nalezy
w momencie tego wlasnie oczekiwania program nie robi nic ciekawego: while(1);
co moze byc powodem tego zachowania? dodam, ze program sam sobie dziala jaknajbardziej poprawnie - bez pauzowania w tym konkretnym momencie wszystko smiga jak nalezy - zapauzowany w dowolnym innym momencie rowniez dziala po wznowieniu, natomiast w tym jednym akurat - nie. czy to kwestia ograniczen debuggera?
moge wrzucic kod, ale jak juz mowilem - bez pauzowania w tym momencie dziala wysmienicie i dowolnie dlugo.
0x41 0x56 0x45!!
- przerwania sa aktywowane w VIC
- przerwania sa zgloszone do VIC
- VIC posiada stosowne adresy, zeby przerwania obsluzyc
- timery dzialaja i sa skonfigurowane jak nalezy
w momencie tego wlasnie oczekiwania program nie robi nic ciekawego: while(1);
co moze byc powodem tego zachowania? dodam, ze program sam sobie dziala jaknajbardziej poprawnie - bez pauzowania w tym konkretnym momencie wszystko smiga jak nalezy - zapauzowany w dowolnym innym momencie rowniez dziala po wznowieniu, natomiast w tym jednym akurat - nie. czy to kwestia ograniczen debuggera?
moge wrzucic kod, ale jak juz mowilem - bez pauzowania w tym momencie dziala wysmienicie i dowolnie dlugo.
0x41 0x56 0x45!!