UART mit Atmega8535 Problem
Hallo!
Ich habe mit dem programmieren von Mikrocontrollern erst vor kurzem angefangen, doch
jetzt habe ich ein Problem. Ich benutze zum Programmieren das STK500 und den Mikrocontroller
ATMEGA8535.
Mit dem unten stehenden Programm möchte ich, den Buchstaben x über rs232 an den PC senden, doch da
kommt nix an. Könnt Ihr mir anhand des Programmes sagen was ich falsch mache.
Danke!
#include <stdint.h>
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
#define UART_BAUD_RATE 9600
UBRR = F_CPU / (UART_BAUD_RATE * 16L) - 1;
int main(void)
{
UCSRB |= (1<<TXEN);
UCSRC |= (1<<URSEL)|(3<<UCSZ0);
while (!(UCSRA & (1<<UDRE)));
UDR = 'x';
return 0;
}
brauche hilfe bei uart mit interrupt
Hallo!
Ich brauche mal nochmal Hilfe. Ich habe versucht über rs232 vom PC auf den Controller eine 1 zu senden und dann soll eine LED ausgehen. Das habe ich per Interrupt versucht, doch es funbktioniert leider nicht.
Kann einer mal den Quelltext anschauen und sagen was ich falsch gemacht habe?
Danke!
#include <avr/io.h>
#include <avr/interrupt.h>
#define USART_RXC_vect _VECTOR(14)
#define F_CPU 1000000UL
#define BAUD 9600UL
#define UBRR_BAUD ((F_CPU/(16L*BAUD))-1)
uint8_t buffer;
void uart_init(void)
{
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0xFF);
UCSRB = (1<<TXEN) | (1<<RXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
ISR(USART_RXC_vect)
{
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
while (!(UCSRA & (1<<RXC)))
buffer = UDR;
}
void led_init(void)
{
if(buffer==0x31)
PORTA=0x01;
else
PORTA=0x00;
}
int main(void)
{
sei();
DDRA = 0xff;
led_init();
uart_init();
}