Gast
#616859
kann mir einer sagen ob man den ss pin als ausgang definieren muß und
high???
beim 128 ist es so aber im datenblatt steht das er nicht benutzt wird.
Leider funktioniert mein SPI nicht
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
#define port_cs() DDRB|=(1<<1); //CS
//PORT SPI
#define port_spi_sck() DDRB|=(1<<5); //SCK
#define port_spi_mosi() DDRB|=(1<<3);//MOSI
#define port_spi_miso() DDRB&=~(1<<4);//MISO
#define cs_high() PORTB|=(1<<1); //HEIGH CS
#define cs_low() PORTB&=~(1<<1); //LOW CS
void spi_init(void)
{
port_cs();//CS
port_spi_sck(); //SCK
port_spi_mosi();//MOSI
port_spi_miso();//MISO
cs_high();//CS auf high
SPCR=(1<<SPE)|(1<<MSTR);
}
//SPI WRITE
unsigned char Write_SPI(char data)
{SPDR=data;
while(!(SPSR & (1<<SPIF)));
return SPDR;
}
void main(void)
{
unsigned char ergebniss;
spi_init();
Write_SPI(0x8d);
ergebniss=Write_SPI(0xff);
}
leider bleibt er bei Write_SPI Hängen.
Es sieht so aus als ob er in der While Schleife hängt vom Write_SPI():
Pins sind korreckt verbunden und nachgemessen.
Port definitionen stimmen