Forum: Mikrocontroller und Digitale Elektronik Suche Countdown Zähler mit LCD auf AT90S8515


von Karl T. (don_karlo)


Lesenswert?

Wer hat ein Beispiel ?


mfg Karl

von holger (Gast)


Lesenswert?

>Wer hat ein Beispiel ?

Ich.

von Karl T. (don_karlo)


Lesenswert?

... und hat man eine Chance,daran zu kommen?  Wenn ja, wie ?

mfg Karl

von Karl H. (kbuchegg)


Lesenswert?

Die Details des COdes hängen ja wohl mehr als alles andere von den 
Details der Hardware Anbindung ab.

Ein Countdown ist doch wohl ziemlicher Pipifax. Woran scheitert es denn 
im Detail?
1
....
2
3
int main()
4
{
5
  uint8_t Sekunden;
6
7
  lcd_init();
8
  Sekunden = 20;
9
10
  while( 1 )
11
  {
12
    if( Sekunden > 0 )
13
    {
14
      Sekunden--;
15
      lcd_int( Sekunden );
16
      _delay_ms( 1000 );
17
    }
18
  }
19
}

im einfachsten Fall ist das ein Countdown-Zähler, der einen 20 Sekunden 
Countdown realisiert. WO war da jetzt das Problem?

(das man das in der Realität anders, nämlich mit einem Timer, macht und 
auch jegliche Form der Benutzersteuerung fehlt, ist auch klar. Aber 
danach hast du ja nicht gefragt. Du willst ja eine 'Ich hab keine Ahnung 
und will mir auch keine Gedanken machen' - Lösung. Und das spielts hier 
im Forum nun mal nicht. Wenn du konkrete Fragen hast - gerne. Aber 
Rundumschlag-Antworten auf eher triviale Fragen - nö.)

von Karl T. (don_karlo)


Lesenswert?

in assembler ? denn c geht bei mir nicht

von Karl H. (kbuchegg)


Lesenswert?

Ein Countdown ist einfach nur eine Variable die rückwärts von einer 
bestimmten Zahl bis auf 0 herunter gezählt wird. That's it. Das ist ein 
Countdown.

Alles andere drumherum ist zwar nett, aber für einen Countdown nicht 
zwingend erforderlich.

Also: mach deine Hausaufgaben selber.

von Karl T. (don_karlo)


Lesenswert?

Welche Hausaufgaben soll ich machen?

... diese geistreichen Kommentare,noch dazu von einem Mod ....

ich hab ganz einfach nach einem Beispiel in asm gefragt, verar..... kann 
ich mich selbst !

mfg Karl

von Cube (Gast)


Lesenswert?

Karl Tomacek schrieb:
> ich hab ganz einfach nach einem Beispiel in asm gefragt, verar..... kann
> ich mich selbst !
Dann guck doch mal ins AVR Tutorial. Dort wird z.B. eine LCD Uhr 
erklärt. Mit nur ein wenig Kreativität lässt sich das auch entsprechend 
umbauen.

von holger (Gast)


Lesenswert?

>ich hab ganz einfach nach einem Beispiel in asm gefragt, verar..... kann
>ich mich selbst !

Nein hast du nicht. Sieh dir deine erste Frage noch mal an.
Keine Angabe in welcher Programmiersprache du das haben wolltest.

Und jetzt verpiss dich du Troll!

von Karl H. (kbuchegg)


Lesenswert?

Karl Tomacek schrieb:
> Welche Hausaufgaben soll ich machen?
>
> ... diese geistreichen Kommentare,noch dazu von einem Mod ....

Und als Mod gehört es auch zu meinen Aufgaben darauf zu achten, dass 
dieses Forum nicht zu einem Wunschkonzert verkommt, sondern das bleibt 
als was es gedacht ist: Das Forum hilft bei Programmierproblemen aus, 
versteht sich aber nicht als kostenloses Ingenieursbüro. Als Faustregel: 
du legst Code vor und das Forum hilft dir bei Problem.

Wenn dir das nicht passt: Es steht dir frei, dein Glück woanders zu 
versuchen.

von Karl T. (don_karlo)


Lesenswert?

... diese Uhr aus dem Tut hab ich nur mit sehr viel Mühe überhaupt zum 
Laufen bekommen.

