Hallo Guten Nabend,
Ich steige von C auf Assembler um und verstehe hier was nicht.
Viele Tutorials gibt es zu Assembler AVR nicht, die nicht kopiert worden sind.
Ich habe alles ausprobiert was ich in irgendwelchen Anleitungen und Tutorials fand.
Die Interrupt Vectoren per .org, weglassen, mit reti, etwas gemischt....
Das Handbuch über den Atmega 8 sagt:
Genau dieser Zustand tritt auch in der Simulation von Atmel Studio 6.2 ein.When the SREG I-bit, TOIE0 (Timer/Counter0 Overflow
Interrupt Enable), and TOV0 are set (one), the Timer/Counter0 Overflow interrupt is executed.
Allerdings wird dann nicht die Routine ausgeführt, es wird nichts zurück gesetzt...
Ich komme mit den Tutorials und meinem eigenen Latein nicht mehr weiter und hoffe ihr könnt mich auf den rechten Pfad zurück bringen.
Mein Übungscode sieht wie folgt aus:
Code:.include "m8def.inc" rjmp main ; Reset Handler reti ; IRQ0 Handler reti ; IRQ1 Handler reti ; Timer2 Compare Handler reti ; Timer2 Overflow Handler reti ; Timer1 Capture Handler reti ; Timer1 CompareA Handler reti ; Timer1 CompareB Handler reti ; Timer1 Overflow Handler rjmp interrupt ; Timer0 Overflow Handler reti ; SPI Transfer Complete Handler reti ; USART RX Complete Handler reti ; UDR Empty Handler reti ; USART TX Complete Handler reti ; ADC Conversion Complete Handler reti ; EEPROM Ready Handler reti ; Analog Comparator Handler reti ; Two-wire Serial Interface Handler reti ; Store Program Memory Ready Handler main: ;Initializiere Stackpointer ldi r17, HIGH(RAMEND) out SPH, r17 ldi r17, LOW(RAMEND) out SPL, r17 sei ldi r17, 0xFF ;setze B als Ausgang out DDRB, r16 ldi r16, 0x01 ; setze Pin 1 als High. ldi r17, (1<<CS00) ; Setze Vorteiler out TCCR0, r16 ldi r17, (1<<TOIE0) ; Setze Overflow Interrupt out TIMSK, r16 loop: rjmp loop ; Ewiger Loop interrupt: out PORTB, r16 com r16 reti







Zitieren
Lesezeichen