AVR-Studio4, Mainschleife und die totale Verwirrung

Gast #908208
Lesenswert?

Hi,

ich bin ziemlich neu im Thema Microcontroller, kenn mich aber mit c und 
anderen Sprachen ganz gut aus. Deshalb verirrt mich das Verhalten des 
AVR-Studio Simulators.

Meiner Meinung nach sollte das Programm (siehe anhang) ab while(1){} in 
einer Endlosschleife hängen, bis der Interrupt durch Timer1 erreicht 
Vergleichswert ausgelöst wird.

Wenn ich das Programm in Avr-Studio simuliere durchläuft er aber ständig 
die Main schleife und das while am ende scheint ihn nicht zu 
interessieren.

Funktioniert die logik auf nem micro irgendwie anders oder hat der 
Simularot nen schatten? (Wie soll man so den timer testen??)

Gruß
Mirco
Angehängte Dateien:
Gast #908217
Lesenswert?

Hat ich dcoh geschrieben, in der Endlosschleife hängen bleiben, bis der 
ISR auslöst, Der ist bei meiner version schon gefüllt, endlos viele if 
abfragen, deshabl hab ich das zum hochladen rausgeschmissen.
#908223
Lesenswert?

Mirco Blitz wrote:

> Wenn ich das Programm in Avr-Studio simuliere durchläuft er aber ständig
> die Main schleife und das while am ende scheint ihn nicht zu
> interessieren.

main() beginnt also wieder von vorne?

Wenn ja:

Das ist ein Hinweis darauf, dass du einen Interrupt freigegeben
hast, für den es keine ISR gibt.

Da du allerdings die entsprechenden Register mit Hexzahlen
beschreibst und ich zu faul bin da jetzt die einzelnen Bits
auseinander zu klamüsern um zu sehen, welche Interrupts du wirklich
freigibst, wirst du das wohl selbst übernehmen müssen.
#908224
Lesenswert?

Wenn du die Bits in den Steuerregistern in Hex-Notation definierst, 
statt deren Namen zu verwenden, muss jeder Leser zur Kontrolle erst 
umständlich die Bitpositionen einzeln mit dem Datasheet 
synchronisieren., um rauszukriegen was da passiert.

Die Aussichten, dass sich jemand das antut, sind eher gering.
Gast #908237
Lesenswert?

Offensichtilich habe ich Probleme mit den TimerRegistern, kann mir da 
mal jemand unter die Arme greifen, vielleicht raff ichs dann. Ich möchte 
das TIMER1 alle 625 CPU-zyklen auslöst und in die Unterfunktion springt.

(Mit dem 8-bit Timer und Overflow bekomm ichs hin, hier leider nicht)

Und ähm wie ausser als hex soll ichs denn notieren?

Gruß
Mirco
#908238
Lesenswert?

Andreas Kaiser wrote:
> Ach ja, eins ist auch so klar:
>   TIMSK = 0x0C;
> gibt 2 Interrupts frei, ich sehe aber nur eine ISR.

Und die hat auch noch den falschen Namen.
Zum Bit OCIE1B gehört wohl eher "TIMER1_COMPB_vect".

> Die Aussichten, dass sich jemand das antut, sind eher gering.

Naja, hatte das Datenblatt eh gerade offen. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren