-         

Ergebnis 1 bis 2 von 2

Thema: Verständnisfrage zu Timern (Atmega 8) und Delay

  1. #1

    Verständnisfrage zu Timern (Atmega 8) und Delay

    Anzeige

    Hallo zusammen.
    Es ist eine weile her das ich mich mit µC beschäftigt habe und es hat sich so manches aus dem Gedächtnis verabschieded.
    Zum Thema: Ich habe(oder werde haben) einen Atmega 8 der bei 16Mhz vor sich hin laufen soll. Wenn ich das der dokumentation richtig entnehme kann man bei den Timern mit einem Prescaler z.B. jeden 64. Takt auf den Pin ausgeben der diese Nummer trägt (D4, B6, B7?) ohne das man das im laufenden Programm nocheinmal anweisen muss.
    Jetzt möchte ich verschiedene Frequenzen ausgeben die leicht versetzt sind.
    z.B. 200kHz an PB6 und PB7, wobei PB7 z.B. die positive Flanke 1µs später hat. Wie würde man so was am dümmsten einstellen? Ich hätte jetzt mal vermutet das ich bein initialisieren des Timers PB7 20 CPU-Takte später einschalte als PB6?
    Ich würde mir dafür wohl eine Timer-funktion schreiben müssen mit der ich einzelne CPU-Takte abwarten kann?
    Danke schonmal für alle Anregungen

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.08.2009
    Beiträge
    103
    Hallo Grottenolm,

    einige Möglichkeiten von vielen:

    16 MHz + Prescaler 8 ergibt 2 MHz
    Für 200 kHz lässt du den Timer bis 10 zählen

    oder

    16 MHz + Prescaler 1
    Für 200 kHz lässt du den Timer bis 80 zählen

    danach entweder Normal Mode mit vorladen des Counterregisters oder CTC Modus mit Auslösen einer ISR, wenn 10 oder 80 erreicht.

    In der ISR:
    - wackle mit beliebigem Portpin
    oder
    -setze Jobflag
    oder
    -tue was auch immer
    warte 1µs mit delay oder nop (grundsätzlich in einer ISR nicht empfehlenswert!)
    -tue das, was du 1µs später tun willst

    mfg
    Walter

Berechtigungen

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