; ****************************************************************
; * Uhr mit 2-Zeilen-LCD-Anzeige fuer STK500 mit Timer/Counter 1 *
;  Anschluss der LCD ueber 4-Bit-Kabel an Port des STK500       

es wurde behauptet, dass sie mit dem Displaytech 162 nicht läuft !

Ich kann den Gegenbeweis antreten !

Nur kann man sie nicht einstellen ! ( es müsste jedesmal der Prozessor
neu programmiert werden,da das STK keine Echtzeituhr hat.)

mfg Karl

von Karl H. (kbuchegg)


Lesenswert?

Karl Tomacek schrieb:

> es wurde behauptet, dass sie mit dem Displaytech 162 nicht läuft !
>
> Ich kann den Gegenbeweis antreten !

Schön.

> Nur kann man sie nicht einstellen ! ( es müsste jedesmal der Prozessor
> neu programmiert werden,da das STK keine Echtzeituhr hat.)

Ja.
Das nennt man dann 'programmieren' bzw. 'ein Programm entwickeln'.
Das Tutorial konzentriert sich in jedem Abschnitt auf einen bestimmten 
Problemkreis. Die Programme sind gerade soweit vollständig, dass man die 
besprochene Funktionalität in Aktion sehen kann.
Daraus (und aus der Kombination verschiedener Techiken aus dem Tutorial) 
dann komplette, einsetzbare Programme zu machen, ist als Aufgabe für den 
Lernenden offen gelassen. Und zwar bewusst offen gelassen, da jeder 
andere Ansprüche bzw. Anforderungen bzw. Vorstellungen davon hat, wie 
die Dinge konkret aussehen sollen.

von Karl T. (don_karlo)


Lesenswert?

@  holger (Gast)

wen meinst du mit Troll, du Koffer !

... dann melde dich wenigstens an, und poste nicht als Gast !

von spontan (Gast)


Lesenswert?

Die Qualität der Postrings hängt ganz und gar nicht mit einer Anmeldung 
zusammen.

Was wieder mal bewiesen wäre.

von holger (Gast)


Lesenswert?

>@  holger (Gast)
>
>wen meinst du mit Troll, du Koffer !

Dich natürlich. Lern erst mal Fragen zu stellen.
Details sind ganz wichtig! Z.B. nur Antworten mit Assemblercode.
Dann bekommst du auch Antworten die zu deinen Fragen passen.

>... dann melde dich wenigstens an, und poste nicht als Gast !

Nö;)

von Karl T. (don_karlo)


Lesenswert?

Was ist denn das ? : in assembler , denn c geht bei mir nicht

von Peter D. (peda)


Lesenswert?

Karl Tomacek schrieb:
> Nur kann man sie nicht einstellen !

Dazu rückt man erstmal die PC Tastatur bei Seite, nimmt sich Stift und 
Papier und überlegt sich eine Bedienfolge, wie das gehen könnte.
Z.B., wieviel Tasten man verwenden möchte und dann, welche Funktion jede 
Taste haben soll.
Und dann den Ablaufplan.
Das Coden kommt dann viel später, wenn der Ablaufplan auf dem Papier 
fehlerfrei läuft.

Man könnte dazu auch sagen, man erstellt zuerst mal das Pflichtenheft.

Peter

von Martin (Gast)


Lesenswert?

Karl Tomacek schrieb:
> in assembler ? denn c geht bei mir nicht

Dein Pech. Niemand benutzt heutzutage noch Assembler, wenn es nicht 
unbedingt sein muss. Und nein, bei deinem Problem muss es nicht sein.

von Karl T. (don_karlo)


Lesenswert?

... dann sag das mal jemandem,der Midi bzw DMX programmiert !
... der lacht Dich aus !

mfg Karl

von as count (Gast)


Lesenswert?

Hey!
Hab was für dich gefunden.
Bin mir zwar sicher aber so könnte dir geholfen werden.

http://www.google.de/search?q=mikrocontroller.net+netiquette

Ich glaub der Code ist recht selbst verständlich und
niemand muss groß drüber nachdenken.

Gruß

von Karl T. (don_karlo)


Lesenswert?

@  as count (Gast) : ... und du kommst dir gut vor ...

von as count (Gast)


Lesenswert?

;-)
Ja, ich hoffe es hat geholfen.

von Patrick E. (f4550tim)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Karl Tomacek schrieb:
> ... diese Uhr aus dem Tut hab ich nur mit sehr viel Mühe überhaupt zum
> Laufen bekommen.
Diese "Mühe" nennt sich ugs. "Lernen"...

Martin schrieb:
> Dein Pech. Niemand benutzt heutzutage noch Assembler, wenn es nicht
> unbedingt sein muss. Und nein, bei deinem Problem muss es nicht sein.
Karl Tomacek schrieb:
> ... dann sag das mal jemandem,der Midi bzw DMX programmiert !
Ich mach beides. In C. Geht gut...

Karl Tomacek schrieb:
> Was ist denn das ? : in assembler , denn c geht bei mir nicht
Das ? gefolgt vom : ist eine Abfrage:
  d = a<b ? 1 : 2;
Diese Zeile bedeutet
  Wenn a kleiner b ist, dann weise d eine 1 zu, sonst eine 2.

Es ist i.A. eine schlecht Idee, ein Programm von einer dir unbekannten 
Sprache in deine Sprache übersetzen zu wollen. Das funktioniert im 
täglichen Leben schon nicht...

von Peter D. (peda)


Lesenswert?

Karl T. schrieb:
> ... dann sag das mal jemandem,der Midi bzw DMX programmiert !
> ... der lacht Dich aus !

Ein etwas erfahrener MC-Programmierer macht das spielend in C.
Die schlappen 250kBaud sind 704 Zyklen beim 16MHz AVR je Byte. Das ist 
nicht üppig, aber dicke ausreichend. Zumal die UART noch bis zu 3 Byte 
puffern kann.
Man sollte nur keinen Windows-Progammierer ran lassen, der alles mit 
10-fach indirekten Zeigern macht und nur double 64Bit Variablen kennt.


Peter

von Wolken-Kuckucksheim (Gast)


Lesenswert?

@Karl

Hier ist ein Link zu einem Countdown-Zähler in ASM:
http://www.avr-projekte.de/portview.htm#Timer

Der ist zwar mit Atmega48 realisiert, Du musst ihn auf Dich anpassen.

Und noch eins: Diskutiere nicht mit Idioten -schon morgen könnte einer
davon Dein Chef sein!

von Karl H. (kbuchegg)


Lesenswert?

Wolken-Kuckucksheim schrieb:

> Und noch eins: Diskutiere nicht mit Idioten -schon morgen könnte einer
> davon Dein Chef sein!

Der ihn rausschmeisst, wenn er es nicht schafft in angemessener Zeit aus 
den vorhandenen Bausteinen etwas so simples wie einen rückwärtslaufende 
Uhr zu bauen, die beim Erreichen von 0 einen Ausgangspin schaltet.

Die Zutaten sind im Tut alle vorhanden
* LCD Routinen
* ein Timer, der im Sekundentakt etwas tut
* Tasten Entprell- und Auswerteroutinen
* Port Ausgaben, um damit einen Ausgang 0/1 zu schalten
* wie man Vergleiche über mehrere Bytes macht (sofern die Zeit
  nicht einfach nur eine Sekundenzahl im Bereich 0 bis 255 ist)

Was noch fehlt
* ein Konzept, wie man mit den Tasten die Gerätebedienung durchführt
* das Überlegen, wie die Einzelteil zusammenspielen sollen
* das Zusammenschrauben und (da Assembler) aufeinander abstimmen
  der Einzelteile, damit es zu keinen Registerkollisionen kommt


Da frag ich dich: Was von den Dingen die noch fehlen, ist jetzt 
technisch gesehen so schwierig, dass es ein Anfänger, der die 
Tutorialbestandteile verstanden hat, nicht hinkriegt? Hier geht es nicht 
um irgendwelche technischen Schwierigkeiten. Hier geht es simpel und 
einfach gesagt um Faulheit. Es geht darum, seine Arbeit auf andere 
abzuwälzen. Es geht vielleicht auch um die Selbstbelügung "Ich lerne am 
besten, wenn mir andere das bis ins Detail vorkauen". Noch nie hat 
jemand programmieren gelernt, in dem er ausschliesslich andere für sich 
hat arbeiten lassen und dann das Ergebnis studiert hat. Programmieren 
lernt man nur durch Programmieren. Und dazu gehört auch, dass man sich 
auf seinen Allerwertesten setzt und die Dinge selber macht. Vor allen 
Dingen dann, wenn einem die Bausteine ohnehin schon alle als 
Halbfertigteile zugetragen werden. Selbst wenn das das eine oder andere 
mal in die Hose geht. Das ist nicht schlimm und gehört genauso zum 
Lernprozess dazu wie Erfolgserlebnisse.

