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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren