Hallo allerseits, ich, blutiger Anfänger, taste mich gerade mit einem Candip+Atmel ATmega 162 in Richtung PWM-Erzeugung. Mein Ziel ist es in Abhängigkeit einer gespeicherten Kennlinie einen kleinen Modellbauservo mit Pulsweitenmodulation anzusteuern. Führungsgröße soll hier die Drehzahl eines Verbrennungsmotors sein, die ich schon im MC habe. Das Programm für eine bestimmte PWM-Frequenz und ein festes Taktverhältnis habe ich schon geschrieben. Nun würde ich gerne wissen, wo und wie ich am besten meine Kennlinie (eindimensional, ca. 50 Werte) abspeichern kann. Ich habe von einem Bekannten gehört, dass man bei den ATMEL uC's unter ".dseg" prima etwas abspeichern kann. Leider kann ich das in meinem Handbuch bislang nicht finden. Auch weiss ich nicht, wie ich es managen soll, dass das Programm aus der eingespeisten Stellgröße die abgespeichterte Pulsweite ermittelt und dann an das Unterprogramm zur Erzeugung der eigentlich Pulssignale übergibt. Hilfe! Kann natürlich auch sein, dass es einen viel einfacheren Weg gibt und ich gleich was viel zu kompliziertes plane.... Ein kleiner Tip, Buch, Fachschrift oder auch was persönliches wäre ein Segen für mich. Klaus
Programmierst du in Assembler, Forth, Basic, C, Fortran, Cobol, Lisp oder Pascal? Olaf
In dem Falle kannst du deine Konstanten mit einer Assembler direktive direkt in dein Programm stellen, und dann indirekt adressieren. Ich kann dir nur leider kein Programmbeispiel zeigen weil ich die AVRs normalerweise in C programmiere und wenn schon in Assembler dann mit Arnolds Assemler, da will ich nichts falsches sagen. Lies dir mal die Anleitung zum Assembler durch. Da steht irgendwo was ueber .db, .dw oder .data Olaf
di hast also eine Messgröße, und abhaengig von der willst du diw Pulsweite deines Stellsignals verändern - hoffe das ist soweit richtig. Du brauchst nur den "Fast PWM Mode" (oder auch den normalen) je anch Frequenz die du haben willst, eines Timers starten, der selbigen unterstützt, und kannst dann in das Compare-Register einen Wert, abhängig von deiner Messgröße laden. dadurch veränderst du die Pulsweite des Ausgangssignals. mfg Buchmann
Hallo Micheal! Das ist schon soweit klar (PWM-Mode und Compare-Funktionen), nur die Umsetzung in einen Code läuft noch nicht so ganz, schätze mal, ich muss mich durch die harte Wurst des Datenblatts durchknabbern. Vielen Dank jedoch für alle Tips! Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.