Gast
#727350
Hallo miteinander
Ein alt bekanntes Problem und ich hab viel nachgeschaut und bekomm schon
graue haare..
Ich krieg das einfach nicht hin. Ich möchte ein Zeichen über USART1
senden aber hyperterminal zeigt mir ein falsches Zeichen:
/* INCLUDE
========================================================================
==*/
#include <avr/io.h>
/* DEFINES
========================================================================
==*/
#define CPU 14745600
#define BAUD_USER 115200
#define BAUD_CHIP 115200
#define HOST_TX_ON PORTC |= 0x02
#define HOST_TX_OFF PORTC &= ~0x02
#define HOST_RX_ON PORTC |= 0x01
#define HOST_RX_OFF PORTC &= ~0x01
#define HOST_SHDN_ON PORTD |= 0x80
#define HOST_SHDN_OFF PORTD &= ~0x80
/* EXTERNAL VARIABLES
===============================================================*/
/* FUNCTION PROTOTYPING
=============================================================*/
void SetupSystem(void); // HW-haufen anfahren..
void uart_putc(unsigned char); // Transmit USART1 Character
/* MAIN
========================================================================
=====*/
int main (void)
{
SetupSystem();
uart_putc('B');
while(1)
{
/* Endlos Schleife*/
}
return 0;
}
/* FUNCTIONS
========================================================================
*/
void SetupSystem()
{
//Ausgänge definieren
DDRA |= 0x01; // PA0 (RST)
DDRB = 0x00; // Kein Ausgang
DDRC |= 0x03; // PC0 (RXENABLE), PC1 (TXENABLE)
DDRD |= 0x8C; // PD1 (TXD0), PD3 (TXD1), PD7 (SHDN)
//Ausgänge Initialisieren
HOST_TX_ON;
HOST_RX_ON;
HOST_SHDN_OFF;
//USART0 (Chip) definieren
//USART1 (Host) definieren
UBRR1L = 0x07; // Baudrate Register auf 7 weil fosc/16*BAUD - 1
(115200)
UBRR1H = 0x00;
UCSR1A &= ~0x02;
UCSR1C = 0x06; // 8 Data, 1 Stop, No parity
UCSR1B |= 0x08; // TX Enable
// Flush Receive-Buffer (entfernen evtl. vorhandener ungültiger
Werte)
do
{
UDR1;
}
while (RXC1);
}
void uart_putc(unsigned char c)
{
while (!(UDRE1)) /* warten bis Senden moeglich */
{
}
UDR1 = c; /* sende Zeichen */
}
Die Fuses sind gesetzt CKSEL=1111 SUT=11
Ich weis einfach nicht was ich falsch mache. Habt Ihr noch eine Idee?
Hab auch schon probiert den jtagicemkII nach dem programmieren zu
entfernen und funktioniert auch nicht. Hab auch 1 zu 1 die Beispiele
kopiert und passiert immer das gleiche. Kabel habe ich auch schon
gewechselt. Aber es muss doch etwas mit der Baud zu tun haben.. Hab
leider kein KO in der nähe nur ein billiges Multimeter :)
Ich danke für eure Hilfe!
Grüsse
Simon