Hallo, ich versuche schon leicht verzweifelt ein eDIP 240-7 über SPI anzusteuern. Ich benutze das STK500 /STK 501 und einem AT90CAN128. Zum Programmieren benutze ich das AVR Studio 4.16. Ich bin gerade dabei mich in die Materie einzuarbeiten, d.h. ich habe mir den Code zusammenkopiert und so verändert, das er hoffentlich funktioniert. Am Display habe ich folgende Pins angeschlossen: PIN 1 = GND PIN 2 = VDD PIN 5 = VDD PIN 6 = CS (PB0) PIN 7 = MOSI (PB2) PIN 8 = MISO (PB3) PIN 9 = CLK (PB1) PIN 11 = GND Der Code sieht in etwa so aus: #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 16000000UL #include <util/delay.h> #define P_CS PB0 #define P_SCK PB1 #define P_MOSI PB2 #define P_MISO PB3 #define PORT_SPI PORTB #define PORT_CS PORTB #define DDR_SPI DDRB #define DDR_CS DDRB void SPI_MasterInit(void) { // Aktivieren der Pins für das SPI Interface DDR_SPI |= (1<<P_SCK)|(1<<P_MOSI); PORT_SPI &= ~((1<<P_SCK)|(1<<P_MOSI)|(1<<P_MISO)); DDR_CS |= (1<<P_CS); PORT_CS |= (1<<P_CS); SPCR = (1 << MSTR) | /* Master mode */ (1 << SPE) | /* SPI Enable */ (1 << DORD) | /* Data Order: LSB first */ (1 << CPOL) | /* Clock Polarity: SCK High when idle */ (0 << CPHA) | /* Clock Phase: sample on rising SCK edge */ (1 << SPR1) | /* Clock Frequency: f_OSC / 64 */ (0 << SPR0); SPDR = 0xff; } uint8_t spi_putc( uint8_t data ) { PORT_CS &= ~(1<<P_CS); SPDR = data; // Sendet ein Byte // Wartet bis Byte gesendet wurde while( !( SPSR & (1<<SPIF) ) ); PORT_CS |= (1<<P_CS); _delay_us(15); return SPDR; } void test() { spi_putc(0x11); spi_putc(0x01); spi_putc(0x43); spi_putc(0x55); spi_putc(0x00); } int main(void) { SPI_MasterInit(); while(1) { test(); } } Ich habe jetzt schon verschiedene Sachen versucht zu senden, wie z.B. versucht eine Linie zu Zeichnen oder das Display auszuschalten. Wenn ich mir das ganze mit dem Oszi anschaue sieht es auch aus, als ob die Daten richtig auf dem Bus liegen. Trotzdem bekomme ich nichts anderes als ein blinkenden Cursor auf meinem Display zu sehen. Hat jemand vielleicht eine Idee wo das Problem liegt? Schon mal vielen Dank Josh
Ok Fehler gefunden. (0 << CPHA) | /* Clock Phase: sample on rising SCK edge */ CPHA muss (1 << CPHA) sein. Danke Tim!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.