Hallo!
ich bräuchte wohl hilfe bei der Fehlersuche....
Es geht dabei um die Helligkeitssteuerung einer LED mittels Pulsweitenmodulation(PWM), wobei die Pulsbreite per Poti verändert werden soll.
Problem: Es tut sich nichts... , die LED leuchtet nicht und ich weiß so langsam auch nicht mehr weiter :-/
Der Tansistor ist vom Typ BC547
Die Leuchtdiode ist eine superhelle, (Coninuous Forward Current If=50mA)
Poti = 47kOhm
Hier die Schaltung:
Bild hier
...und die vom Poti
Bild hier
So sieht die Platine aus.
Bild hier
Das ist das Programm womit ich die PWM und die Analogverarbeitung betreibe.
(siehe auch https://www.roboternetz.de/phpBB2/viewtopic.php?t=29280 )Code:;------------------------------------------------------------------------- ; Titel : Helligkeitssteuerung einer Leuchtdiode mittels PWM ;------------------------------------------------------------------------- ; Funktion : Mittels eines Potentiometers wird die Pulsbreite verändert, ; dadurch wird die LED dunkler bzw heller leuchten. ; Schaltung : PORTB1=LED-Rot, PORTC0=Pot1 ;------------------------------------------------------------------------- ; Prozessor : ATmega8 ; Takt : 3686400 Hz ;------------------------------------------------------------------------- .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 ;--- Interrupts erlauben --- sei ;--- Timer 0 initialisieren --- ldi r16,0b00000100 ; Teiler 1/256 out TCCR0,r16 ; Teiler+Modus schreiben ldi r16,0b01100000 ; Port, Referenzspannung und Auflösung out ADMUX,r16 ldi r16,0b11101101 ; Modus, Interrupt und Start out ADCSRA,r16 ;---------------------------------------------------------------------- ; PWM und ADC initialisieren rcall initPWM ;Schritt auf/ab rcall initADC ;------------------------------------------------------------------------ ; Hauptprogramm-Schleife ;------------------------------------------------------------------------ mainloop: wdr out OCR1AH,r27 out OCR1AL,r26 rjmp mainloop ; Sprung zum Beginn der Hauptprogrammschleife ;------------------------------------------------------------------------ ; UP: ADC initialisieren ; Beachte: Interrupt-Vektor "onADC" setzen ;------------------------------------ initADC: push r16 ldi r16,0 out ADMUX,r16 ; ADC Chanel ldi r25,0b11011101 out ADCSRA,r25 ; enable ADC, INT, start sei pop r16 ret ;------------------------------------ ; ISR: ADC initialisieren ; PA: r27:r26 10Bit, r25 8Bit onADC: cli in r26,ADCL in r27,ADCH asr r27 ror r26 asr r27 ror r26 mov r25,r26 sbi ADCSRA,6 sei reti ;------------------------------------------------------------------------ ; UP PWM initialisieren ; Parameter: keine ; PWM Chanel A Mode 1: 8-bit PWM, Phase-Correct, Clock/8 initPWM: push r16 sbi PORTB,1 ; PWM-Chanel A ldi r16,0b10000001 ; PWM-Mode out TCCR1A,r16 ldi r16,0b00000010 ; Vorteiler / PWM Frequenz out TCCR1B,r16 pop r16 ret ;------------------------------------------------------------------------
Als Hardware wird das AVR Testboard verwendet, daher auch die Ports, als Software myAVR Workpad... ich hoffe ihr habt eine Idee woran es liegen kann. Im Chat hat man mir geraten doch mal den Transistor auszulöten, es hat leider auch keinen Effekt gehabt.
Gruß Vashan







Zitieren

Lesezeichen