1 sek

Gast #64583
Lesenswert?
• ▲
▼
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
Gast #64584
Lesenswert?
• ▲
▼
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?
Gast #64585
Lesenswert?
• ▲
▼
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.
Gast #64586
Lesenswert?
• ▲
▼
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
Gast #64587
Lesenswert?
• ▲
▼
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
Gast #64588
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren