wie weit ist die pwm

Gast #3561939
Hallo,
ich habe bisher immer mit Arduino programmiert, was ich sehr einfach 
fande. Nun möchte ich aber ein kontroller einbauen und den dort lassen. 
Dafür wäre mir ein Arduino zu teuer. Daher habe ich einen Attiny45 
genommen.
Da ich das PRogrammieren mit den Controllern sehr schwierig finde, habe 
ich im Netz gesucht und bin auch fündig geworden
1
#define F_CPU 1000000UL
2
#include <stdlib.h>
3
#include <stdio.h>
4
#include <stdint.h>
5
#include <avr/io.h>
6
#include <util/delay.h>
7

8
void init_timer(){
9
  TCCR0A |= (1<<WGM00) | (1<<WGM01);
10
  TCCR0A |= (1<<COM0A1);
11
  TCCR0B |= (1<<CS00) | (1<<CS01);
12
  OCR0A = 0;
13
}
14

15
void init_servo(){
16
  DDRB |= (1<<PB0);
17
  PORTB &= ~(1<<PB0);
18
}
19

20
int main(){
21
  int i;
22
  init_servo();
23
  init_timer();
24
  while(1){
25
    for(i=5; i<40; i++) {
26
      OCR0A = i;
27
      _delay_ms(15);
28
    }
29
    for(i=40; i>5; i--) {
30
      OCR0A = i;
31
      _delay_ms(15);
32
    }
33
  }
34
  return 0;
35
}

dort lass ich mittels eines PWM-Signals einen Servo hin und her fahren.
Allerdings habe ich dazu noch zwei fragen.
Vorweg sei ncoh gesagt, dass ich mir das datenblatt zum kontroller 
angeseheen habe, aber nicht wirklich verstanden habe.

meine Fragen wären, woher weiss ich in der main-funktion, dass das 
PWM-Siganl an PB0 herauskommt? kommt es da überhaupt raus? PB0 ist halt 
der einzige deklarierte ausgang.
Die zweite Frage wäre, woher weiss ich, wie groß die PWM ist? und auf 
wie viel grad mein Servo fährt? (zweiteres könnte ich auch durch 
ausprobieren herausfinden.

Wäre nett, wenn mir jemand diese fragen beantworten könnte, aber bitte 
so, dass es ein leie (wie ich es bin) versteht.

recht herzlichen Dank
@ Hendrik (Gast)

>meine Fragen wären, woher weiss ich in der main-funktion, dass das
>PWM-Siganl an PB0 herauskommt? kommt es da überhaupt raus?

Steht im Datenblatt.

>Die zweite Frage wäre, woher weiss ich, wie groß die PWM ist?

Die schreibt dein Programm in das passende Register, hier OCR0A

> und auf wie viel grad mein Servo fährt?

Nominal geht das Steuersignal von 1ms (linker Anschlag), 1,5ms 
(Mittellage) bis 2ms (rechter Anschlag) Wieviel Grad das sind, ist von 
Servo zu Servo etwas anders.

Mein Tipp. Nimm lieber Timer 1 und OCR1A, damit bekommt man eine 
DEUTLICH bessere Auflösung der Ansteuerung!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.