mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89S4051 PWM


Autor: christian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo leute!

habe da ein verständnis problem beim erzeugen eines PWM für meinen 
AT89S4051! möchte über die PWM einen servo-regler ansteuern!
hab mir auch eine schaltung aufgebaut und die scheint zu funktionieren.
schreibe den code in C aber habe mit dem programmieren von µC nicht viel 
erfahrung!
damit ich auf die periodendauer von 20ms komme, wird der takt von 12MHz 
intern schon mal durch 2 gemindert somit ist ein zyklus rund 1µs!
dann lasse ich das TL0 register von 177 bis 255 zählen (dauer 78µs) und 
der overflow von TL0 inc. mir den TL1 um 1! somit erhalte ich eine 
periodendauer von 20ms. ich hoffe, dass ist bis hierhin noch richtig!

habe dann einfach die werte in mein programm übergeben!
siehe anhang!
da der T0 einen auto reload hat, müsste es doch so funktionieren...oder 
mache ich was falsch??
jedenfalls regelt der servo nur nach einer seite aus und will über die 
endposition hinaus!!

danke für eure hilfe!!
mfg
christian

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

soll das angehängte Programm die vollständige Version sein? Das wird 
im Leben nicht tun.

1. Die Timer sind nicht konfiguriert und auch nicht am timern.
2. Du gibst ja gar nix an den Ports aus.
3. Warum machst du das mit zwei Timern?

Gib mal noch n paar Infos (welcher Servo, usw.) dann kann dir auch 
besser geholfen werden.

Ralf

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt noch das TMOD- und TCON-Register setzen.

Das Atmel Datenblatt des AT889S4051 ist allerdings wirklich schlecht.
Du mußt noch das Hardwaremanual runterladen.


Peter

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es ist ein ACOMS servo, die zum steuern eines ferngesteuerten autos 
dienen!

zum programm:
hab das so im datenblatt verstanden, dass wenn ich das PWMEN bit im PCON 
register aktiviere, die timer von selbst konfiguiert werden!!
und ich nur mehr die werte für die register TL0, TH0, TL1 und TH1 
festlegen muss...hab ich das falsch verstanden??und ausgegeben wirds am 
port 3.5

vielen dank für die hilfe!
mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.