Hallo,

um meine SPI-Verbindung zu testen, wollte ich mir schnell ein kleines Programm basteln, was mir die über SPI gelesenen Daten über UART auf meinem Terminal anzeigt. Ansich alleien Läuft der UART und auch der SPI Teil des Programmes. Nur im zusammenspiel, geht auf einmal nichts mehr.


Kann mir da evtl einer von euch nen Tip geben wieso ????

Code:
#include <inttypes.h> 
#include <stdio.h> 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

//#define F_CPU 			16000000 
//#define USART_BAUD_RATE 	19200 
#define USART_BAUD_SELECT 	51

volatile unsigned char data;
unsigned char status;

char cText[] = "Hello, UART !\r\n";

SIGNAL (SIG_SPI)
{
	data = SPDR;
	if (data =='0')	PORTC =0x00;	//LEDs an
	if (data =='5')	PORTC =0xff;	//LEDs an
}

void slave_init (void)
{
	DDRB |= (1<<PB6);					//MISO als Ausgang, der Rest als Eingang
	SPCR = (1<<SPE) | (1<<SPIE);		//Aktivierung des SPI + Interrupt
	status = SPSR;						//status löschen
}

//-----------------------------------------------------
void _writeChar(char c)
{
    while (!(UCSRA & (1<<UDRE))) {} 
        UDR = c; 
}
//-----------------------------------------------------
void _writeString(unsigned char *string) 
{ 
    while ( *string) 
        _writeChar(*string++); 
} 
//-----------------------------------------------------
 
/*void uart_init (void)
{
	UCSRB |= (1<<TXEN); 
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); 
    UBRRL = (unsigned char) USART_BAUD_SELECT; 
} */

int main(void)
{
    DDRC = 0xff;
	uart_init ();
	_writeString(cText); 
	slave_init ();
	sei();
	
	for (;;) ;
	return 0;
}


Prozessor: ATmega16

Mfg

Holger