Hallo Leute!
Ich fange gerade an meine ersten Sachen zu programmieren, allerdings kommt das STK500 das ich bestellt habe erst in einer Woche. Da ich allerdings trotzdem schon mal ein Programm schreiben will (bissi einlesen) habe ich gleich einmal mit LEDs angefangen. Was sicher jeder schon kennt is das ein und ausschalten. Ich habe allerdings noch eine kleine Erweiterung dazu, ich will das LED auch dimmen. Dazu verwende ich eine Hardware PWM. Da ich allerdings noch nie etwas damit gemacht habe, kenn ich mich quasi 0 aus.
Derzeit kann ich (glaube ich) nur eine bestimmte LED dimmen. Ich will das aber auch auf einen anderen eingang machen.
Wie kann man einstellen das man nicht den OCR0 Port als Ausgang für den Timer haben will, sondern PortB, 0?
Hier ist mein Assembler Code:
Ich weiß allerdings nicht warum ich für die PWM den Time0_OVF brauche, kann ich den auch weglassen?Code:.include "m16def.inc" .def temp = r16 .org 0x000 ; kommt ganz an den Anfang des Speichers rjmp main ; Interruptvektoren überspringen ; und zum Hauptprogramm rjmp EXT_INT0 ; IRQ0 Handler rjmp EXT_INT1 ; IRQ1 Handler reti ;TIM2_COMP reti ;TIM2_OVF reti ;TIM1_CAPT ; Timer1 Capture Handler reti ;TIM1_COMPA ; Timer1 CompareA Handler reti ;TIM1_COMPB ; Timer1 CompareB Handler reti ;TIM1_OVF ; Timer1 Overflow Handler rjmp TIM0_OVF ; Timer0 Overflow Handler reti ;SPI_STC ; SPI Transfer Complete Handler reti ;USART_RXC ; USART RX Complete Handler reti ;USART_DRE ; UDR Empty Handler reti ;USART_TXC ; USART TX Complete Handler reti ;ADC ; ADC Conversion Complete Interrupt Handler reti ;EE_RDY ; EEPROM Ready Handler reti ;ANA_COMP ; Analog Comparator Handler reti ;TWSI ; Two-wire Serial Interface Handler reti ;SPM_RDY ; Store Program Memory Ready Handler main: ;Stackpointer ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ;Aus/Eingänge ldi temp, 0x00 out DDRD, temp ;Eingang ldi temp, 0xFF out DDRB, temp ;Ausgang ;Interrupteingänge ldi temp, 0b00001001 ;INT0 und INT1 konfigurieren out MCUCR, temp ldi temp, 0b11000000 ;INT0 und INT1 aktivieren out GIMSK, temp ;PWM ldi temp, 0b01110010 ;Einstellungen siehe Seite 81-83 out TCCR0, temp ldi temp, 0b11111111 out OCR0, temp ;Stellt die Einschaltzeit ein (Alles gesetzte --> immer ein, alles aus --> immer aus) ;Interrupts freigeben sei ;Interrupts allgemein aktivieren Ende: jmp ende EXT_INT0: sbi PortB, 0 reti EXT_INT1: cbi PortB, 0 reti TIM0_OVF: reti
mfg Gerko







Zitieren

Lesezeichen