vashan
04.04.2007, 15:36
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:
http://img99.imageshack.us/img99/6788/pwmprojekt01ek3.th.jpg (http://img99.imageshack.us/my.php?image=pwmprojekt01ek3.jpg)
...und die vom Poti
http://img113.imageshack.us/img113/5067/pwmprojekt02pz2.th.jpg (http://img113.imageshack.us/my.php?image=pwmprojekt02pz2.jpg)
So sieht die Platine aus.
http://img113.imageshack.us/img113/6808/dsc00247ox7.th.jpg (http://img113.imageshack.us/my.php?image=dsc00247ox7.jpg)
Das ist das Programm womit ich die PWM und die Analogverarbeitung betreibe.
;-------------------------------------------------------------------------
; 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
;------------------------------------------------------------------------
(siehe auch https://www.roboternetz.de/phpBB2/viewtopic.php?t=29280 )
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
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:
http://img99.imageshack.us/img99/6788/pwmprojekt01ek3.th.jpg (http://img99.imageshack.us/my.php?image=pwmprojekt01ek3.jpg)
...und die vom Poti
http://img113.imageshack.us/img113/5067/pwmprojekt02pz2.th.jpg (http://img113.imageshack.us/my.php?image=pwmprojekt02pz2.jpg)
So sieht die Platine aus.
http://img113.imageshack.us/img113/6808/dsc00247ox7.th.jpg (http://img113.imageshack.us/my.php?image=dsc00247ox7.jpg)
Das ist das Programm womit ich die PWM und die Analogverarbeitung betreibe.
;-------------------------------------------------------------------------
; 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
;------------------------------------------------------------------------
(siehe auch https://www.roboternetz.de/phpBB2/viewtopic.php?t=29280 )
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