mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Ausgabe straffen?


Autor: Martin Sv (sv_martin)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tag an alle

Also die LCD-Routine für das EADIP 122 X 32 in verbindung des 
Timer-Interrupts bietet in der
 while(1) {..}
 Schleife die Möglichkeit der
Ausgabe.

Läßt sich das ganze etwas straffer gestalten ?

Reinen Denkanstöße werden bevorzugt behandelt.

Grüße Martin

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie bitte?
Du hast dich mal so richtig unklar ausgedrückt.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(sekunde_neu = (sekunde+1))

Du brauchst dringend ein C Buch.

Autor: Martin Sv (sv_martin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ? wiso wie gehts besser

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Läßt sich das ganze etwas straffer gestalten ?

Z.B., wenn du deine Ziffern/Zeichen in der richtigen Reihenfolge 
ausgibst, kannst du dir die ganzen GoTos sparen. Das LCD schiebt den 
Cursor auch allein weiter. Und dieses:

>    if(sekunde_neu = (sekunde+1))
...
>               sekunde_neu = sekunde;
...

>    if(sekunde==60)
>       {
>        minute++;
>           sekunde=0;

kommt selbst mir als notorischen Asseblerprogrammierer spanisch vor.

MfG Spess

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>if(sekunde_neu = (sekunde+1))
>Ja ? wiso wie gehts besser

Die Frage ist nicht wie es besser geht,
sondern wie es überhaupt geht.

Und das steht in einem C-Buch.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Sv schrieb:
> Ja ? wiso wie gehts besser

Die Zeile geht schon (syntaktisch richtig), aber macht was anderes, als 
Du vermutest.
Der GCC wird auch eine Warnung ausgespuckt haben.


Peter

Autor: Nonsense (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Sv schrieb:
> Ja ? wiso wie gehts besser

Es würde erstmal reichen, wenn es richtig wäre. Danach kann man sich 
darum kümmern, wie man es besser macht.

Autor: Martin Sv (sv_martin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spess53 schrieb:
>>    if(sekunde_neu = (sekunde+1))

DA war der Hintergedanke, es reicht 1/sec refresh das Diplays.

Die anderen "Zitate" sind aus dem Timer Tutotial
und fand ich eigentlich recht ordentlich

Autor: Martin Sv (sv_martin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Der GCC wird auch eine Warnung ausgespuckt haben.

nee eigentlich funtz die Ausgabe wie gewünscht,
eure Codes sind alle so straff, da wollt ich hin.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>DA war der Hintergedanke, es reicht 1/sec refresh das Diplays.

DA du es an anderen Stellen richtig gemacht hast
vermute ich hier einen Tipfehler. Schau noch mal GENAU hin
bei dieser Zeile;) Was macht sie, und was sollte sie machen?

Autor: Nonsense (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Sv schrieb:
>>>    if(sekunde_neu = (sekunde+1))
>
> DA war der Hintergedanke, es reicht 1/sec refresh das Diplays.

Das tut es dort aber nicht. Du machst dort eine Variablenzuweisung und 
keine boolsche Überprüfung.

Autor: Martin Sv (sv_martin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch schrieb:
> if(sekunde_neu = (sekunde+1))

Also gehn tut es wohl, jedoch nur weil, wie peda Prophezeit hat

../A8_LCD.c:44: warning: suggest parentheses around assignment used as 
truth value

der Compiler annimmt, dass ich etwas bestimmtes wünsche

nachdem hier bools und falsch genannt wurde ist Lösung möglicherweise??

die o.g. Zeile hab ich auskomentiert und es geht genauso, also hatte die
"Variablenzuweisung keinen Zweck den es zu erfüllen galt".

Dann danke erst mal an alle beteiligten--> bin dann mal ein C-Buch 
kaufen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin Sv schrieb:

> nee eigentlich funtz die Ausgabe wie gewünscht,

Nicht wirklich

Denk mal über den Unterschied zwischen == und = nach.
Und frag dich mal warum dein Programm wohl auf das _delay_ms in der 
Hauptschleife angewiesen ist und flackert wie Sau wenn du es rausnimmst 
:-)


> eure Codes sind alle so straff, da wollt ich hin.

Ist doch kein Problem, wenn man seine Pappenheimer (C-Funktionen) kennt
int main()
{

  char Buffer[30];

  GLCD_Init();
  GLCD_ClearScreen();

  OCR0 = 500;                 
  TCCR0 = (1<<WGM01) | (1<<CS01);     // Hier wird der CTC-Modus und die Prescaler (4000000/8=500)   
  TIMSK|=(1<<OCIE0);
  sei();  

  int sekunde_neu = 0;

  while(1)
  {
//  /-----/-----/-----/-----/-----/-----/-----/-----/    
//  |                        |
//  |  h    h      :     m     m     :     s     s  |
//  |                        |
//  /----6-----12----18----24----30----36----42----46

    if( sekunde != sekunde_neu )
    {
      sekunde_neu = sekunde;

      sprintf( Buffer, "  %d  %d   :   %d  %d   :   %d  %d",
                  stunde / 10, stunde % 10,
                  minute / 10, minute % 10,
                  sekunde / 10, sekunde % 10 );

      GLCD_GoTo( 0, 1 );
      GLCD_WriteString( Buffer );
    }
  }

  return 0;
}

Vielleicht doch mal einen Blick in ein C-Buch riskieren? Da wirst du 
noch jede Menge anderes Interessantes finden.

Autor: Martin Sv (sv_martin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Der GCC wird auch eine Warnung ausgespuckt haben.

> Denk mal über den Unterschied zwischen == und = nach.
> Und frag dich mal warum dein Programm wohl auf das _delay_ms in der
> Hauptschleife angewiesen ist und flackert wie Sau wenn du es rausnimmst
> :-)

Tja voll erwischt, es hat geflakert drum das _delay_ms, gut den Fehler 
mal gemacht zu haben. einmal mein ich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.