-         

Ergebnis 1 bis 9 von 9

Thema: PWM auf pin schalten

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    41
    Beiträge
    402

    PWM auf pin schalten

    Anzeige

    Hallo habe folgendes mini prog um pwm zu testen
    um die funktion zu prüfen will ich eine LED angeschlossen an PINd.7
    synchron zum OC1a steuern

    PWM -Ausgang geht ,LED -Port hat 0V

    WARUM????

    Code:
    $regfile = "m168def.dat"                                    ' specify the used micro
    $crystal = 16000000                                         ' used crystal frequency
    $baud = 9600                                                ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 32                                               ' default use 10 for the SW stack
    $framesize = 64                                             ' default use 40 for the frame space
    
    Config Pind.7 = Output
    Config Pind.6 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
    
       Compare1a = 150
       Compare1b = 150
    
    Do
       Portd.7 = Portb.1
       Portd.6 = Portb.2
    Loop

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244
    also ich hab keine ahnung und übernehm kein gewehr das des richtig ist was ich sag.
    aber Portx=portx hört sich für mich ziemlich falsch an. Ich weis nicht genau was du damit sagen möchtest aber da fehlt sicher noch irgendein parameter. Ich weis aber nich was für einer.

    irgendetwas in der Art: ist aber so wie ich es geschrieben hab 100pro falsch
    Code:
    portx.level=porty.level

    Wei

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    41
    Beiträge
    402
    na nix für ungut kleiner ... aberdes ist wirklich 100pro falsch

    klingt led1=led2 auch falsch ??

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hi,

    versuchs doch mal mit

    Portd.7 = Pinb.1
    Portd.6 = Pinb.2

    Grüße

    Torsten

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244
    sry aber was soll den das heißen Porta = Portb

    da muss doch irgend ne wertig keit sein?

    ich kann ja nicht sagen das das die gleichen sind. weil ich hab ja immer noch 2 verschiedene!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Jo, Du bist ein wenig auf dem Holzweg.

    Portx ist 1 Byte breit und somit eine Wertigkeit von 0...255 Und natürlich kann man ein Byte in ein anderes schreiben, da bilden auch die Port´s keine Ausnahme.

    Will man auf einzelne Bit´s zugreifen, macht man das üblicherweise mit Portx.y beim Setzen und Pinx.y beim Abfragen, wobei y dann - entsprechend dem gewünschten Bit - von 0...7 geht.

    Die Port´s werden aus Bascom heraus mit ihrem Buchstaben angesprochen - also Porta, Portb, Portc... -> siehe Datenblatt des µC´s

    Etwas klarer jetzt?

    Grüße

    Torsten

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216
    Hi Molleonair,

    Hardware-PWM lässt sich natürlich nicht auf einen beliebigen Pin schalten, so kann das also nicht klappen. Du könntest eine völlig andere Lösung wählen, indem Du den Timer nicht für PWM, sondern als Timer mit fester Frequenz nutzt. Bei jedem Interrupt könntest Du so die PWM "zu Fuss" erzeugen. Das funktioniert dann eben mit jedem Pin und ist schnell genug.

    Ist vielleicht eine Alternative für Dich....

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244
    Ok^^
    Tut mir leid. Hab halt noch keine ahnung von Bascom

    aber ich lasse mich gerne eines besseren belehren

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    41
    Beiträge
    402
    @ruppi da hab ich auch schon drübernachgedacht....
    löst denn compare im PWM modus ein timer interupt aus dann könte ich den pin im timerint toggeln.

    wenn ich den timer als 8bit counter nutz müßt ich dann in der timerint das compare selbst machen mit einer 8bit schleifenvariable aber der timer int wird ja dann nur alle volle 8bit ausgelöst also müßt ich dann quasi den prescaler auf 1 Schalten um die gleiche PWM-Frequenz zu haben .

Berechtigungen

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