Gast
#2222696
Hi,
brauche dringend Hilfe! Weis echt nicht wo das Problem liegt... denke
aber ehr beim Code oder beim Terminalprogramm, Hardware müsste stimmen.
Wär cool fall irgendjemand von euch mal zeit hätte und mein Code durch
gehn könnte ob ich irgendwo ein Fehler gemacht habe.
Benutze den Atmeg88 mit eim 18,432 Mhz Quarz habe das Programm laut
Datenblatt und Programm Beispiel vom GCC-Tutorium geschrieben.
Und als Terminal Programm habe ich Hterm benutzt und Hyperterminal
(obwohl ich da nicht so ganz durch geblickt habe) Stelle immer 9600 Baud
und 1 stopbit zeigt aber gar nichts an.
Hoffe ihr könnt mir helfen.
Grüße
Pete
Hier mein ProgrammCode wusste leider nicht wie ich ihn als solchen
darstellen kann:
// Festlegung der Quarzfrequenz
#define F_CPU 18432000UL
// Include von Header-Dateien
#include <avr/io.h>
#include <stdbool.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Festlegung der Baudrate
#define BAUD 9600UL
#define MYUBRR F_CPU/16/BAUD-1
#define SET_BIT(PORT,BIT) ((PORT) |= (1<<(BIT))) // macro to set
bits
#define CLEAR_BIT(PORT,BIT) ((PORT) &= ~(1<<(BIT))) // macro to
clear bits
void USART_Init(void);
int USART_Transmit_c(unsigned char c);
// Hauptprogramm
==============================================================
int main( void )
{
unsigned char c;
USART_Init();
while(1)
{
for (uint8_t i=0; i<=9; ++i)
{
c = i + '0';
USART_Transmit_c(c);
}
_delay_ms(1000);
}
}
// Unterprogramme
==========================================================
// UART Initalisieren=================================
void USART_Init(void)
{
CLEAR_BIT(DDRD,0);
CLEAR_BIT(PORTD,0);
UBRR0H=0x00;
UBRR0L=MYUBRR;
UCSR0A |= (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) |
(0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B |= (0<<RXCIE0) | (1<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) |
(1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80);
// Set frame format: 8data, 1stop bit
UCSR0C |= (0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) |
(0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0);
}
// Zeichen an PC versenden=================================
int USART_Transmit_c(unsigned char c)
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) )
{
}
/* Put data into buffer, sends the data */
UDR0 = c;
return 0;
}