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