Hallo Leute,
nach dem sich teslanikola sich bereit erklärt gestern seinen Nachmittag zu opfern, konnte mein Problem gelöst werden. Die Codes die ich oben gepostet habe, haben nicht viel mit einem normalen Timer zu tun, da sie mehr für PWM gedacht sind.
Ich danke allen die sich bei der Lösung des Problems beteiligt haben, aber vor allem teslanikola![]()
Ich hoffe den Code den ich anhänge kann jedem Helfen, der auch mit den Gleichen Problemen zu kämpfen hat wie ich![]()
mfG TimCode:;------------------------------------------------------------- ;-- -- ;-- Assembler-Code für einen 16Bit-Timer für den ATMega16 -- ;-- -- ;-- dieser Timer ist für eine Taktfrequenz von 1MHz -- ;-- ausgelegt ( interne Taktung des ATMega16 ) -- ;-- -- ;------------------------------------------------------------- .include"m16def.inc" ; Einbinden der Definitionsdatei .def tmp = r16 ; Festlegen des Arbeitsregisters .equ Timervorgabewert = 49911 ; Festlegung des Timervorgabewertes .list rjmp init .org OVF1addr rjmp Timerinterrupt ;-- Initalisierung ------------------------ init: ldi tmp, 0xFF out ddrb, tmp ldi tmp, high( ramend ) out sph, tmp ldi tmp, low( ramend ) out spl, tmp ldi tmp, 1<<CS11^1<<CS10 ; Festlegen des Teilers 64 out TCCR1B, tmp ldi tmp, high( Timervorgabewert ) ;Festlegen des Timervorgabewertes out tcnt1h, tmp ldi tmp, low( Timervorgabewert ) ;Festlegen des Timervorgabewertes out tcnt1l, tmp ldi tmp, 1<<TOIE1 out TIMSK, tmp ldi tmp, 0x00 out DDRD, tmp sei ;-- Hauptroutine ---------------- main: rjmp main ; Hauptroutine ausgeführt als Endlosschleife ;-- Timerinterruptroutine ------- Timerinterrupt: ;-- Erneute wertübergabe dan den Timer ldi tmp, high( Timervorgabewert ) ;Festlegen des Timervorgabewertes out tcnt1h, tmp ldi tmp, low( Timervorgabewert ) ;Festlegen des Timervorgabewertes out tcnt1l, tmp ;--- ;--------------------------------------- ;-- Hier kommt das rein was durch den -- ;-- Timer ausgelöster werden soll -- ;--------------------------------------- ;-- Beispiel: Veränderung einer LED sbis PinB,0 rjmp SetLED rjmp ResLED ;--- ;--------------------------------------- ;-- Unterroutinen für die LED-Veränderung -- ;-- Pin Setzen ----------------- SetLED: sbi PORTB,0 reti ;-- Pin Rücksetzen ------------- ResLED: cbi PORTB,0 reti







Zitieren

Lesezeichen