- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Problem mit Config des Timer2 beim ATMega8 bzgl. PWM

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.04.2005
    Alter
    39
    Beiträge
    84

    Problem mit Config des Timer2 beim ATMega8 bzgl. PWM

    Anzeige

    Praxistest und DIY Projekte
    hi, sorry für die eventuell dumme frage aber bin absoluter neuling auf dem microcontroller-gebiet.

    ich nutze Bascom und habe mir ein proggi geschrieben, welches soweit im compiler auch als fehlerfrei angezeigt wird bis auf einen fehler in der config eines timer.

    die codezeile lautet wie folgt:
    Code:
    Config Timer2 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
    fehlermeldung dazu -> invalid parameters for CONFIG parameter or value ( 8 ); wenn ich da aber irgendeinen anderen wert einsetze kommt auch der selbe fehler

    nach dem wiki, datenblatt etc. ist diese definition aber richtig. timer2 hat ne 8bit pwm mit einem compare register und asl ausgang pin17 (PB3).

    ich habe nun ein wenig rumgedoktert und mal mit der tmer nummer rumgezaubert. undzwar habe ich noch einen timer welcher nen sekundentakt erzeugt.

    dieser code lautet zur zeit:
    Code:
    Config Timer1 = Timer , Prescale = 256                    
    Enable Timer1                                               
    On Timer1 Sekunden_reset                              
    Enable Interrupts
    Timer1 = 49911
    bei diesem timer ist laut compiler alles ok.

    nun habe ich den timer1 umbenannt zu timer0; und meine pwn von timer2 zu timer1.
    dann wird mir kein fehler angezeigt! aber das ist meiner meinung nach dann doppelt flasch, denn timer1 ist der andere pwm channel der 2 compare werte benötigen würde und timer0 ist KEIN 256bit breiter counter.

    und wenn ich den code simulieren will und "simulate timers" mitaktiviere spinnt alles völlig ab, das programmfenster zappelt dann dauernd nur in der isr-routine vom timer overflow rum obwohl er das nur alle 1sek tun sollte. (quarz 4mhz)

    sehr seltsame phänomene wie ich finde, wäre für hilfe wirklich sehr dankbar.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Wie kommst Du auf "PWM=8"?

    Laut Bascom-Hilfe gibt es folgende Ausprägungen für den PWM-Parameter von Timer 2:

    PWM = ON | OFF

    Damit frisst es der Compiler dann auch... \/

    Mit "Compare A Pwm" kann ich persönlich grade nichts anfangen beim Timer2, der hat nur ein Vergleichsregister (OCR2). Allerdings meckert der Compiler auch nicht.

    Wo soll der Unterschied zum normalerweise vorgesehenen "Compare PWM" sein?

    Viele Grüße

    Torsten

  3. #3
    Hallo,

    dies steht im Hilfemenü für Timer2, anscheinend must DU PWM erstmal ON|OFF schalten!?

    Gruß
    Asic

    Action
    Configure TIMER2.


    Syntax for the 8535
    CONFIG TIMER2 = TIMER | PWM , ASYNC=ON |OFF,
    PRESCALE = 1 | 8 | 32 | 64 | 128 | 256 | 1024 ,
    COMPARE = CLEAR | SET | TOGGLE I DISCONNECT ,
    PWM = ON | OFF ,
    COMPARE PWM = CLEAR UP| CLEAR DOWN | DISCONNECT ,
    CLEAR TIMER = 1|0

    Syntax for the M103
    CONFIG TIMER2 = COUNTER| TIMER | PWM ,
    EDGE= FALLING |RISING,

    PRESCALE = 1 | 8 | 64 | 256 | 1024 ,
    COMPARE = CLEAR | SET | TOGGLE I DISCONNECT ,
    PWM = ON | OFF ,
    COMPARE PWM = CLEAR UP| CLEAR DOWN | DISCONNECT ,
    CLEAR TIMER = 1|0

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    18.04.2005
    Alter
    39
    Beiträge
    84
    also das "compare pwm" habe ich aus der hilfe gehabt.
    vorher hatte ich "compare 1A" dort stehn. das pwm=8 kam aus der Bascom hilfe hier im forum, siehe link

    https://www.roboternetz.de/wissen/in...#Grundprogramm

    mit "= On" meckert er nun zumindest nicht mehr, aber wie groß ist nun die bitbreite in der er auflöst? muss meine tastfrequenz ja anteilig berechnen?!

    sorry, würde es ja auch einfach mal in real testen wollen aber mein AVR usw. sind/ist noch nicht da...

    gruß - tauruz

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Na komm, die Bascom-Hilfe ist in diesem Punkt doch leicht verständlich und auch eindeutig:

    "The TIMER2 is an 8 bit counter."

    Also, Timer2 hat ohnehin nur 8 Bit, daher gibt´s diese Einstellung auch nicht.
    Ocr2 akzeptiert somit Werte von 0...255, und das ist auch die Auflösung.

    Die Beispiele im Forum beziehen sich auf Timer1, der hat 16 Bit und zwei Compare-Register. Das ist schon ein leichter Unterschied...

    Viele Grüße

    Torsten

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    18.04.2005
    Alter
    39
    Beiträge
    84
    was meinst du denn nun immer mit ocr2 ?
    ich habe bisher nur die definition "compare1A = X" gefunden, diese besagt das tastverhältnis in X teile von 256 pro "periode".
    und dann brauch ich ja noch nen teiler irgendwo um dem kollegen pwm zu sagen, in welcher frequenz in teil der taktfrequenz des AVR er takten soll.

    wenn wir also die folgende definition des timers zugrunde legen täten

    CONFIG TIMER2 = TIMER | PWM , ASYNC=ON |OFF,
    PRESCALE = 1 | 8 | 32 | 64 | 128 | 256 | 1024 ,
    COMPARE = CLEAR | SET | TOGGLE I DISCONNECT ,
    PWM = ON | OFF ,
    COMPARE PWM = CLEAR UP| CLEAR DOWN | DISCONNECT ,
    CLEAR TIMER = 1|0

    und mein atmel läuft auf 4mhz. ich benötige eine periodenlänge von 20ms also 50hz pwm takt.

    das täte doch nun heissen ich müsse eigentlich alles in die tonne treten?!
    komme ja niemals auf 50hz... ich glaub denn mach ichs doch mit waittimes im proggi. ist net schlimm da die pwm eh nur in einem unterprogramm selten zum einsatz kommt.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hat was zu tun mit Hardware-PWM, die Du in Deinem Beispiel ja nutzen möchtest.

    OCR2 ist das (O)utput (C)ompare (R)egister des Timer2. Der zugehörige Pin (meist OC2) schaltet, wenn der Timer den Wert von OCR2 schneidet.

    Tipp mal OCR2 in die Bascom-Hilfe, und dann sag konkret, wo noch was unklar ist.

    Eigentlich musst Du Dir nur mal den Artikel verinnerlichen, aus dem Du den Codeschnipsel mit dem Timer1 gemopst hast, da steht alles Wissenswerte haarklein beschrieben!

    Schau Dir mal die Diagramme oberhalb des Codes an.

    Viele Grüße

    Torsten

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    18.04.2005
    Alter
    39
    Beiträge
    84
    jo habe es inzwischen verstanden, danke. mache es aber nun aus bestimmten akustischen gründen per software-pwm

    müsste nun noch einen festen text um eine variable erweitern also sowas wie "ServoX = 1" wobei der Text "Servo" fest ist und das X eben eine sich ständig verändernde variable darstellt. ( "= 1" ist eben auch fest).
    gibts da eine funktion welche eben an irgendwas, sei es variable oder auch wie bei mir fester test direkt eine variable anhängt? add var oder sowat??

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Schau Dir mal an, wie man Arrays deklariert.

    Dann kannst Du z. B. Variable(n)=1 zuweisen, wobei n auch variabel ist.

    Den Variablennamen "Servo" solltest Du aber lieber vermeiden, das ist ein reservierter Name in Bascom...

    Grüße

    Torsten

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    18.04.2005
    Alter
    39
    Beiträge
    84
    servo nicht? hm ok... zur zeit habe ich ja Servo1, Servo2 usw. damit gibbet scheinbar keine probleme.
    aber servo steht auch nicht in der reserved words list

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen