Programmierung einer Zeitsteuerung mit AVR Atmega32

OP #1514089
Hallo zusammen,

Ich bin noch recht neu auf dem Gebiet Programmieren und habe daher vorab 
ein paar fragen, damit ich nicht gleich fehler bei meinem ersten 
Programm mache.

Gegeben ist ein Atmega32 welchen ich mit assambler programmieren soll.
Die aufgabe besteht darin einen Ausgang zu schalten welcher immer im 
gleichen Abstand ein High- und Low-Signal ausgibt. Diese Zeit sollte in 
gewisser m´ßen einstellbar sein. gegeben sind 1min ein/aus, 2min 
ein/aus, 3min ein/aus.

Meine überlegung ist es dass ganze mit dem Timer zu gestallen, ich lass 
den Timer durchlaufen und bei jedem Overflow erhöht er ein register um 1 
bis eben die zeit rum ist dass er den ausgang schlaten bzw. ausschaltet.
oder aber ich habe ein taster der durch drücken das vergleichsregister 
um 1 erhöht und einen der es verringert somit könnte ich z.B. in 30sek 
Schritten die Zeit sehr stark varieren lassen was ich besser fände. Das 
Bitmuster des vergleichregisters würde ich dann an 8 led ausgeben damit 
man sieht wie lange die zeit ist die man einstellt. Und zum schluss 
bräuchte ich nur noch einen Taster zum starten und einem um es zu 
stopen.

Hättet ihr eine besser Idee dies zu realisieren und 
verbesserungsvorschläge?

Weil ich bin mir meiner Sache nicht ganz sicher und bin um jeden raat 
froh.
Habe mich davor noch nie mit Timer usw beschäftigt.

Und zu letzt das ganze sollte noch vor Weihnachten fertig sein.... :(


Ich danke euch schonmal für euro Antworten
#1514101
> Gegeben ist ein Atmega32 welchen ich mit assembler programmieren soll.
richtig so! ;)

aber ich find einen atMEGA dafür übertrieben, ein attiny2313 oder so 
würde den job auch mehr als locker machen.

im grunde kommts drauf an was du willst. wenn der µC nichts weiter 
machen soll als diese zeitsteuerung kannst du alles in software machen. 
sprich du taktest das ding mit einem recht niedrigen takt, evtl. 1mhz. 
dann nimmst einen der timer und programmierst den so, daß du alle 
sekunde einen interrupt erhältst. von mir aus auch alle 5 oder 10 
sekunden, das verringert den zähler-aufwand bei längeren zeiten. dieser 
interrupt kann dir einen zähler inkrementieren, ganz stupide und nicht 
mehr - damit hast du eine stabile zeitbasis, quarzstabil sogar wenn es 
sein muß.

das hauptprogramm macht nun nichts weiter als den zähler auf null zu 
setzen und dann fortlaufend zu prüfen ob der zähler den sollwert für die 
eingestellte zeit erreicht hat. wenn ja -> weiter.

mehr isses nicht, das umfangreichste dabei ist wohl der timer, und ggf. 
das user-interface - aber da hast du genug pins wo man jumper 
anschließen und diese auslesen kann.

im grunde ist deine idee also richtig, ich würd wie gesagt nur einen 
kleineren AVR nehmen.
OP #1514115
bin ja froh dass meine Idde nichtz komplett falsch war.

Der Controller sol erstmal nicht anderes machen als das. Aber soll 
später für andere Zwecke auch verwendbar sein, natürlich durch ein neues 
Programm.
Daher der Quarz wohl nicht nur 1MHz haben sonder eher 8MHz oder ?

Hätte zufällig einer ein Programmbeispiel dass in die nähe dieser 
Aufgabe kommt?
#1514116
wenn du was größeres vorhast dann halte dich nicht an beispielen oder so 
fest sondern mach es selber. datenblatt raus, timer und 
interruptprogrammierung und ab gehts!

im prinzip geht jede frequenz die du willst, bei höherem takt brauchst 
du halt einen entsprechend höheren vorteiler oder endwert für deinen 
timer damit du deine zeitbasis von x sekunden bekommst.
#1515512
Hallo Andreas,

was heisst starten ??

Du kannst das Timer register auf Null setzten und somit "startet" der 
Timer von vorn, wenn du mit dem Tastendruck ebenfalls erst mit der 
Auswertung der Überläufe anfängst hast du ihn quasi Neugestartet.

Gruß

Dennis
#1515520
wenn du es interruptgesteuert machst kannst du zum deaktivieren einfach 
den entsprechenden interrupt abschalten. dann kann der zähler im 
hintergrund machen was er will, das programm interessiert es nicht bis 
du den interrupt wieder zuläßt. unmittelbar vor dem wiedereinschalten 
mußt du aber den zähler vom timer resetten, sonst stimmt das erste 
intervall nicht.
OP #1522053
Hi ich hab mein Programm jerzt fertig, bevor ich dass nun auf den atmega 
downloaden kann müsste ich ja noch dir fuse-/ lockbits setzten.
Meine frage ist wie ich dies machen muss ?

Benutzte einen externen crystal oscillator mit 8MHz.
Das Programm selbst muss nicht geschützt sein soll also auch auslesbar 
sein.


Wäre nett wenn ihr mir helfen könnten. Danke im vorraus.
Gast #1522083
>Meine frage ist wie ich dies machen muss ?

Was hast denn an den Erklärungen im Datenblatt Deines Controllers und im 
Manual Deiner Programmiersoftware nicht verstanden?
OP #1522403
Also ich habe es nun hinbekommen dass das Programm halbwegs läuft, meine 
Ausgänge schlaten so wie sie es sollen allerding habe ich an Port B 
Leds, diese leuchten aber nicht da an Port B sich die Pegel nicht 
verändern wie sie es sollten.

kann mir da einer helfen?
muss ich den A/D Wandler erst aussschalten oder ähnliches ?
#1522532
Andreas G. schrieb:
> Also ich habe es nun hinbekommen dass das Programm halbwegs läuft, meine
> Ausgänge schlaten so wie sie es sollen allerding habe ich an Port B
> Leds, diese leuchten aber nicht da an Port B sich die Pegel nicht
> verändern wie sie es sollten.

Dann wirst du wohl einen Fehler im (unbekannten) Programm haben

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.