- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: Timer 2

  1. #21
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    697
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich habe mal mit einem Frequenzzähler und einem Oszilloskop gemessen: Ergebnisse an der D10 liegen zwischen 36000 und 36015 Hz. Passt also gut.

  2. #22
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.12.2006
    Ort
    Eberbach
    Beiträge
    199
    Zitat Zitat von ehenkes
    Ich habe mal mit einem Frequenzzähler und einem Oszilloskop gemessen:
    Danke!
    Ergebnisse an der D10 liegen zwischen 36000 und 36015 Hz.
    Das ist aber exakt, nicht so "krumme" Werte wie beim PiccoZ ...
    Gruß, Hermann.
    myIrAsuro.Bild hier  

  3. #23
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    sowas lässt sich halt mit einer pwm schön realisieren. allerdings ist das von der theorie her schon recht grenzwertig: im datenblatt wird exakt 36 khz angegeben, ohne speilraum. deshalb reagiert der asuro auch so allergisch darauf wenn am poti nicht 100%ig die richtige stellung gefunden wird.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #24
    Neuer Benutzer Öfters hier
    Registriert seit
    17.07.2009
    Beiträge
    7
    Im dem Lib v2.8rc1 ist OCR2 = 0x91(dezimal 145) . Der OCIE2 bit im TIMSK Register wird aber nicht gesetzt.


    Erstens brauchen wir diesen Wert in OCR2 immer noch?

    Zweitens für eine 36KHz Frequenz müssen wir doch 219Takte + 3Additions Takte = 222Takte zählen (wie beim Overflow Interuppt Enable). Wir zählen ja hier nur bis 145. Kann mir dass jemand vlt. erklären?

  5. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo AsuroNeu,
    auch dir erst einmal ein "Willkommen im Forum".

    Ich fange mal mit 'Zweitens' an.
    Der Timer zählt immer bis 255.

    Wenn der Timer bei dem numerischen Wert 145 angekommen ist passiert nur etwas.
    Dann nämlich wird durch die Initialisierung:
    TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20)

    -- WGM20 und WGM21 setzen den Timer in den "Fast PWM"-Mode
    -- COM20 und COM21 setzen im "Fast PWM"-Mode einen 'Output Compare Mode'
    ==>> auf 'Set OC2 on Compare Match, clear OC2 at TOP

    dieser 'Compare Match' ausgelöst.
    Verglichen wird der Zählerwert (0 bis 255) mit dem in OCR2 hinterlegten Wert 145.

    Somit zählt der Timer zwar natürlich auch bis zu dem numerischen Wert 145, aber er muss dafür nicht 145 mal takten.
    Schliesslich wird ja im Interrupt, wenn der numerische Timerwert also gerade von 255 auf 0 geht als erstes diese ominöse 37 auf die 0 addiert.
    Somit benötigt die Timerhardware nur 145 - 37 = 108 Takte um auf den numerischen Wert 145 zu kommen.
    Jetzt fehlen aber immer noch 3 Zeiteinheiten, um in die Mitte von deinen ausgerechneten 222 Takten zu gelangen.
    Diese 3 Zeiteinheiten vergehen aber schon 'von alleine' durch die Addition der 37.
    --> Und damit hätten wir nun 108 + 3 = 111 <== die Mitte

    Warum ist die Mitte relevant?

    In der Mitte wird über die Initialisierung auf:
    ==>> 'Set OC2 on Compare Match, clear OC2 at TOP

    eingestellt,
    dass Pin OC2 bei 'Compare Match' (145 in OCR2) gesetzt wird (5 Volt)
    dass Pin OC2 bei 'TOP' (numerischer Wert bei 255 angekommen) gelöscht wird (0 Volt)

    Und erst wenn beide 'Zählzeiten' abgelaufen sind haben wir eine volle Periode unseres Signals.


    Frage 'Erstens' ist damit wohl beantwortet. Ja, brauchen wir noch .

    Möglicherweise hilft dir auch dieser Erklärungsversuch etwas weiter. (Schau dort mal bei "Achtung: Es wird nun kompliziert, aber die Initialisierung ist hier das A und O." nach.)

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    17.07.2009
    Beiträge
    7
    Vielen Vielen Dank Sternthaler.

    Die Erklärung in dem anderen Thread war super. Jetzt verstehe ich auch warum wir nur bis 145 in OCR2 steht. Da die IR-LED mit 'duty cycle 50% bei 36KHz ' arbeiten.

    Deswegen brauchen wir auch den OCIE2 bit im TIMSK nicht setzen, da dieser kein ISR ist, sondern für IR-Kommunikation gebarucht wird.

    Danke nochmals.

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress