PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED 50 % an



wodka
28.12.2005, 16:34
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

Xaver
02.01.2006, 19:02
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, 19:31
..oder du arbeitest mit einer PWM.

wodka
05.01.2006, 07:26
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, 07: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.

wodka
05.01.2006, 08:37
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, 08: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

wodka
06.01.2006, 05:30
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, 06:24
http://dict.leo.org/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&relink=on&sectHdr=on&spellToler=on&search=toggle

mx3
06.01.2006, 09:06
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