Pulsgenerator auf ATtiny24A

#4780595
Lesenswert?
• ▲
▼
Falls ein 4 us Puls auch OK ist würde ich das wohl so machen:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/sleep.h>
4

5
int main(void) {
6
    // init uC
7
    // clock prescaler auf 16 macht mit internem RC 500 kHz
8
    CLKPR = (1 << CLKPCE);
9
    CLKPR |= (1 << CLKPS2);
10
    // pwm config
11
    // pulsweite: 1/500 kHz * OCR1A = 4 us
12
    OCR1A = 2;
13
    // PWM Top: 1/500 kHz * IRC1 = 100 ms
14
    IRC1 = 50000;
15
    // Fast PWM Mode, non-invert, bis IRC1 zaehlen
16
    TCCR1A |= (1 << WGM11)|(1 << COM1A1);
17
    TCCR1B |= (1 << WGM13)|(1 << WGM12)|(1 << CS10);
18
    // sleepmode einstellen
19
    set_sleep_mode(SLEEP_MODE_IDLE);
20
    // interrupts on
21
    sei();
22
    for(;;) {
23
        // uC schlafen legen
24
        sleep_mode();
25
    }
26
}
Hab aber nicht geprüft ob's fehlerfrei ist.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.