von Wolken-Kuckucksheim (Gast)


Lesenswert?

@Karl-Heinz

Zieh Dir kein Jacke an, die Dir nicht passt! Die war für solche
Gestalten wie "Holger", "Tim E." "Ascount" und "Spontan" bestimmt.

In jeder Schule gibt es das Prinzip des Lernens an einem
Beispiel. Wird das Beispiel nicht sofort durchschaut, dann gibt es einen
Lehrer, Tutor (was auch immer in dieser Richtung), der das Beispiel noch
einmal erläutern kann und scheinbare Widersprüche darin auflösen kann.

Es gibt Menschen, die es schaffen, sich nur mit Hilfe (guter) Bücher
etwas selbst beizubringen. Die meisten jedoch nicht -sie brauchen
erst mal einen "Erklärbär".

Den gibt es aber natürlich hier nicht. Es wird dann um Beispiel gebeten
und schon sind die Schmeißfliegen da...

Das ist es, was mich hier so ankotzt: Einige wenige, die helfen, aber
dazu jede Menge "Beifang", der bestenfalls als Robbenfutter taugt.

Das mußte mal raus -jetzt geht's mir besser.

von Karl H. (kbuchegg)


Lesenswert?

Wolken-Kuckucksheim schrieb:

> Es gibt Menschen, die es schaffen, sich nur mit Hilfe (guter) Bücher
> etwas selbst beizubringen. Die meisten jedoch nicht -sie brauchen
> erst mal einen "Erklärbär".

Er hat aber nicht nach einem Detailproblem gefragt, sondern nach einem 
fix-fertig-komplett-im_Idelafall_brauch_ich_nichts_mehr_tun-Beispiel.

Wenn es um ein Detailproblem geht, hat das Forum noch immer geholfen. 
Nur gegen "Rück mal einen Komplettcode raus" haben wir was.

von oldmax (Gast)


Lesenswert?

Hi
So schlecht ist das Wetter nun auch nicht.... also, bleibt auf dem 
Teppich. Ich seh es auch wie Karl Heinz, denn der erste Thread ist nicht 
grad "Bitte erklärt und helft mir" sondern eher "rückt mal mit Code 
raus".
Dabei spielt die Sprache erst mal überhaupt keine Rolle, denn was ich 
von Programmiersprachen weiß, ist in jeder Kategorie ein 
"Rückwärtszähler" programmierbar. Das der Impuls nicht von Hand 
eingetippt werden muß, dafür sorgt eigentlich der Interrupt eines Timers 
und so ergibt das Ganze dann ein Zeitfenster für irgendwas. Wenn dann 
die Hinweise auf's Tutorial mehr oder weniger ablehnend kommentiert 
werden.... hmmm, da hat man nicht grad Lust, hilfreich zu sein und da 
darf sich der arme Fragesteller auch nicht wundern, wenn nicht grad 
hilfreiche Antworten kommen..... Trotzdem werd ich mal helfen und ein 
Prinzip aussprechen.
Count-Down

Setze Wert
Schleife Programm
....
Schleife CountDown:
   Wert - 1
   Wert = 0 ?
Nein, dann zu Schleife Countdown
 .....
weiter Schleife Programm

So programmiert kein Schwein, ich weiß.
Daher "Interrupt".

Setze Wert
Interrupt ein
Programmschleife
....
Guckst du erledigt_Flag
....
und lustig zur Programmschleife


Ahhh, Interrupt
Wert- 1
wert = 0 dann setz erledigt_Flag
ende Interrupt

Nun, was macht man mit einem erledigt_Flag ? Das wird natürlich in der 
Programmschleife betrachtet und ausgewertet. Nun, mit diesen Fragmenten 
hat man zwar kein Programm, aber wer Assembler lernt, der sollte nach 
und nach die Befehle für diese Struktur aus dem Tutorial herausfischen 
können. Andererseits gibt's ja auch sowas wie eine Suche und da wird das 
Wort Countdown sicherlich nicht ohne Treffer bleiben. Also, nur Mut, es 
wird schon
Gruß oldmax

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.