Da ich von Countern noch nicht wirklich ahung habe und dies wohl noch etwas dauern wird habe ich die frage wie ich einfach jede sek in ein register schreibe. Meine idee, auch wenn wohl recht primitiv und umständlich: Angenommen ich habe 4 mhz : Kann ich dann 1:4 Mhz rechen, so weiß ich wie lange ein zyklus dauert, dann addiere ich alle befehle zusammen ( die dauer der zyklen kennt man ja ) und verbrate die restlichen zyklen bis an die grenze zur sekunde mit ner nop schleife. Wäre das mögl? muß ich auf irgendetwas bestimmtes achten ? thx
Hm, also möglich ist das schon. Wenn man allerdings annimt jeder befehl dauert 2 takte, dann brauch man für das Programm 2Mio befehle -> 2Mio. Byte, bedeutet ziemlich viel Speicherverschwendung. Welchen uC verwendest du?
Naja, eine Schleife würde es auch tun. Ist halt nicht elegant, und vor allem musst Du bedenken, dass der danach auszuführende Programmteil auch Zeit benötigt. Und wird der geändert, muss auch die Schleife angepasst werden. Also doch besser einen Timer verwenden.
ja danke, mich hat nur interessiert ob es in der Theorie funktioniert. Ich mach bis jetzt alles nur am rechner in der regel mim Atmega8. Bei den TImern blicke ich nicht wirklich durch zuviele, zu undurchsichtig und soviel esynonyme , hat evtl. jemmand nen exkurs oder irgend nen trick auf lager ! ? Grüße
Am bestem greifst Du Dir nen passenden Quarz z.B 7,3728 MHz sind gut geeignet. Dann benutzt Du die Timer-Baugruppe im MC z.B 8-bit. Möglich wäre folgende Cfg: CK/1024 einstellen (TCCR0 = 0x05),Int. einstellen --> so wird alle 7,3728 / 1024 = 1/7200 s ein Int. ausgelöst, ---> Verzweigung aus der Int.-Table in eine kleine Rountine ( Timer macht ja im Hintergrund weiter).... da einfach z.B über "DEC" den Teilerfaktor erniedrigen ( 7200/72 = hundertstel sec. ), dann einfach den "Nulldurchgang registrieren ,rücksetzen und ein anderes Register z.B von 100 runterzählen. Voilá... 1s ! Code kann ich für div. AT90XXXX gerne reinsetzen ... aber mit hilfe des Tuturials dürfte das kein Prob. sein. Falls du eine Lösung via Gatter realisieren möchtest nimmst du am besten einen Quarz aus einer Uhr ca. 32,xxx kHz ,das ganze funktioniert dann via Teiler , evtl. Komperatoren , Schiebereg. etc. äquivalent Dann könntest du auch den Takt an einen Pin des MC legen. Auch ein direkt angeschlossener Uhrenquarz z.B an T0,T1 (Pin1/Pin2 am 90S8515 )ist ne super einfache Lösung. Alle Rechtschreibfehler sind rechtlich geschützt. Also viel Erfolg MfG Kai
Der wohl beste Exkurs: Datenblatt deiner MCU . Falls Du lieber eine deutsche Übersetzung zur Hand nimmst ,schau Dir mal das AVR-RISC Mikrocontroller Buch vom W. Trampert an , ist quasi die Übersetzung.Außerdem findest Du im Forum ziemlich viele nützliche Treads und Code. Falls Du Probleme mit den Timerbaugruppen , deren Registern oder Ähnlichem hast , einfach mal das Datenblatt konsultieren oder frag jemanden der für Dich nachliest. Wenn Du auf dem Mega8 codest hilft Dir das Sheet ATMega8.pdf (gibts nat. auf der Atmel Seite ) bei den Register und Flag-Bezeichnungen weiter.Außerdem hat Atmel einige Standartapp´s wie z.B auch die Nutzung Timergruppen in einigen hilfreichen Beispielapplicationen anschaulich erläutert (ebenfalls auf obeniger page zu finden).Diese brauchen dann nur noch angepasst werden oder dienen als Ideenpool falls die MCU oder man selber mal irgenwo "hängt". MfG Kai
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.