Hallo, irgendwie stehe ich bei der Verwendung des Interrups und T/C0 beim AVR auf dem Schlauch. Vielleicht sieht jemand sofort, wo der Fehler in dem Miniprogramm liegt? Das Programm soll nichts weiter tun, als bei bei jedem Interrupt den Zähler count um eins zu erhöhen und das Ergebnis auf PORTC auszugeben. Das 'Hauptprogramm' ist einfach eine Endlosschleife. Auf den Pins PC0-PC7 sollten dann dementsprechend verschiedene Takte zu messen/hören sein. Der Timer T/C0 zählt den vorgeteilten Systemtakt jeweils von 0x00 bis 0xff und löst beim Überlauf den Interrupt aus. Je nach Einstellung des Vorteilers funktioniert das Ganze - oder auch nicht. Bis CK/64 geht es, bei größeren Teilern aber nicht. Hat jemand eine Idee, woran das liegen könnte? Einzig fällt mir noch ein, dass der Timer beim Verlassen der IRQ-Routine noch nicht weitergezählt hat. Wird dann unmittelbar die IRQ-Routine wieder angesprungen, bei noch irgendein IRQ-Flag steht? Jann-Gerrit
.include "8515def.inc"
.def status =r0 .def temp =r16 .def count =r17
;**** Anfang Reset- und IRQ-Vektoren ********************************* .CSEG .ORG 0x000 ;Vektoren rjmp RESET ;Reset Vektor und Programmstart nop ;IRQ0 nop ;IRQ1 nop ;Timer1 Capture nop ;Timer1 CompareA nop ;Timer1 CompareB nop ;Timer1 Overflow rjmp MILLIS ;Timer0 Overflow nop ;SPI nop ;UART RX nop ;UDR nop ;UART TX nop ;Analog Comparator ;**** Ende IRQ-Vektoren **********************************************
.CSEG .ORG 0x00c ;Programm
RESET: ldi temp,0x00 out PORTC,temp ldi temp,0xff out DDRC,temp ;PC0-PC7 als Ausgänge ldi temp,0x05 ;0x01 CK Bruchteil µC-Takt, ;0x02 CK/8 mit dem T/C0 ;0x03 CK/64 getriggert wird ;0x04 CK/256 ;0x05 CK/1024
out TCCR0,temp ;Vorteiler setzen ldi temp,0x00 out TCNT0,temp ldi temp,0x02 out TIMSK,temp ;enable T/C0 interrupts ldi temp,0x00 out GIMSK,temp ;keine externen Interrups sei ;enable global interrupts RUNEVER: rjmp RUNEVER
;**** T/C0 IRQ Routine **********************************************
MILLIS: in status,SREG ldi temp,0x00 out TCNT0,temp out PORTC,count inc count out SREG,status reti
---------------------------------------------------------------------------- Reply to Jann_Gerrit (auf) gmx.de