-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Problem mit PWM

  1. #1

    Problem mit PWM

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo!

    Ich versuche gerade eine 3 Kanal PWM Steuerung für einem 12F629 mittels Mikrobasic aufzubauen, stoße dabei aber auf einige Probleme. Ich möchte die PWM über den Timer0 erzeugen und steuere zu Testzwecken LEDs an. Allerdings ist es völlig egal, welche Werte ich einstelle, es leuchtet nur die LED an GPIO2, die anderen glimmen leicht. Der Timer ist über einen 1:32 Teiler an den internen Takt gekoppelt. Ich hoffe jemand von euch kann mir helfen, ich probiere jetzt schon seit Stunden rum, finde den Fehler aber nicht. Ich denke das kleine Programm ist selbsterklärend. Vielen Dank im Voraus!

    Das Programm:

    program PWM

    dim rwert as byte
    dim gwert as byte
    dim bwert as byte

    main:
    TRISIO = 0
    OPTION_REG = %11010100

    start:
    rwert = 100
    gwert = 50
    bwert = 10

    pwm:
    TMR0 = 0
    gpio.0 = 1
    gpio.1 = 1
    gpio.2 = 1
    do
    select case TMR0
    case rwert
    gpio.0 = 0
    case gwert
    gpio.1 = 0
    case bwert
    gpio.2 = 0
    end select
    loop until TMR0 = 255
    goto pwm

    end.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Hallo,

    ich bin da nicht sicher (kenne nur 'C") aber ich glaube hier ist ein gedankenfehler

    die programm ausfuhrung und die Timer laufen unabhangig von einander

    so wenn dein Program
    loop until TMR0 = 255
    ausfuhrt steht die Timer zur Zeit auf eine beliebigen (undefinierten) Wert (konnte zufallig mahl ab und zu 255 sein)

    Mochte mann etwas geschehen lassen bei einem bestimmenten Timerwert dann sollten interrupts verwendet werden.

    Es konnte auch noch so sein dass dein Program doch richtig lauft aber mann muss sicher sein dass die Timer viel langsamer zahlt dann die Zeit wie eine 'loop' daurt.

    gruss

    Henk

  3. #3
    Hallo,

    Der Timer läuft langsamer als das Programm. Ich habe auch mal den Teiler vergrößert, dann müsste mehr als ausreichend Zeit für das Überprüfen des Wertes sein, aber selbst dann funktioniert es leider nicht.

    Hast du oder irgendjemand vielleicht eine andere Idee, wie ich eine PWM für 3 Kanäle aufbauen könnte? Für einen Kanal ist es ja kein Problem, da geht mein Programm sogar, aber mehrere Kanäle bereiten mir Probleme.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Hallo,

    gibt es nicht sowas (wie bei 'C') als 'end case'?

    • select case TMR0
      case rwert
      gpio.0 = 0
      'end case' <===???
      case gwert
      gpio.1 = 0
      'end case' <===???
      case bwert
      gpio.2 = 0
      'end case' <===???
      end select
      loop until TMR0 = 255
      goto pwm


    gruss

    Henk

  5. #5
    Hallo,

    nein, so etwas gibt es leider nicht. Trotzdem vielen Dank für deine Unterstützung. Ich habe hier im Forum vorhin einen Code für Bascom gefunden und ihn für den PIC übersetzt. Vom Prinzip her läuft das, aber da der PIC nur eine Millionen Zyklen pro Sekunde schafft ist es viel zu langsam.

    Wie kann ich denn sowas realisieren? Muss doch irgendwie gehen?

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Nimm einen Atmel (AtMega, dann klappts

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Machs einfach in Assembler!

    ps: wollt auch nur mal was sagen was Dir nicht weiter hilft

  8. #8
    Gast
    Versuch mal di timerabfrage nicht auf "=" sondern auf ">" zu ändern.
    Im Moment soll der Ausgang eingeschaltet werden, wenn TMR0=rwert ist.
    Du musst dann natürlich jeweils einzelne If-Abfragen verwenden. (Ich denke sowas gibts in Basic auch. Ich programiere normalerweise in 'C'.)

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2005
    Ort
    Sachsen
    Beiträge
    17
    Hallo...
    Ich beschäftige mich gerade mit einer RGB-Steuerung für LEDs...
    (ist sowas wie eine 3-Kanal-pseudo-PWM... klingt gut, oder?)
    Wenn noch interesse besteht.... (ich programmiere allerdings in C)

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.03.2005
    Beiträge
    386
    Zitat Zitat von lanpc5
    Hallo...
    Ich beschäftige mich gerade mit einer RGB-Steuerung für LEDs...
    (ist sowas wie eine 3-Kanal-pseudo-PWM... klingt gut, oder?)
    Wenn noch interesse besteht.... (ich programmiere allerdings in C)
    was versteht man unter 3-Kanal-pseudo PWM?
    Deine PWM-Schaltung würde mich schon interessieren. Was für Frequenzen sind da auf allen 3-Kanälen erreichbar?
    Gruss Robert

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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