Gast
#116829
Hi,
ich nutze am HW SPI meines Mega8 ein LCD Display.
Damals hatte ich den CS Pin Hardwaremaessig auf Masse gelegt somit war
das LCD Display immer aktiv. Nachdem ich mir eine neue Platine geaetzt
habe spreche ich den CS Pin des Display's per I/O Pin an. Jetzt fangen
damit meine Probleme an.
Der CS Pin vom Display liegt ueber ein Pull Up Widerstand von 10k auf
5V.
Lege ich meine Aktivierung des Display's mit in die SPI Sende Routine
funktioniert es nicht und das Display wird nicht angesprochen.
Setzte ich den I/O Pin vor den LCD Routinen auf LOW geht es. Leider
finde ich im Datasheet auch keine Angabe wie frueh ich den CS Pin auf
Low ziehen muss bevor ich Daten sende und wielange der Pin nach der
Uebertragung LOW bleiben muss.
Gibt es da Richtwerte?
Ich hoffe jemand kann mir ein Rat geben. Ich wollte mich nicht immer
extra um die Aktivierung des CS Pin's kuemmern, sondern diese einmal
in meine SPI Sende Routine einbauen.
Mfg
Dirk
So funktionert es:
PORTLCD &= ~(1<<CS_LCD); /* SS Pin low */
lcd_init();
lcd_clear();
lcd_chr('o');
PORTLCD |= (1<<CS_LCD); /* SS Pin high */
so funktionert es leider nicht
void SPI_sende (unsigned char aData)
{
PORTLCD &= ~(1<<CS_LCD); /* SS Pin low */
SPDR = aData; while(!(SPSR & (1<<SPIF)));
PORTLCD |=
(1<<CS_LCD); /* SS Pin high */
}