PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software PWM



bomberman_z
26.10.2008, 17:22
Hallo alle zusammen.
Also, ich habe vor kurzem ein Controler-Board gekauft um damit ein wenig rumzuspielen.
Habe mich dann für Bascom entschieden, weil mich das am ehesten an meine vorherigen Programmiersprachen erinnert bzw nicht all zu weit entfernt ist (C#, PHP etc).
Ich mache die ganze Zeit verschiedene kleine Projekte und es kommen natürlich immer wieder Probleme bei einem Anfänger wie mir vor.
Die meisten konnt ich lösen nur an diesem häng ich jetzt seit 2 Tagen.
Mein Problem ist es eine Software PWM zu programmieren, da ich im Internet absolut keine Anleitung oder Tutorial darüber finde.
Der Codeschnipsel im Bascom-Forum hat Fehler und ich kann ihn nicht kompilieren, zusätzlich verstehe ich davon garnichts :), da an Kommentare gespart wurde.

Ich möchte einfach 3 led's unabhängig von einander an 3 verschiedenen Ports dimmen.
Habe ein Mega32, der leider nur 2 Hardware PWM Kanäle hat.
Ich hoffe mir kann einer helfen ;)

Viele Grüße

bomberman_z
26.10.2008, 17:40
So :)
Habs selbst hinbekommen.
Für alle die Probleme damit haben setz ich mein Beispielcode für eine LED rein:



$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Dim Led(1) As Byte
Dim Pwmwert As Byte

Config Portb.0 = Output
Config Portb.2 = Output
Config Portb.4 = Output

Const On = 1
Const Off = 0

Config Timer0 = Timer , Prescale = 1

Start Timer0

On Timer0 Pwmroutine
Enable Timer0
Enable Interrupts

Led1 Alias Portb.0

Led(1) = 0
Do
Led(1) = Led(1) + 1
Waitms 6
Loop

Pwmroutine:
If Led(1) > Pwmwert Then
Led1 = 1
Else
Led1 = 0
End If
Incr Pwmwert
If Pwmwert > 255 Then Pwmwert = 0
Return

end

Besserwessi
26.10.2008, 18:14
Der Mega32 hat 4 mal Hardware PWM. Je einmal 8 Bit an Timer 0 und 2. Sowie 2 mal bis 16 Bit an Timer 1. Sonst ist das Programm so etwa die Standartmethode.

bomberman_z
26.10.2008, 20:37
Er hat aber nur 2 Pins oder sehe ich das falsch?

pyr0skull
26.10.2008, 22:24
Habe mich dann für Bascom entschieden, weil mich das am ehesten an meine vorherigen Programmiersprachen erinnert bzw nicht all zu weit entfernt ist (C#, PHP etc).

Also wenn du was in Richtung PHP oder C# haben möchtest würde sich eher C anbieten.. Dagegen ist die Syntax von Basic echt unschön.

bomberman_z
27.10.2008, 10:44
Naja das einzige was mich bei C an C# erinnert ist die Syntax, und die auch nur sehr entfernt. Naja und Basic ist eine einfach zu erlenende Programmiersprache.
Ich werde es mit C versuchen wenn ich ein wenig mehr in der Programmierung von Mikrocontrolern "drinnen" bin

lg

stefan_Z
27.10.2008, 12:55
Nein, der Mega32 hat 4 Hard-PWMs. Und die liegen auch alle an Pins an, sonst würds ja keinen Sinnmachen.

bomberman_z
27.10.2008, 16:54
Hm. Ich finde auf den Schaltplänen nur die beiden (PORT.D4 und PORT.D5 also OC1B und OC1A).
Gut möglich dass ich als Anfänger nicht weiß was die Portbezeichnungen sind bzw bedeuten ;)

Besserwessi
27.10.2008, 17:04
PB3 = OC0 ist PWM von Timer 0.
PD7 = OC2 ist PWM von Timer 2.
Den ersten Hinweiss findet man schon auf der ersten Seites des Datenbalttes., da steht explizit 4 PWM Kanäle. Für 4 Kanaäle braucht man dann aber auch alle 3 Timer.