Atmega8 OVF0addr Interrupt tritt nicht auf

OP #3624403
Lesenswert?

Also das Programmieren von µC ist noch ziemliches Neuland für mich und 
nun stehe ich grade vor einem Problem. Ich bin grade dabei mich ein 
wenig mit dem Timer zu beschäftigen und dazu habe ich mich mal an dieser 
Anleitung orientiert: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts

Nun hab ich einen kleinen Code zurecht gebastelt aber irgendwie hat das 
nicht so funktioniert, wie ich mir das vorgestellt habe, deshalb habe 
ich mir folgenden Code auf dieser Seite einfach mal ins AtmelStudio 
kopiert:
1
.include "m8def.inc"
2
 
3
.def temp = r16
4
.def leds = r17
5
 
6
.org 0x0000
7
        rjmp    main                  ; Reset Handler
8
.org OVF0addr
9
        rjmp    timer0_overflow       ; Timer Overflow Handler
10
 
11
main:
12
        ; Stackpointer initialisieren
13
        ldi     temp, HIGH(RAMEND)
14
        out     SPH, temp
15
        ldi     temp, LOW(RAMEND)     
16
        out     SPL, temp
17
 
18
        ldi     temp, 0xFF            ; Port B auf Ausgang
19
        out     DDRB, temp
20
 
21
        ldi     leds, 0xFF
22
 
23
        ldi     temp, (1<<CS00)       ; CS00 setzen: Teiler 1
24
        out     TCCR0, temp
25
 
26
        ldi     temp, (1<<TOIE0)      ; TOIE0: Interrupt bei Timer Overflow
27
        out     TIMSK, temp
28
 
29
        sei
30
 
31
loop:   rjmp    loop
32
 
33
timer0_overflow:                      ; Timer 0 Overflow Handler
34
        out     PORTB, leds
35
        com     leds
36
        reti

Allerdings gibt es da das Problem, dass beim Timer-Überlauf einfach 
nicht an die Interrupt-Adresse OVF0addr gespungen wird (weder im 
Simulator noch beim Test mit einem richtigen µC), hat möglicherweise 
jemand eine Idee, woran das liegen könnte?
Gast #3624427
Lesenswert?

Hi

>Allerdings gibt es da das Problem, dass beim Timer-Überlauf einfach
>nicht an die Interrupt-Adresse OVF0addr gespungen wird (weder im
>Simulator noch beim Test mit einem richtigen µC), hat möglicherweise
>jemand eine Idee, woran das liegen könnte?

Im Simulator vom 4er Studio funktioniert es problemlos.

MfG Spess
Gast #3624461
Lesenswert?

Naja, so einfach ist das alles nicht, dass Du die Flinte schon in's Korn 
werfen musst; sprich: Annehmen, das es schlicht nicht geht.

1. Es ist nicht unüblich, das gewisse Details im Simulator nicht 
funktionieren. Das war im AVRStudio 4 so und das wird auch in 6 so sein 
(das ich auch nicht benutze). Was das AVRStudio 6 betrifft, kann Du hier 
nur ein User helfen, der das auch benutzt. Aber es lohnt sich 
vielleicht doch, das Du mal genau schreibst, auf welche Weise Du 
feststellst, das es im Simulator nicht geht. Es kommt dann doch recht 
häufig vor, das Anfänger etwas erwarten, das so nicht geschieht.

2. Ein Code der im AVR 4 Simulator geht, wird sehr wahrscheinlich im 
echten Chip auch gehen. Dein Problem wird ganz andere Gründe haben. Zu 
allererst wieder die Frage, auf welche Weise Du feststellst, das es 
nicht geht. Falls Du ein für Dich wahrnehmbares Blinken erwartest, 
könnte es sein, das das ein Irrtum ist. Rechne mal die Blinkfrequenz 
aus.
OP #3624495
Lesenswert?

Peinlich peinlich... ich muss irgendwo einen Fehler in der Schaltung 
gehabt haben. Ich hab jetzt mal nur die Grundschaltung aufgebaut und da 
hat alles funktioniert und dann habe ich alles andere drumherum gebaut 
und siehe da, es funktioniert jetzt alles so wie es soll... Nur im 
Simulator funktioniert es immer noch nicht (der Timer zählt zwar, aber 
bei einem Overflow wird einfach nicht zum Interrupt gesprungen, obwohl 
das TOV0-Bit gesetzt wird) aber was solls... Meine Schaltung 
funktioniert jetzt.

Ich bedanke mich trotzdem für eure Anteilnahme.

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