C benötige avr tageszeitsimulation

checkbox

Neues Mitglied
30. Apr. 2011
3
0
0
Sprachen
Hallo, ich bin dabei ein Programm zu schreiben, in dem ich tageszyklen ablaufen lassen kann, mit lcd-zeitanzeige, in der ein tag 24 min. hat.
Hat jemand ein plan? oder guten link?
ich benutze übrigens einen atmega8.und programmiere in c.
 
Hi,

Hallo, ich bin dabei ein Programm zu schreiben, in dem ich tageszyklen ablaufen lassen kann, mit lcd-zeitanzeige, in der ein tag 24 min. hat.
Hat jemand ein plan? oder guten link?
ich benutze übrigens einen atmega8.und programmiere in c.
Hä ? 24h in 24 min ? Also *60 ?

Für was einen Link ?
- Ein fertiges Programm das irgendwas macht ?
- Timerprogrammierung ?
- Wie schließe ich ein Quarz an ?
- Wie kann ich den Mega8 auf 960MHz laufen lassen ?
- ...

En wenig mehr Infos wären schon klasse ...

Gruß
Dino
 
zeitsim.

also, ich will auf dem avr lcd-modul eine zeit laufen lassen, also stunden und minuten
wobei ein 24 minuten echtzeit, einen tag bedeuten.also 24 minuten ,eine stunde
bedeuten.
weiterhin möchte ich einen motor anschliessen, der zu bestimmten zeiten,
auf und zu fährt.
 
Ich weiss allerdings nicht, ob ich dazu ein externes quartz brauche, und die handhabung der timer macht mir auch noch Schwierigkeiten.
 
Hallo,

Ich weiss allerdings nicht, ob ich dazu ein externes quartz brauche, und die handhabung der timer macht mir auch noch Schwierigkeiten.
Den Mega8 kannst du mit dem internen Oszillator oder mit nem externen Quarz oder mit nem
externen Oszillator oder nem externen Keramikresonator oder nem externen RC-Glied laufen
lassen. Das wird dir jetzt aber wohl nicht wirklich weiter helfen ...

Im Moment verstehe ich nur Bahnhof. Grob als Vergleich ...

>> Ich will nen fahrbaren Untersatz bauen.

- Soll es einer mit 2 oder 4 Rädern werden ?
- soll es mit Pedalen oder Motor werden ?
- Soll es Elektro oder Benzinantrieb haben ?
- Soll es ne Ladefläche haben ?

Schreib doch einfach mal etwas genauer was du da machen willst.
Im Moment ist das eigentlich nur ein ungeheures rumgeeier. Und ne Glaskugel hab
ich leider grad nicht. Waren grad ausverkauft ;)

Gruß
Dino
 
Hi checkbox,

also ich versuch das noch mal zu interpretieren. Auch wenn ich immer noch nicht
so richtig weiß was du da genau wie und warum machen willst.

Auf jeden Fall solltest du da nen Quarz für verwenden weil es sonst ungenau und
unregelmäßig wird.

Am einfachsten ist es , wenn du dir nen paar Zählvariablen für Stunde, Minute, Sekunde,
Tag selber zusammenbaust und damit eine Uhr simulierst. Dann mußt du nur noch nen
Timer so einstellen das er dir im richtigen Rhythmus ne Serviceroutine anspringt, die dann
deine Sekunden jeweils um eine erhöht und die Überläufe von den einzelnen Zählern behandelt.

Soll das ne Fischertechnik Motor-irgendwasmach-Simulationsmaschine für ne Vorführung
werden oder was soll das geben ? Sorry ... aber ohne irgendwelche hilfreichen Infos was das
werden soll ist die Hilfe etwas kompliziert bis zu ... nicht zielführend.

Es ist immer etwas nervig wenn man Hilfesuchenden erst tagelang alle möglichen Infos aus der
Nase ziehen muß um dann festzustellen das man wegen den fehlenden Infos die ganzen Tage
voll am Ziel vorbei gearbeitet hat. Und dann fängt die Zeit auf eimal an zu drücken und es muß
alles ganz schnell und schon möglichst bis gestern fertig sein ...

Gruß
Dino
 
Hallo Checkbox,

willkommen im AVR-PRAXiS Forum.

Hast du schon mal ein Programm für einen Mikrocontroller geschrieben oder einen AVR Mikrocontroller programmiert?

Wenn nicht, würde ich mich zuerst mit zwei Sachen auseinandersetzen:

(1) Schreibe ein Grundprogramm, welches den logischen Zustand eines Portpins in einem bestimmten Zeitintervall ändert (LED toggeln). Du kannst erst mal als Systemtaktquelle den internen RC Oszillator verwenden, dieser ist von Werk aus eingestellt, brauchst also keine Fusebits ändern.

(2) Danach würde ich mit den Fusebits für die Systemtaktquelle aueinandersetzen (CKSEL3..0, SUT1..0, CKOPT, CKDIV8), so dass du einen Quarz (an XTAL2/1 Pins) verwenden kannst.

Einen speziellen Link zu deinem Problem habe ich nicht, es erscheint mir aber relativ einfach zu lösen. Voraussetzung ist allerdings, dass du nicht schon bei dem LED-Blink-Programm hängst.

Folgendes wird dir wahrscheinlich noch nicht besonders weiterhelfen, aber trotzdem schon mal der Hinweis auf eine mögliche Lösung:

  • Du konfiguriertst einen Timer und aktivierst den Timerinterrupt (Overflow oder Compare)
  • Die Timerinterruptroutine wird zyklisch aufgerufen, du hast hier also eine Zeitbasis. In der Interruptroutine verwendest du für Minuten und Stunden Zählvariablen, ggf. verwendest du zusätzlich noch eine weitere Variable, die du als Teiler nutzt, falls die Interruptroutine zu schnell aufgerufen wird.
  • Im Hauptprogramm fragst du permanent Minuten und Stunden ab und reagierst entsprechend drauf.
Die Zeitbasis kann man auch durch Pausen erzeugen (_delay_ms(zeit)), so dass du keinen Interrupt benötigst, dies halte ich aber nicht für sehr elegant und auch nur für kleine einfache Programme geeignet. Es könnte aber für dich schon ausreichen, es ist auch einfacher zu verstehen, zu lösen (Ausgabe auf einem LCD ist aber noch nicht berücksichtigt)

Vielleicht durchsuchst du auch mal unser Forum nach ein paar Stichworten.

Grüße,
Dirk
 
Hi
nun, so ganz habe ich den Sinn nicht verstanden. Zuerst hatte ich an einen Zeitraffer gedacht, aber die Aussage mit dem Motor widerspricht da etwas. Wenn du nur eine Zeitschaltuhr brauchst, dann kannst du einem Atmega sagen, er soll jede ms etwas schalten. Bei dieser Aufgabe gähnt er noch ausgiebig, auchz wenn du ihn mit 1 MHz betreibst....
Mit "C" denke ich mal, meinst du die Prgrammiersprache. Da kann ich dir leider nicht viel helfen, aber es ist ja im Prinzip kein Problem, eine verstandene Aufgabe in ein Programm umzusetzen. Vorgehensweise wäre folgende:
Mittels Timer beliebigen Impuls erzeugen. In meinen Programmen habe ich (fast) immer einen Interrupt alle msek. Sbrauche ich diese nur zu Zählen und kann davon jeden beliebigen Zeitimpuls erzeugen. Eine Hilfe bietet z.B. bei Mikrocontrolle.de die Tutorials. Vieleicht findest du hier Informationen die dir weiterhelfen.
Gruß oldmax
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)