Hallo Leute,
ich habe mal eine Frage:
Ich habe eine LED, die an einem ATmega168 mit einem Vorwiderstand angeschlossen ist und möchte diese von 100 % Leistung runterdimmen.
Dazu habe ich hier schon die Suchfunktion benutzt aber nicht wirklich was gefunden.
Dann habe ich bei mikrocontroller.net gesucht und einen Artikel für Assembler gefunden, aber der ist für den ATmega8 geschrieben:
(Quelle: http://www.mikrocontroller.net/artic...-Tutorial:_PWM)Code:.include "m8def.inc" .def temp = r16 .def PWMCount = r17 .def ocr_1 = r18 ; Helligkeitswert Led1: 0 .. 127 .def ocr_2 = r19 ; Helligkeitswert Led2: 0 .. 127 .def ocr_3 = r20 ; Helligkeitswert Led3: 0 .. 127 .def ocr_4 = r21 ; Helligkeitswert Led4: 0 .. 127 .def ocr_5 = r22 ; Helligkeitswert Led5: 0 .. 127 .def ocr_6 = r23 ; Helligkeitswert Led6: 0 .. 127 .org 0x0000 rjmp main ; Reset Handler .org OVF0addr rjmp timer0_overflow ; Timer Overflow Handler main: ldi temp, LOW(RAMEND) ; Stackpointer initialisieren out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ldi temp, 0xFF ; Port B auf Ausgang out DDRB, temp ldi ocr_1, 0 ldi ocr_2, 1 ldi ocr_3, 10 ldi ocr_4, 20 ldi ocr_5, 80 ldi ocr_6, 127 ldi temp, 0b00000001 ; CS00 setzen: Teiler 1 out TCCR0, temp ldi temp, 0b00000001 ; TOIE0: Interrupt bei Timer Overflow out TIMSK, temp sei loop: rjmp loop timer0_overflow: ; Timer 0 Overflow Handler inc PWMCount ; den PWM Zähler von 0 bis cpi PWMCount, 128 ; 127 zählen lassen brne WorkPWM clr PWMCount WorkPWM: ldi temp, 0b11000000 ; 0 .. Led an, 1 .. Led aus cp PWMCount, ocr_1 ; Ist der Grenzwert für Led 1 erreicht brlt OneOn ori temp, $01 OneOn: cp PWMCount, ocr_2 ; Ist der Grenzwert für Led 2 erreicht brlt TwoOn ori temp, $02 TwoOn: cp PWMCount, ocr_3 ; Ist der Grenzwert für Led 3 erreicht brlt ThreeOn ori temp, $04 ThreeOn:cp PWMCount, ocr_4 ; Ist der Grenzwert für Led 4 erreicht brlt FourOn ori temp, $08 FourOn: cp PWMCount, ocr_5 ; Ist der Grenzwert für Led 5 erreicht brlt FiveOn ori temp, $10 FiveOn: cp PWMCount, ocr_6 ; Ist der Grenzwert für Led 6 erreicht brlt SetBits ori temp, $20 SetBits: ; Die neue Bitbelegung am Port ausgeben out PORTB, temp reti
Da ich aber mit C arbeiten möchte hilft mir der Code nicht wahrlich weiter.
Ich würde mich freuen, wenn ihr mir Tipps geben könntet, die mir bei der Umsetzung helfen würden.
Danke im Voraus!







Zitieren

Lesezeichen