-         

Ergebnis 1 bis 9 von 9

Thema: Software PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2006
    Beiträge
    27

    Software PWM

    Anzeige

    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
    Geändert von bomberman_z (10.03.2011 um 19:59 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2006
    Beiträge
    27
    So
    Habs selbst hinbekommen.
    Für alle die Probleme damit haben setz ich mein Beispielcode für eine LED rein:

    Code:
    $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

  3. #3
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2006
    Beiträge
    27
    Er hat aber nur 2 Pins oder sehe ich das falsch?

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.06.2008
    Ort
    Rösrath
    Alter
    33
    Beiträge
    332

    Re: Software PWM

    Zitat Zitat von ziganow
    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.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2006
    Beiträge
    27
    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

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Nein, der Mega32 hat 4 Hard-PWMs. Und die liegen auch alle an Pins an, sonst würds ja keinen Sinnmachen.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2006
    Beiträge
    27
    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

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •