Hallo! Kann mir jemand helfen? Ich möchte mit einem AVR AT90S2313 über einen L293D einen Motor langsam per Tasterdruck starten lassen, dann auf höchster Geschwindigkeit fahren lassen und dann nach Tasterdruck langsam wieder anhalten lassen. Kann mir jemand sagen, wie man das machen kann? Hat vielleicht jemand schon einen fertigen (ähnlichen) Quellcode geben? Da man ja keine Anhänge mehr beifügen kann, könnt ihr mir auch e-mails schicken! -> florians-c-e-r-page@onlinehome.de MFG, ################ Florian Wolling# ################
Such mal hier unter dem Stichwort PWM (Pulsweitenmodulation). Damit kannst Du einen Motor stufenlos regeln. Quellcode geistert hier auch irgendwo herum. Gruß, Frank
Ich habe jetzt einen Quellcode gefunden: ###################################################################### .include "8515def.inc" .def temp = r16 .def pwm = r17 .cseg .org $000 rjmp reset reset: rjmp init init: ldi temp,ramend out spl,temp ldi temp,high(ramend) out sph,temp ldi temp,0b11111111 out ddrd,temp out portb,temp ldi temp,0b10000001 out tccr1a,temp ldi temp,0 out ocr1ah,temp ldi temp,1 out ocr1al,temp ldi temp,0b00000001 out tccr1b,temp sei rjmp loop loop: ldi pwm,230 out ocr1al,pwm rjmp loop ###################################################################### Leider weiß ich nicht was die einzelnen Befehle machen und wo die Taktfrequenz eigestellt wird. Kann mir jemand helfen? Kann man anstatt des AT90S8515 auch einen AT90S2313 verwenden? Ist das Programm und die Taktfrequenz vom Quarz abhängig? Wie muss ich den Code verändern, um z.B. eine Frequenz von 1kHz zu erhalten? MFG, ################ Florian Wolling# ################
Wenn Du nicht weißt, was die einzelnen Befehle machen, gibts nur eins: Es erlernen. Nach Deiner letzten Aussage gehe ich davon aus, daß Du mit Controllern noch nicht sehr viel gemacht hast. Nun stellt sich die Frage, ob Du nur mal schnell dieses Projekt realisieren willst (dann sollte man das Ganze diskret aufbauen mit VCOs oder so) oder ob Du Dich in Zukunft ernsthaft mit Controllern beschäftigen willst. Wenn Du die Programmierung wirklich richtig lernen willst, nutzt es nichts, irgendwelche Codeschnipsel abzuschreiben, denn - wie Du schon bemerkt hast - man hat ohne Grundlagen keinen Durchstieg. Beim Einstieg in die Controllertechnik sollte man Schritt für Schritt vorgehen (aber nicht das Ziel - die Motorsteuerung verlieren). Steure erstmal ein paar LEDs an, beschäftige Dich mit Timern, verinnnerliche die Funktionsweise der PWM, dann klappts auch. Und vor allem: Du weißt, warum es funktioniert.
Hallo thkaiser! Ich möchte mich in Zukunft intensiv mit AVR's beschäftigen und ich beschäftige mich schon seit etwa 1/2 Jahr mit ihnen. Ich kann mit den I/O-Ports umgehen. Ich kann mit dem Stack umgehen. Jetzt möchte ich zur nächsten Stufe, dem Timer. Leider habe ich dazu noch nichts richtiges gefunden. Auf http://www.mikrocontroller.net und http://www.avr-asm-tutorial.net habe ich auch nichts zu Timern gefunden. Durch die Datenblätter steige ich auch nicht wirklich durch. Vielleicht opfert sich ja mal jemand und erzählt mir die Grundfunktionen und wie man den Timer startet und man mit ihm umgeht. Es wäre für mich schon ein großer Schritt und eine Große Hilfe wenn ich über den Timer eine LED zum blinken bringen kann. Bisher habe ich das immer ohne Timer gemacht. Danke für Eure Hilfe... MFG, ################ Florian Wolling# ################
Such mal im Codeforum nach Timer. Da wirste einiges an Beispielen finden. Ich habs auch nicht anders gelernt. Programm schrittweise durchgehen und im Datenblatt nachschauen für was die Register zuständig sind.
Hallo! Kann man so ein PWM-/Timer-Signal eigentlich an jedem Portpin eines AT90S2313 ausgeben? MFG, ################ Florian Wolling# ################
Im Prinzip ja. Möchte man auf die Hardware-PWM-Fähigkeiten des Controllers zugreifen, ist man auf den zugewiesenen Port-Pin beschränkt. Baut man ein Software-PWM auf (nur empfehlenswert, wenn der Controller nicht viel anderes zu tun hat), kann man sich die Port-Pins aussuchen. Man kann den 2313 rein theoretisch sogar so programmieren, daß alle Portpins ein PWM-Signal ausgeben - wofür auch immer das sinnvoll sein könnte. Ich nutze einen 2313 in einer Applikation mit 4 PWM-Ausgängen (steuert 4 Motoren).
Hallo thkaiser! Dankeschön für Deine Antwort. Wenn ich das alles richtig verstanden habe hat der 2313 zwei 8bit-Timer und einen 16bit-Timer, stimmt das? Welchen Namen hat dann welcher Timer? Welcher festgelegter Ausgang ist für welchen Timer? Stimmt das?: (T0) PD4 ist für 8bit-Timer 0 ??? (T1) PD5 ist für 8bit-Timer 1 ??? (OC1) PB3 ist für 16bit-Timer 2 ??? Dankeschön! MFG, ################ Florian Wolling# ################
Nein, der 2313 hat nur 2 Timer. Timer0 = 8-Bit Timer1 = 16-Bit Beide Timer haben noch die Möglichkeit, einen Vorteiler hinzuzuschalten. T0(PD4) und T1(PD5) sind alternative Eingänge für die Timer, aber üblicherweise versorgt man die Timer mit dem Systemtakt (somit sind PD4 und PD5 als normaler Port-Pin nutzbar). Nur der 16-Bit-Timer Timer1 kann als PWM-Quelle benutzt werden. Im Datenblatt ab Seite 35 wird beschrieben, wie dieser Modus genutzt werden kann. OC1 (PB3) ist im PWM-Modus dann der Ausgang.
Hallo thkaiser! Dankeschön für Deine Antworten! Jetzt habe ich das Prinzip endlich verstanden! ;-) MFG, ################ Florian Wolling# ################
Hallo thkaiser... >>Im Prinzip ja. >>M?chte man auf die Hardware-PWM-F?higkeiten des Controllers zugreifen, >>ist man auf den zugewiesenen Port-Pin beschr?nkt. Baut man ein >>Software-PWM auf (nur empfehlenswert, wenn der Controller nicht viel >>anderes zu tun hat), kann man sich die Port-Pins aussuchen. Man kann >>den 2313 rein theoretisch sogar so programmieren, daß alle Portpins ein >>PWM-Signal ausgeben - wofür auch immer das sinnvoll sein könnte. >>Ich nutze einen 2313 in einer Applikation mit 4 PWM-Ausgängen (steuert >>4 Motoren). ******************************************************** Kann man das Coding bekommen ??? meine email: guenter.lintzmeyer@planet-interkom.de im Voraus besten Dank Guenter
Ich wäre an dem Code auch interessiert! g florians-c-e-r-page@onlinehome.de MFG, ################ Florian Wolling# ################
Hallo Florian, wie misst du eigentlich die Umdrehungsgeschwindigkeit des Motors? Wenn du die Geschwindigkeit reproduzierbar Geschwindigkeitsrampen nachfahren willst, muss die Geschwindigkeit geregelt werden. Wenn du das nicht machst, hängt die Motordrehzahl von dem Lastmoment ab und der Motor verhält sich bei unterschiedlicher Last immer anders. Gruß Oliver
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.