tiny26 timer interrupt schaltet port nur bis "reti"

OP #1556598
Lesenswert?

Hallo zusammen

Ich habe folgendes Problem bei dem ich nicht mehr weiterkommen, nicht 
mal einen Ansatz finde...
Ich habe einen ATtiny26 auf dem ich den Timer0 oder 1 (mit beiden schon 
getestet) benutze, als Testfall soll nur eine Led ein bzw. ausgeschaltet 
werden. Nun ist es aber so, dass der Port jeweils nur bis zum "reti" des 
isr umschaltet und danach in den alten Zustand zurück fällt. Hab ich mit 
einem Oszilloskop angeschaut.

Das gleich funktioniert aber beim Mega8 problemlos.

Hier noch das geschriebene, erwartet aber nicht zu viel, versuche mich 
noch nicht so lange darin.
1
.include "tn26def.inc"
2

3
.def temp1=r16
4

5
.org 0x0000
6
    rjmp main
7

8
.org OVF0addr
9
    rjmp tc0ovf
10

11
main:
12
    ldi temp1,RAMEND    ;Stackpointer initialisieren
13
    out SP,temp1
14

15
    ;;; PORTA als Ausgang
16
    ldi temp1, 0xFF
17
    out DDRB, temp1
18
    out PORTB, temp1
19

20
    ldi temp1, (1 << CS00) | (0 << CS01) | (1 << CS02) ;Vorteiler von 1024
21
    out TCCR0, temp1
22

23
    ldi temp1, (1 << TOIE1)
24
    out TIMSK, temp1
25

26
    sei
27

28
loop:
29
    rjmp loop
30

31
;;;
32
;;; Overflow Timer 0
33
tc0ovf:
34
    push temp1
35
    in temp1, sreg
36

37
    sbic PORTB,0
38
    rjmp clr_bit
39
    sbis PORTB,0
40
    rjmp set_bit
41

42
set_bit:
43
    sbi PORTB,0
44
    rjmp end_tc0_isr
45
clr_bit:
46
    cbi PORTB,0
47

48
end_tc0_isr:
49
    out sreg, temp1
50
    pop temp1
51
    reti

Neben hoffentlich nicht zu vielen anderen Fehlern, sieht jemand an was 
dieses zurückfallen des PortB, gleich nach "reti", liegt? Oder überseh 
ich etwas das beim Attiny26 vollkommen anders funktioniert als beim 
Mega8?

Bin für jede Hilfestellung dankbar.
beste grüsse
kurt
OP #1556735
Lesenswert?

Guten morgen zusammen

Ich sehs nicht mehr, ich hab die Aenderungen wie Gastofatz sie 
vorgeschlagen hat heute morgen kurz umgesetzt, was allerdings nichts mit 
dem eigentlichen Problem auf sich hat. Danach neu geschrieben und jetzt 
reagiert auch der Tiny26 richtig.
Ich kann den Fehler aber auch nicht mehr reproduzieren...
Hab jetzt das ganze wieder mit Timer1 gemacht und dann CTC hinzugefügt 
und das geht jetzt auch... ich weiss nicht was ich davon halten soll.

Das nächste mal fotographiere ich das Oszi bevor ich wieder was 
verändere...

@MWS Yep... das ist richtig, war allerdings nur ein Fehler hier.

danke für die Hilfe und gruss
kurt

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