mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 1 sek


Autor: tus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jens Renner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Schilling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.