mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit edip240-7


Autor: Karim B. (tun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich hab auch ein Problem mit diesem Display!
Folgendes: ich will ein Rechteck zeichnen anschl. dieses löschen
und dann eine Linie.

Beispiel:

int main
{
...
zeichReck(0,0,50,50);
display_clear();
zeichLinie(0,0,20,20);
...
}

Problem er zeichnet nur das Reck, dieses wird nicht gelöscht.
ich mit einem delay versucht -> auch nicht.

Wäre toll wenn mir einer weiter helfen könnte.
Danke!

Autor: Der Schubi (schubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz klar:
Fehler in Code-Zeile 13...

Autor: Karim B. (tun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ganz klar...
Der Befehl ist richtig!

Hast du auch eine Lösung, wenn du meist das dies falsch ist!

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karim B. wrote:
> Was ist ganz klar...
> Der Befehl ist richtig!
>
> Hast du auch eine Lösung, wenn du meist das dies falsch ist!

Er meint damit, das keiner (den lieben Gott und Bill Gates ausgenommen) 
mit den drei Zeilen etwas sagen kann...
Ein wenig mehr Code muss es schon sein...

nitraM

Autor: Karim B. (tun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier jetzt etwas mehr Code; Das Programm führt nur den ersten Teil aus,
den zweiten Teil lässt er liegen.
........

while (RW !=0x06)
{

//zeichnet Rechteck

BCC=(0x11+0x0A+0x1B+'D'+'L'+0x1B+'G'+'R'+0x0A+0x0A+0x32+0x32) % 256;

spi_write(0x11);
spi_write(0x0A);
spi_write(0x1B);
spi_write('D');
spi_write('L');

spi_write(0x1B);
spi_write('G');
spi_write('R');
spi_write(0x0A);
spi_write(0x0A);
spi_write(0x32);
spi_write(0x32);

spi_write(BCC);

delay(1);

RW = SPDR;

}

delay(2000);

while (RW !=0x06)
{
BCC = (0x11+0x0A+0x1B+'D'+'L'+0x1B+'G'+'D'+0x00+0x00+0x32+0x32) % 256;

spi_write(0x11);
spi_write(0x0A);

spi_write(0x1B);
spi_write('D');
spi_write('L');


spi_write(0x1B);
spi_write('G');
spi_write('D');
spi_write(0x00);
spi_write(0x00);
spi_write(0x32);
spi_write(0x32);

spi_write(BCC);

delay(1);

RW = SPDR;
}

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist du überhaupt sicher, dass du aus der ersten while-Schleife raus 
kommst?

EDIT: Bzw. dass du in die zweite Schleife rein kommst, nachdem du die 
erste verlassen hast? Welcher Wert von RW hat nochmal zum Verlassen der 
ersten Schleife geführt?

Autor: Karim B. (tun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn RW = 0x06 ist, wird die erste while schleife verlassen.
Dies tut es auch, denn ich seh ja auf dem Display ein Rechteck.
Ich weiß nur nicht, warum die Linie nicht gezeichnet wird. Ich hab ja 
Verzögerung für Datentransport zur Reserve eingefügt.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, und wenn RW==0x06 ist, wie geht es dann beim Eingang der 2. 
while-Schleife weiter?

Bingo. Die Eingangsbedingung ist nicht erfüllt und die Schleife wird nie 
ausgeführt. Passt zur Problembeschreibung.

Setzt das Display SPDR irgendwann ungleich 0x06? Dann müsstest du 
zwischen der 1. und 2. Schleife einfügen.
while (0x06 == (RW = SPDR));

EDIT: Insgesamt gefällt mir dein Code so nicht. Wenn SPDR so wie hier 
(http://www.mikrocontroller.net/articles/ARM-elf-GC...) 
gedacht ist, ist die Programmstruktur logisch falsch: Während des 
Wartens auf Rückmeldung vom Display ballerst du ständig Zeichenbefehle.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist zwar schon alt, aber naja. Die Funktion delay(2000) kann die 2000 
nicht verarbeiten so weit ich das weiß.
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

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.