- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 25

Thema: Motor PWM 19KHz?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #17
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich habe nun mal alle TCCR1A=0 entfernt und durch OCR1AL = 0; OCR1BL = 0; ersetzt und siehe da - der Bot bewegt sich - oh Wunder - sanft und ruhig.

    Nun frag ich mich.... warum rief der denn vorher überhaupt in dem Beispiel Example_05_Move_01 das TCCR1A=0 auf?
    Da steht ja nur drin: "Beweg dich langsam vorwärts (wobei er {beide RP6, die ich hab} da bei mir schon immer rückwärts anfuhr)".. also kein Richtungswechsel.. keine Speedänderung, kein Halten ...

    Und man kann einfach mit if(!TCCR1A) testen ob beide PWM Werte schon bei 0 angekommen sind (bei change direction).
    Das halte ich aber für ein dickes Gerücht.... ein gelesenes TCCR1A gibt aus was man als Config Bits reinschreibt - und keine Istwerte des Zählers. Im TCCR1A steht z.B. das Verhalten für COM1A1 und COM1B1 drin, also die Portpins bei Timerüber/unterlauf. Ferner steht da auch der PWM Mode drin....welcher sich zur Laufzeit niemals ändert. Ein TCCR1A kann also niemals 0 werden - egal wie der Status der PWM Counter ist. Ein OCR1AL = 0; OCR1BL = 0; sorgt eh dafür, das keine Impulse mehr rausgehen. Es ist nun wirklich nicht nötig, Änderungen im Dutycycle bei 10 bzw. 19 KHz PWM auf den aktuellen PWM Counter zu timen - wie du andeutest, Slyd. Der Code da in der ISR mit if(!TCCR1A) ist einfach nicht sinnvoll.
    Siehe Seite 107-109 im CPU-PDF.
    Ich vermute, da haben sich nur einfach ein paar Denkfehler in die bisherige Motorsteuerung eingeschlichen. Dies betrifft zumindest die lesende Nutzung des TCCR1A, sowie auch das mitten im Rollbetrieb scheinbar Konditionen entstehen, die dazu führen, das TCCR1A = 0 ausgeführt wird. Beides fällt in der alten Timerconfig halt nur nicht auf.

    Jetzt kann man natürlich mit dem schlagenden Argument kommen "funktioniert doch bisher" ... und ich füge an ... "irgendwie".
    Vielleicht wäre es wirklich mal an der Zeit, die RP6Lib zu überarbeiten. Nach TWI schon der 2. Problemkreis, der sich für mich auftut.
    Aber da ich ja eh das RTOS portieren will... *seufz
    Jedenfalls tuts jetzt die Idee mit TIMER1_OVF_vect, Timer0 ist frei und es kann los gehen mit RTOS, Danke noch mal an Radbruch für den Tip und alle beteiligten Leser fürs Mitdenken.
    LG Rolf
    Geändert von RolfD (29.08.2012 um 18:50 Uhr)
    Sind Sie auch ambivalent?

Ähnliche Themen

  1. RN-Motor I2C Kommunikation klappt, am Motor tut sich nichts
    Von hspecht74 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 1
    Letzter Beitrag: 24.11.2008, 13:04
  2. Antworten: 0
    Letzter Beitrag: 15.03.2008, 17:28
  3. 19khz-einstellung für motortreiber l293d auf dem rp6
    Von roboterheld im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 05.10.2007, 17:50

Berechtigungen

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

Solar Speicher und Akkus Tests