- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: Frequenzerzeugung mit Timer0

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    71
    Beiträge
    277
    Hallo,

    zum Einen hast Du zur Berchnung 40000 benutzt, das entspricht 20000 Hertz bei Toggle, zum Anderen berücksichtigst Du nicht, daß für das Sprigen in die ISR, das Pushen der Register und bis zum Abschluss des Beschreibens des Timers insgesamt über 40 Prozessortakte vergehen.

    Bei 4 MHz Prozessortakt und Timer0 wirst Du auf diese Art keine genauen 40kHz erreichen können. Timer1 und ein höherer Prozessortakt wären notwendig.

    Grüße
    Henrik

    Edit und PS:

    Zur Vervollständigung:
    Unter diesen Voraussetzungen komme ich z.B. auf recht genaue 50kHz.
    Die 50kHz deshalb um Dir etwas Reserven nach oben zu lassen.
    (siehe Oszilloskopschnappschuss im Anhang)

    Code:
    $regfile = "m32def.dat"
    $crystal = 7372800
    ...
    Config Timer1 = Timer , Prescale = 8
    On Timer1 Timer_irq Nosave
    ...
    ...
    Config Timer1 = Timer , Prescale = 1
    Timervorgabe = 65462 + 32          'für 100kHz bzw. 50kHz  bei Toggle
    
    '------------ händisches Registerretten --------
    Timer_irq:
    $asm
    push R24
    push R25
    push R26
    push R27
    push XH
    push XL
    in R24, SREG
    push R24
    $end Asm
    Timer1 = Timervorgabe
    Toggle Portb.0
    $asm
    pop R24
    Out Sreg , R24
    pop XL
    pop XH
    pop R27
    pop R26
    pop R25
    pop R24
    $end Asm
    Return
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken frequenzgen.gif  

Berechtigungen

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

Labornetzteil AliExpress