Hallo zusammen, ich programmiere einen LCD Display mit einem ATmega32 und benutze den ICCAVR compiler. Soweit ist alles in Ordnung und funktioniert schon das Schreiben... Möchte aber jetzt die Zeit auf dem Display anzeigen und diese dann in sekunden takt runter zählen... Bedeutet, wenn ich jetzt zum bsp 00:20 eingestellt habe, soll diese Zeit dann in sekunden runter gezählt werden 00:19 00:18..... Hat jemand eine Idee, wie ich das realisieren kann? Bin nicht sooo fit in der Programmierung!
hast du schon mal folgende Geschichten programmiert: - Ausgabe beliebiger Zeichen auf einem Display - Timerfunktionen ja: dann ist das ja kein Problem nein: dann fang mal mit den Grundlagen an, dann das Display und wenn du die Anzeige bedienen kannst dann mach dir an die Timerfunktionen und bau das zusammen
Man nehme einen Timer und stelle ihn so ein, dass er im Sekundentakt oder in Vielfachen dessen einen Interrupt erzeugt. In der Interrupt-Service-Routine setzt man dann ein Flag. Dieses Flag wird in der Hauptschleife abgefragt. Ist es nicht gesetzt, braucht nichts weiter passieren. Ist es gesetzt, dann zählt man die Sekunden-Variable herunter, aktualisiert das Display und löscht das Flag. Dann wartet man wieder auf das Flag...
>Bedeutet, wenn ich jetzt zum bsp 00:20 eingestellt habe, soll diese >Zeit dann in sekunden runter gezählt werden 00:19 00:18..... nimm lieber 1 Minute, dann kanst du noch weiter wegrennen bis es knallt. ;-) Deine Sekundenvariable zerteilst du in Minuten ,10 Sekundenanteile ,1 Sekundenanteile und gibst diese als Zeichen auf das Display aus.
hat jemand einen beispielprogramm wo einen ähnlichen Problem gelöst wird?
> hat jemand einen beispielprogramm wo einen ähnlichen Problem gelöst > wird? Ja, aber es wird dir nicht gefallen, denn es zählt nicht runter (bis zum großen Bumm), sondern hoch. Es benutzt auch nicht den ICCAVR-Compiler. http://www.hanneslux.de/avr/stopuhr/index.html ...
Nun, ja. Das sind eigentlich Grundlagen. Die solltest du schon alleine hinkriegen. Zumindest solltest du es versuchen. Fang mal damit an, eine einzelne LED im Sekundentakt blinken zu lassen. Das ist dein Einstieg. Dann sollte es nicht weiter schwer sein: Anstatt die LED einzuschalten, zaehlst du eine Vaiable herunter Wenn die Variable heruntergezählt wird, aktualiserst du noch das Display und bist fertig. Das schwierigste ist aber den 1-Sekunden Takt hinzukriegen. Damit musst du anfangen. (Keine Angst: soooo schwer ist das auch wieder nicht). Wenn du konkrete Probleme hast, wie zb. Wie funktioniert XYZ, dann wird dir sicher auch wer helfen. Aber so einen Rundumschlag, ala: "Ich möchte ABC machen hab aber keine Ahnung. Helft mir!" ist selten in einem Forum zielführend.
Hi Hanne es hilft nicht weiter, da es in assembler ist :-) ich programmiere in C
Hallo Gabriel, ich bin auch noch ein "Frischling" auf dem Gebiet der AVR Programmierung. Deshalb masse ich mir mal an, folgendes zu schreiben: Schau mal mit der Suchfunktion durch das Forum und suche da nach Fleury, HD44780 (Wenn Dein Display einen solchen Controller hat), Timer, ... Du wirst staunen, was Du da findest... Wenn Du dann mal in Google nach der Peter Fleury LCD-Bibliothek suchst, dann wirst Du staunen, wie einfach das ist, ein LCD zu steuern. Solltest Du dann noch Probleme haben, wie man einen Algorhitmus (bei falscher Schreibweise, bitte nicht hauen) entwickelt, der die Zeit rückwärts zählt und den dann in C umzusetzen, dann mach es wie ich, als ich mit dem AVR-Programmieren angefangen habe: Bücher lesen, Googlen, Forensuche benutzen. Das bringt Dir wirklich mehr, als wenn Du hier von jemandem einen fertigen Code bekommst. Ich kann Dir da auch nicht helfen, aber es ist eine schöne Aufgabe, die ich mir wohl auch mal in einer oder zwei ruhigen Stunden vornehmen werde. So, nun kannst Du auf mir rumhacken. Michael
> es hilft nicht weiter, da es in assembler ist :-) Das war mir von Anfang an klar :) > ich programmiere in C Ich befürchte, dass du "Programmieren" mit "Kopieren" verwechselst. Falls ich mich irren sollte, kannst du mich/uns gerne vom Gegenteil überzeugen. ...
Vervielfältigst du deine Programme nicht auch, indem du deine Controller auf einen Kopierer legst? Mit Disketten und Festplatten geht das auch. Disketten kann man auch 1-A faxen, wenn man sie aus der Hülle nimmt...
> Solltest Du dann noch Probleme haben, ... der die Zeit > rückwärts zählt und den dann in C umzusetzen, dann mach > es wie ich, als ich mit dem AVR-Programmieren angefangen habe: > Bücher lesen, Googlen, Forensuche benutzen. Grade am Anfang reicht es auch sich ganz einfach hinzusetzen und mal zu überlegen: Wie würde ich das machen, wenn ich nur Papier und Bleistift zur Verfügung habe. Eine Zeit rückwärts zu zählen ist eigentlich ganz einfach: Zieh von der aktuellen Zeit 1 Sekunde ab. Ist dadurch eine Sekundenzahl von -1 entstanden Ja: Zieh von den Minuten 1 ab und fang bei den Sekunden wieder bei 59 an. Sind dadurch -1 Minuten entstanden Ja: Zieh von den Stunden 1 ab. Jeder Mensch im westlichen Kulturkreis kann das ohne groß darüber nachzudenken und macht es richtig. Beim Entwickeln eines Verfahrens muss man sich sehr oft nur darüber klar werden, wass man als Mensch in der gleichen Situation macht. Und zwar bis ins letzte Detail. Programmierer sind darauf geschult auch auf die kleinsten Details zu achten. Details die Nichtprogrammierer oft übersehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.