Hallo!
für meine LED RGB Steuerung benötige ich 3 PWM Signale an meinem Atmega48.
Diese Signale gehen über einen 150Ohm Widerstand an das Gate eines N Channel logic Mosfet.
Source gegen Masse und bei Drain sitzt die LED, bzw. das LED Band gegen 12V.
Das funktioniert soweit auch.
Jetzt bin ich gerade am "Farben mischen" und habe festgestellt, das 2 PWM Signale nicht auf 0V gehen, obwohl das Register mit
0 geladen wurde!
Der Aufbau der 3 Signale ist identisch.
Hier der Code:
Hat jemand dazu einen Tip?
Das dritte Signal funktioniert wie es soll, beim drücken des Schalters wird das Signal eingeschaltet und dann jeweils inkrementiert.
Das Inkrementiere funktioniert bei den anderen auch bestens, nur starten diese nicht ganz bei 0, sondern ca. 0,2V.
für meine LED RGB Steuerung benötige ich 3 PWM Signale an meinem Atmega48.
Diese Signale gehen über einen 150Ohm Widerstand an das Gate eines N Channel logic Mosfet.
Source gegen Masse und bei Drain sitzt die LED, bzw. das LED Band gegen 12V.
Das funktioniert soweit auch.
Jetzt bin ich gerade am "Farben mischen" und habe festgestellt, das 2 PWM Signale nicht auf 0V gehen, obwohl das Register mit
0 geladen wurde!
Der Aufbau der 3 Signale ist identisch.
Hier der Code:
Code:
$regfile = "m48def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.1 , Rs = Portd.0
Config Lcd = 16 * 2 'configure lcd screen
Config Portc = Output 'LCD Display
'Config Portd = Output
Config Pind.5 = Output
Config Pind.6 = Output
Config Pinb.1 = Input
Config Pinb.2 = Output
Config Pind.3 = Output
Config Pinb.3 = Output
Config Pind.7 = Input
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Pind.4 = Input
Config Pind.2 = Input
Dim Green As Byte , Red As Byte , Blue As Byte
Initlcd 'init display again
Cursor On
Tccr0a = &B10100011
Tccr0b = &B00000010
Tccr1a = &B10100011
Tccr1b = &B00000010
Tccr2a = &B10100011
Tccr2b = &B00000010
Blue = 0
Green = 0
Red = 0
Cls
Main:
Cls
Do
Ocr0a = Red
Ocr1b = Blue
Ocr2b = Green
'Ocr2a = Pwm(5)
'Ocr0b = Pwm(2)
'Ocr1a = Pwm(3)
Debounce Pind.7 , 0 , Gren , Sub
Debounce Pind.4 , 0 , Grenminus , Sub
Debounce Pinb.6 , 0 , Rot , Sub
Debounce Pind.2 , 0 , Rotminus , Sub
Debounce Pinb.7 , 0 , Blau , Sub
Debounce Pinb.1 , 0 , Blauminus , Sub
' calling sub convert
Loop
Blauminus:
If Blue = 0 Then Return
Blue = Blue - 1
Locate 1 , 10
Lcd Blue
Return
Rotminus:
If Red = 0 Then Return
Red = Red - 1
Locate 1 , 5
Lcd Red
Return
Grenminus:
If Green = 0 Then Return
Green = Green - 1
Locate 1 , 1
Lcd Green
Return
Blau:
Blue = Blue + 1
Locate 1 , 10
Lcd Blue
If Blue > 255 Then
Blue = 0
Cls
End If
Return
Rot:
Red = Red + 1
Locate 1 , 5
Lcd Red
If Red > 255 Then
Red = 0
Cls
End If
Return
Gren:
Green = Green + 1
Locate 1 , 1
Lcd Green
If Green > 255 Then
Green = 0
Cls
End If
Return
Hat jemand dazu einen Tip?
Das dritte Signal funktioniert wie es soll, beim drücken des Schalters wird das Signal eingeschaltet und dann jeweils inkrementiert.
Das Inkrementiere funktioniert bei den anderen auch bestens, nur starten diese nicht ganz bei 0, sondern ca. 0,2V.