Problem mit edip240-7

OP #679336
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!
#679481
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
OP #679504
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;
}
OP #679523
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.
Persönliche Seite #679540
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.
1
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-GCC-Tutorial#SPI) 
gedacht ist, ist die Programmstruktur logisch falsch: Während des 
Wartens auf Rückmeldung vom Display ballerst du ständig Zeichenbefehle.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.