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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren