Archiv verlassen und diese Seite im Standarddesign anzeigen : LED 50 % an
Hallo,
ich möchte mich gerne auch in die AVR Welt einarbeiten. Ich habe mir ein kleines Lauftlicht programmiert und es funktioniert soweit auch ganz gut.
Nur ich möchte noch ein Nachfadeeffekt! Was wäre denn die beste Möglichkeit dafür. Software - PWM mit einbauen !??? Nur leider bin ich noch nicht ganz so fit in PWM. Versteh nicht ganz den Unterschied wie ich in Bascom eine Software-PWM programmiere oder eine Hardware PWM. (Der Unterschied) Vielleicht könnt ihr mir ja bei meinem Problem auf die Sprünge helfen.
Hier mein Code:
$regfile = "m16def.dat"
$crystal = 1000000
Config Porta = Output
Porta = &B11111111
Dim A As Byte
Do
For A = 0 To 7
Porta.a = 0
Waitms 50
Porta.a = 1
Next A
Do
A = A - 1
Porta.a = 0
Waitms 50
Porta.a = 1
Loop Until A = 0
Loop
am einfachsten du setzt einen Elko zwischen Masse und der Spannung. Der läd sich wärend der einschaltfase auf, und wenn sie aus geht, gibt er noch etwas spannung ab, so dass ein nachleuten entsteht. So hatte ich das mal bei einem Blinklich gemacht
Rage_Empire
02.01.2006, 20:31
..oder du arbeitest mit einer PWM.
Brauch ich für eine Software-PWM eigentlich Timer0 u. Timer1, wenn ich nur eine LED einmal ganz aus, 50 % an und ganz an haben will ( mit taster) ??
Gibt es irgendwo für Software PWM eine Hilfe für Bascom...Ich kann es leider noch nicht unterscheiden wann es eine Software PWM od eine Hardware PWM ist ( von der Programmierung her)
Vielleicht bringt ihr mich ja auch auf die Sprünge
Schönen Gruß
sebastian.heyn
05.01.2006, 08:44
software-pwm wäre wenn du nen timer baust mit 5khz frequenz zB und dann in der timer-routine je nach bedingung
toggle portpin
ausführst - das hat den vorteil, dass du jeden port mit pwm versehen kannst, musst dir dann halt nen zähler einbauen, dass du impuls-pausenverhältniss andern kannst.
Das war Bahnhof für mich :-) Bin doch Newbie in Sachen µC.
Was macht genau Toggle, habe das aus der Bascom Hilfe nicht verstanden.
Könntest du mir nicht mal eben einen kleinen Code posten, womit eine Led circa 50 % Leuchtstärke hat..
sebastian.heyn
05.01.2006, 09:45
$regfile = "m16def.dat"
'Quarzfrequenz
$crystal = 16000000
'Hier wird der Timer und der Teiler festgelegt
Config Timer0 = Timer, Prescale = 64
On Timer0 Timer_irq
Const Timervorgabe = 206
config pinc.1 =output
Config Pinc.2 = Output
Led1 Alias Portc.1
led2 alias portc.2
disable Timer0
Enable Interrupts
Do
led1=1 'led 1 an
waitms 500
led2=1
enable timer0 'jetzt wird led1 50%leuchten
waitms 200
disable timer0
led1=0
waitms 300
'usw
Loop
end
'Dies ist der Programmteil, der in dem von ihnen gewählten
'Intervall aufgerufen wird
Timer_irq:
Timer0 = Timervorgabe
Toggle Led1
Return
das ganze ist nur theoretisch zusammengepappt - wenn du mehr leds hast must du dir hilfsbits machen
(dim h1 as bit)
und dann wenn led 1 50% leuchten soll musst du h1=1 und in der timer-routine if h1=1 then toggle led1
ja vielen Dank, das wollte ich wissen :-)
Nur eine Sache ist mir noch unklar. Was defniert bzw macht der Befehl
z.B. Toggle LED1
Gruß
Stefan
sebastian.heyn
06.01.2006, 07:24
http://dict.leo.org/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&relink=on§Hdr=on&spellToler=on&search=toggle
Hi!
Toggle Led1
schaltet Led1 von High auf Low(wenn auf High war)
oder
schaltet Led1 von Low auf High(wenn auf Low war)
also zb. von 0V auf 5V oder von 5V auf 0V
je nachden "Urzustand"
gruß,MX3
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.