Forum: Mikrocontroller und Digitale Elektronik timer soft pwm und servos


von Sonke A. (soeni)


Lesenswert?

ich hab ein problem. und zwar möchte ich zwei servos steuern. an port b 
pin 1 und 2 eines atmega 8515 auf einem sdk500.

ich programmiere ihn in c.

ich hatte das mit -delay_ms(); ausprobiert, was auch funktioniert hat 
und wollte nun ans genaue einstellen gehen, wozu das nun nichtmehr 
ausreichte. timer ´hies die dewise. nun hab ich mich hier und überall 
durch tutorials gearbeitet ohne wirklich weiter zu kommen. in dem einen 
wird der code bis zur unkenntlichkeit optimiert damit belastungszeiten 
von untert 0,5% für den uC rauskommen, der andere steuert das ganze über 
den URAT aber ein einfacher gut kommentierter einstieg mit code konnte 
ich nicht finden. dabei versteht man (ich) doch sowas am besten


#define F_Takt 123  //mikrosekunden zwischen zwei interrupts
int main(){



xyz      // initialisierung des timers
wwqe     // Einstellung des Timers

funktion(){  // Funktion die bei einem Interrupt aufgerufen wird.

}

return 0;
}

danke schonmal im vorraus für eure hilfe.

PS: gibt es villeicht ein tutorial im umgang mit dem Datenblatt alle 
verweisen zum thema timer auf das datenblatt, da steht aber nur, dass 
man nicht nur den prozessortakt sondern auch einen prescaler verwenden 
kann, nur wie das geht steht da nicht.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Wie man den Timer und auch den Prescaler benutzt steht genaustens im 
Tutorial.

von Sonke A. (soeni)


Lesenswert?

in dem tutorial hier 
(http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR) 
kann ich nicht eine zeile code sehen, die den timer einleitet oder 
sonstwas mit ihm macht.

von Robin T. (rotoe) Benutzerseite


Lesenswert?


von Sonke A. (soeni)


Lesenswert?

das tutorial meinte ich doch, wo finde ich da quellcode???

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Da ist ne Menge Quellcode wo z.B. steht wie man Register und Bits setzt. 
Dann muss mann aus z.B.
1
ADMUX |= (1<<REFS1) | (1<<REFS0);
nur
1
TCCR1B |= (1<<CS10);
machen und fertig.
Was die Register bedeuten steht alles genasutens erklärt im Tuturial.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.