Gast
#1375144
Hi hab bereits hier im Forum gesucht. Leider fand ich kein passendes
Thema zu meinem Problem.
Ich versuche auf einem AT90USB1287 beim betätigen eines Tasters ein
Zeichen zu senden.
Quellcode:
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 8000000UL
#define BAUD 19200UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)
// USART initialisieren
void uart_init(void)
{
// Baudrate einstellen (Normaler Modus)
UBRR1H = (uint8_t) (UBRR_BAUD>>8);
UBRR1L = (uint8_t) (UBRR_BAUD & 0x0ff);
// Aktivieren von receiver und transmitter
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
// Einstellen des Datenformats: 2 Stoppbit, 8 Datenbits
UCSR1C = (1<<USBS1)|(3<<UCSZ10);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR1A & (1<<UDRE1)) )
;
/* Put data into buffer, sends the data */
UDR1 = data;
}
int main(void)
{
// Hardwareinitialisierung
DDRE = 0xff;
DDRD &=~ ((1 << DDD0) | (1 << DDD1) | (1 << DDD4) | (1 << DDD5)
| (1 << DDD6));
uint8_t data;
// USART initialisieren
uart_init();
while (1)
{
if (!( PIND & (1<<PIND4) )) { //wenn Taster S4 betätigt (low)
USART_Transmit('z'); //Sende z
}
}
}
Wenn ich den Taster halte und dabei den Reset Taster drücke, sendet er
was. Allerdings nur Müll! Lauter Nullen. Ohne Reset passiert beim
Betätigen gernichts.
An dieser Stelle soll erwähnt werden das ich Anfänger bin!
Hoffe jemand weiß einen Rat.
Danke im vorraus