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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.