blu3
12.02.2006, 16:40
Hallo!
Ich habe einen RN-Control mit Atmega32. Mein Problem ist nun, dass ich mit dem Program (siehe unten) das immer ein 'X' verschicken soll nichts empfange. Ein anderes Programm (das Interrupts) verwendet funktioniert ohne Probleme.
(Ein Hardwareschaden oder falscher Anschluss kann also ausgeschlossen werden.) Ich verwende auch die gleiche Konfiguration wie im Testprogram (nur ohne Interrupt). Falsche Baudrate kann also auch ausgeschlossen werden.
Aber woran liegt es nun?
#include <avr/io.h>
void init_uart(void);
void timer (void);
void uart_putc(char c);
void init_uart (void)
{
UBRRH = 0;
UBRRL = 207;
UCSRA = 1<<U2X;
UCSRB = (1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
void uart_putc(char c)
{
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}
void timer (void)
{
TCNT0 = 0;
TCCR0 = (1<<CS00)|(1<<CS02);
}
int main (void)
{
uint8_t ticks = 0;
init_uart();
timer();
for (;;)
{
if (TCNT0 > 20)
{
ticks++;
TCNT0 = 0;
}
if (ticks == 128)
uart_putc('X');
}
}
Danke
blu3
Ich habe einen RN-Control mit Atmega32. Mein Problem ist nun, dass ich mit dem Program (siehe unten) das immer ein 'X' verschicken soll nichts empfange. Ein anderes Programm (das Interrupts) verwendet funktioniert ohne Probleme.
(Ein Hardwareschaden oder falscher Anschluss kann also ausgeschlossen werden.) Ich verwende auch die gleiche Konfiguration wie im Testprogram (nur ohne Interrupt). Falsche Baudrate kann also auch ausgeschlossen werden.
Aber woran liegt es nun?
#include <avr/io.h>
void init_uart(void);
void timer (void);
void uart_putc(char c);
void init_uart (void)
{
UBRRH = 0;
UBRRL = 207;
UCSRA = 1<<U2X;
UCSRB = (1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
void uart_putc(char c)
{
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}
void timer (void)
{
TCNT0 = 0;
TCCR0 = (1<<CS00)|(1<<CS02);
}
int main (void)
{
uint8_t ticks = 0;
init_uart();
timer();
for (;;)
{
if (TCNT0 > 20)
{
ticks++;
TCNT0 = 0;
}
if (ticks == 128)
uart_putc('X');
}
}
Danke
blu3