Probleme mit PWM

Gast #66229
Lesenswert?
• ▲
▼
Hallo,

Ich hab ein Problem mit der PWM, und zwar versuche ich schon seit 2
Tagen eine LED auf meinem Testboard mit halber Helligkeit brennen zu
lassen.
Da mir divers Codes aus dem Internet nicht wirklich weiter geholfen
haben, versuch ichs hier mal;-) Das Ziel wird es später sein über einen
BUZ 11 eine Halogenlampe zu dimmen.
So schwer kann das ja nicht sein, da der Timer1 ja eine "PWM
Betriebsart" hat, oder irre ich mich da?
Der Controller ist ein AT90S2313 und programmieren tu ich in Bascom.
Hilft mir da vielleicht Pulsout weiter?
Wär nett, wenn ihr mir weiter helfen könntet.
Mfg

Jörg Nitsche
Gast #66230
Lesenswert?
• ▲
▼
Sorry,
hab versehentlich mein Opera nicht aktualisiert, und dachte der erste
Beitrag sein nicht erschienen, und jetzt das ganze noch mal
geschrieben;-/ Wär gut wenn jemand dieses Thread wieder löschen könnt.

Jörg Nitsche
Gast #66231
Lesenswert?
• ▲
▼
hi,

wenn du einen timer mit pwm betriebsart hast würd' ich das auf jeden
fall vorziehen. der vorteil liegt im regelmässig ausgegebenen signal
für pwm. einen pulseout kannst du nur zwischen die anderen befehle
packen, hast du dann subroutinen, die z.b. strombegrenzung machen, hast
di in der zeit keinen pulseout. der nachteil am pwm liegt nur darin,
dass du mit dem ausgabeport ocr1x 'verheiratet' bist. der klare
vorteil liegt darin, dass dein signal immer ansteht.

beispeil:

config timer1 = pwm, pwm = 8, compare a pwm = cleaur up, prescale = 1
' ---------------
x=125                                     ' halbe leistung

do
   pwm1a = x
   if getadc(0) > 500 then gosub weniger  ' strom übersteigt wert x
loop

' ---------------
sub weniger
   if x > 0 then decr x                   ' leistung verringern
return

so gehts recht brauchbar, in sub's lässt sich die leistung
schön an jede anforderung anpassen

gruss, harry
Gast #66232
Lesenswert?
• ▲
▼
Hallo,

Danke für die schnelle Antwort, ich hab deinen Code mal angepasst, und
er siegt jetzt so aus

$regfile = "2313def.dat"
$crystal = 3686400


Dim X As Byte

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale =
1
' ---------------
X = 125                                        ' halbe leistung

do
   pwm1a = x
   if getadc(0) > 500 then gosub weniger  ' strom übersteigt wert x
loop

' ---------------
Declare Sub Weniger
   if x > 0 then decr x                   ' leistung verringern
returnso aus:

Bascom bringt jetzt immer noch den Fehler 101: Can`t find HW register.
Was bedeutet das?

Eins noch, welches ist den der PWM Port beim 90S2313, im Datenblatt hab
ich da komischerweiße nichts gefunden.
Mfg

Jörg
Gast #66233
Lesenswert?
• ▲
▼
der pwm-output beim 2313 ist PinB.3 (OC1). steht im datenblatt unter
Timer1 in pwm-mode beschrieben. wenn die zuweisung pwm1x nicht klappt
kannst du auch das register direkt angeben, statt pwm1x muss es dann
ocr1 oder ocr1a heissen, weiss ich im moment nicht ganz geneu, bischen
probieren. wenn's klemmt kann ich dir den code raussuchen, ich hab den
2313 mit pwmout schon eingesetzt.
gruss, harry

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.