hi nochmals!
Habe gerade mit dem Codewizard etwas rumprobiert, (hab ihn vorher nie benutzt) und folgendes ist bei rausgekommen:
Ich habe mir beide Programme genau angeschaut, aber ich versteh einfach nicht wie ich das jetzt zusammen bekommen sollCode:;------------------------------------------------------------------------- ; Titel : Helligkeitssteuerung einer LED mit PWM ;------------------------------------------------------------------------- ; Funktion : ; Schaltung : PORTC0=Pot1, PORTB1=LED Rot ;------------------------------------------------------------------------- ; Prozessor : ATmega8 ; Takt : 3686400 Hz ; Sprache : ; Datum : 1.4.2007 ; Version : 1.0 ; Autor : ; Programmer: ; Port : ;------------------------------------------------------------------------- ; created by myAVR-CodeWizard ;------------------------------------------------------------------------- .include "avr.h" begin: rjmp main ; 1 POWER ON RESET reti ; 2 Int0-Interrupt reti ; 3 Int1-Interrupt reti ; 4 TC2 Compare Match reti ; 5 TC2 Overflow reti ; 6 TC1 Capture reti ; 7 TC1 Compare Match A reti ; 8 TC1 Compare Match B reti ; 9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete rjmp onADC ;15 ADC Wandlung komplett reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (I²C) Serial Interface reti ;19 Store Program Memory Ready ;------------------------------------------------------------------------ ; Initialisierungen ;------------------------------------------------------------------------ main: ;--- Stack Initialisierung --- ldi r16,hi8(RAMEND) out SPH,r16 ldi r16,lo8(RAMEND) out SPL,r16 ; Ports initialisieren sbi DDRB,1 ; PORTB1 auf Ausgang ;--- Timer 1 initialisieren --- ldi r16,0b00000010 ; Teiler 1/8 ori r16,0b00001000 ; Modus: Zählen bis Vergleichswert (WGM12=1) out TCCR1B,r16 ; Teiler+Modus schreiben (soll 50Hz sein) ldi r16,lo8(9216) ; Vergleichswert speichern ldi r17,hi8(9216) out OCR1AH,r17 out OCR1AL,r16 ldi r16,0b01100000 ; Port, Referenzspannung und Auflösung out ADMUX,r16 ldi r16,0b11101101 ; Modus, Interrupt und Start out ADCSRA,r16 ;--- Interrupts erlauben --- sei ;------------------------------------------------------------------------ ; Hauptprogramm-Schleife ;------------------------------------------------------------------------ mainloop: wdr ; ... rjmp mainloop ; Sprung zum Beginn der Hauptprogrammschleife ;-------------------------------------------------------------------- ; onADC - Interrupt bei ADC Wandlung komplett ;-------------------------------------------------------------------- onADC: push r16 ; Register retten push r17 push r18 push r19 in r16,SREG ; Statusregister retten push r16 ; Beginn der Ereignisbehandlung in r16,ADCH ; Einlesen des Analogwertes ;.....?? pop r16 ; Statusregister wiederherstellen out SREG,r16 pop r19 ; Register wiederherstellen pop r18 pop r17 pop r16 reti ;Rücksprung![]()
Meine Gedanken dazu bis jetzt wären wie folgt: Unter Mainloop würd ich jetzt ein "rcall initpwm" und dann unten dran
wenn das schonmal stimmt, dann frag ich mich aber wo ich denn den Analogwert, den ich ja umgewandelt (?) hab, hin muss????? Ich versteh wirklich nur Bahnhof im moment...Code:initPWM: push r16 sbi PORTB,1 ldi r16,0b10000001 out TCCR1A,r16 ldi r16,0b00000010 out TCCR1B,r16 pop r16 ret
*verwirrt*







Zitieren

Lesezeichen