batti112
05.08.2004, 01:00
Hi!
Ich habe ein für mich unerklärbares Problem.
Habe auf einem Atmega8 das UART (USART) genutzt, und wollte nun zum Atmega32 umsteigen
(empfang mittels Interrupt).
Nun ja, ich dachte ich würde einfach die Headerfiles austauschen und es funzt, aber so einfach scheint das nicht zu sein.
Habe die Headerfile " iom8.h " durch "iom32.h" ausgetauscht, ansonsten ist das Programm das gleiche geblieben (An den Headerfiles kann es nicht liegen).
Auch die Register die ich anspreche sind beim 8. und beim 32 die selben.
Als Compiler nutze ich den avr-gcc.
Ich bin echt ratlos, kann mir da irgendjemand helfen?
MfG
Batti
************************************************** *******************************
#include <iom32.h>
#include <interrupt.h>
#include <sig-avr.h>
SIGNAL(SIG_UART_RECV)
{
uart_send( inp(UDR) );
}
void init_uart()
{
outp( (CPU_Frequency / (UART_Baud_Rate*16L)) - 1 , UBRRL );
outp( 0, UBRRH );
outp( (1 << URSEL) | (3 << UCSZ0), UCSRC);
outp( (1<<RXCIE) | (1<< TXEN) | (1<<RXEN), UCSRB);
}
void uart_send(char character)
{
loop_until_bit_is_set( UCSRA, UDRE );
outp( character, UDR );
}
int main()
{
init_uart();
uart_send('H');
uart_send('a');
uart_send('l');
uart_send('l');
uart_send('o');
uart_send(10);
uart_send(13);
sei();
while(1);
return 0;
}
**********************************************
Ich habe ein für mich unerklärbares Problem.
Habe auf einem Atmega8 das UART (USART) genutzt, und wollte nun zum Atmega32 umsteigen
(empfang mittels Interrupt).
Nun ja, ich dachte ich würde einfach die Headerfiles austauschen und es funzt, aber so einfach scheint das nicht zu sein.
Habe die Headerfile " iom8.h " durch "iom32.h" ausgetauscht, ansonsten ist das Programm das gleiche geblieben (An den Headerfiles kann es nicht liegen).
Auch die Register die ich anspreche sind beim 8. und beim 32 die selben.
Als Compiler nutze ich den avr-gcc.
Ich bin echt ratlos, kann mir da irgendjemand helfen?
MfG
Batti
************************************************** *******************************
#include <iom32.h>
#include <interrupt.h>
#include <sig-avr.h>
SIGNAL(SIG_UART_RECV)
{
uart_send( inp(UDR) );
}
void init_uart()
{
outp( (CPU_Frequency / (UART_Baud_Rate*16L)) - 1 , UBRRL );
outp( 0, UBRRH );
outp( (1 << URSEL) | (3 << UCSZ0), UCSRC);
outp( (1<<RXCIE) | (1<< TXEN) | (1<<RXEN), UCSRB);
}
void uart_send(char character)
{
loop_until_bit_is_set( UCSRA, UDRE );
outp( character, UDR );
}
int main()
{
init_uart();
uart_send('H');
uart_send('a');
uart_send('l');
uart_send('l');
uart_send('o');
uart_send(10);
uart_send(13);
sei();
while(1);
return 0;
}
**********************************************