Kornhaas.net
24.08.2005, 08:39
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 ????
#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
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 ????
#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