www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nokia LCD: Problem mit SBI


Autor: Jens D. (jens) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, cih habe hier den Code:
while ((SPSR & (1<<SPIF)) != (1<<SPIF))
{
   PORTC |= 2;
   nop();
}
PORTC &= 2;

Mein Problem ist PC2 leuchtet immer :( spwich er haenngt in der While
schleife aber warum?
was mich wundert ist, das ich 2 .. 3 mal Daten senden kann und dann auf
ein mal ende
ich habe schon diverse Taktfrequenzen getestet nichts..
Hat jemad eine idee, woran das liegen koennte??

Im Anhang habe ich mal die nokia_lcd.c beigefuegt

Gruss Jens

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein Problem ist PC2 leuchtet immer

Das würde ich auch erwarten. Zuerst schaltest du in der Schleife PC2
ein. Dann schaltest du nach der Schleife alle außer PC2 aus. Meintest
du nach der Schleife vielleicht:
PORTC &= ~2;

Autor: Jens D. (jens) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ooops stimmt, da ist ein kleiner Fehler..
Aber es ist dennoch diese Schleife, weil ich in einem Interrupt Portc
mit &0b00000001 verknuepfe und somit jede sekunde alles auf 0 setze..
PC1 Blinkt (wird im Interrpt Handler retoggelt)

Nur woran koennte das liegen, dass das Register nicht leer wird?

Autor: Jens D. (jens) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
µC: mega16
ich habe mir das eben nochmal angeguckt..
die /SS Leitung (LCD_CE_PIN) kane ich auf PB1 (T1)
kann es sein, dass sie fuer den SPI Bus nötig ist?
Aber wieso lief das Display damals mit der Konfiguration?
ich musste nur wieder cpi spi .. abaendern

Die Ports habe ich so gesetzt:
#define LCD_DC_PIN                 PB0
#define LCD_CE_PIN                 PB1 richtig???
#define SPI_MOSI_PIN               PB5
#define LCD_RST_PIN                PB6
#define SPI_CLK_PIN                PB7

Gruss Jens

Autor: Jens D. (jens) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, also es haenngt an deser schleiffe..
Ichh abe es mir mit JTAG angeguckt..

while ( (SPSR & 0x80) != 0x80 );
{
   nop();
}

3 .. 4 mal klappt es und dann setzt er das SPIF flag nicht im SPSR
Register (SPI)

woran koennte das liegen?

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.