Forum: Offtopic Aufwärtszähler LCD


von Edo H. (edobmw)


Lesenswert?

Hallo,

Ich habe eine Aufgabe wo ich nicht mehr weiter komme. Programmieren tu 
ich es mit Atmel Studio.

Es ist ein Aufwärtszähler zu programmieren und das Zählerergebnis soll 
auf einem LCD 20x2 angezeigt werden.

Dem Aufwärtszähler ist ein Timer zugrunde gelegt, welcher im 500ms Takt 
hinzuzählt.

Mittels Taster 1 wird der Zähler gestartet und gestoppt und mittels 
Taster 2 kann die Zeit in Schritten verändert werden (100, 200, 300, 
400, 500ms)


Danke im Voraus

: Verschoben durch User
von Frank L. (hermastersvoice)


Lesenswert?

Selbst wenn du alle nötigen Informationen mitgeliefert hättest, 
erwartest du dass Jemand hier den Code für dich postet?

von Edo H. (edobmw)


Lesenswert?

Frank L. schrieb:
> Selbst wenn du alle nötigen Informationen mitgeliefert hättest,
> erwartest du dass Jemand hier den Code für dich postet?

Nein?
Aber, dass mir wer bissl hilft.

: Bearbeitet durch User
von Chris L. (kingkernel)


Lesenswert?

Da du schreibst, du kommst nicht mehr weiter, gehe ich davon aus, dass 
du bereits etwas hast. Zeig das doch mal her und dann erzähle uns, wo 
genau du nicht mehr weiter kommst oder fragen hast.
Dann sind wir gerne bereit dir weiter zu helfen. Hausaufgaben macht hier 
niemand für dich, aber dir helfen die Lösung zu erarbeiten und zu 
verstehen tut hier eigentlich jeder!

Außerdem wäre es gut, wenn du uns Infos zu den Rahmenbedingungen gibst.
Schaltplan
Typbezeichnung der verwendeten Hardware (Mikrocontroller, LCD, usw.)
Deinen bisherigen Quellcode
Was das ganze am Ende können soll, damit wir nicht 5 mal anfangen 
müssen, weil immer noch eine neue Teilaufgabe hinzukommt

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Auf 2*20 Stellen sollte Platz genug sein, um beide Zähler anzuzeigen, 
den Hauptzähler und den für die 100ms-Stufen.
Die Software könnte zum Beispiel alle 100ms nachschauen, ob die Zeit 
durch den eingestellten Wert ohne Rest teilbar ist und nur dann den 
Hauptzähler einen Schritt weiterzählen.

von Peter Z. (Gast)


Lesenswert?

Taster1 lässt ein Flag zwischen 0 und 1 toggeln.

Taster2 lässt eine Variable timer_Intervall zwischen 100,200,300,400 und 
500 wechseln.
1
*// Timer-Interrupt
2
Counter += counter_flag;
3
LCD_Anzeige(Counter);
4
return;
5
6
*// Hauptprogramm
7
while(1){
8
Taster1();
9
Taster2();
10
Timer_set(timer_Intervall);
11
}

von Dieter F. (Gast)


Lesenswert?

Peter Z. schrieb:
> aster2 lässt eine Variable timer_Intervall zwischen 100,200,300,400 und
> 500 wechseln.
> *// Timer-Interrupt
> Counter += counter_flag;
> LCD_Anzeige(Counter);
> return;
>
> *// Hauptprogramm
> while(1){
> Taster1();
> Taster2();
> Timer_set(timer_Intervall);
> }

Und das lässt sich fehlerfrei compilieren? :-)

Zeig doch mal das komplette Coding ...

von Peter Z. (Gast)


Lesenswert?

Dieter F. schrieb:

>
> Und das lässt sich fehlerfrei compilieren? :-)
>
> Zeig doch mal das komplette Coding ...

Ich sehe da im Moment keine eklatanten Syntax Fehler.

Ich hab kein "komplettes Coding", wollte nur jemandem der auf dem 
Schlauch steht etwas helfen... tippe auf Android Handy...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Peter Z. schrieb:
> *// Timer-Interrupt
> Counter += counter_flag;
> LCD_Anzeige(Counter);
> return;

Es ist schon mal keine gute Idee, eine LCD Ausgabe im Interrupt zu 
machen. Typischerweise ist das nämlich sehr langsam und deswegen am 
besten im Hauptprogramm aufgehoben.

Mein Ansatz wäre ein 100ms Ticker per Timer Interrupt, der nach dem 
1.,2. oder soundsovielten Aufruf den Zähler inkrementiert und ein Flag 
setzt.
Das Hauptprogramm sieht das gesetzte Flag, frischt die Anzeige auf und 
löscht das Flag.
Im Hauptprogramm kann man noch die einfache Tastenabfrage machen.

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
Noch kein Account? Hier anmelden.