-
-
Neuer Benutzer
Öfters hier
UART String bzw. Variable senden funktioniert nicht
Hallo,
arbeite mich nun schritt für schritt in dem Tutorial von www.microcontroller.net durch wie empfohlen. Allerdings häng ich jetzt schon seit einiger Zeit an einem Problem um steig nicht dahinter an was es scheitert.
"#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
#define UART_BAUD_RATE 9600
int main (void) {
UCSRB |= (1<<TXEN);
UCSRC |= (1<<URSEL)|(3<<UCSZ0);
UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8 );
UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );
while (!(UCSRA & (1<<UDRE))) {
}
UDR = 'c';
return 0;
}"
Dies ist mein letztes "funktionierendes" Programm um im HyperTerminal ein "c" darzustellen.
Dies ist der Code nach dem Punkt "Schreiben einer Zeichenkette (String)":
"#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
#define UART_BAUD_RATE 9600
int main (void) {
UCSRB |= (1<<TXEN);
UCSRC |= (1<<URSEL)|(3<<UCSZ0);
UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8 );
UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );
int uart_putc(unsigned char c)
{
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}
UDR = c; /* sende Zeichen */
return 0;
}
}"
Beim kompilieren scheint alles zu klappen, nur wird nichts ausgegeben??? Warum???
Auch beim nächsten Versuch mit einer Variable bringt gleich der Compilere ne Meldung: for loop initial declaration used outside c99 mode
hier der code:
"#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 4000000
#endif
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
#define UART_BAUD_RATE 9600
int main (void) {
UCSRB |= (1<<TXEN);
UCSRC |= (1<<URSEL)|(3<<UCSZ0);
UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8 );
UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );
char c;
for (uint8_t i=0; i<=9; ++i) {
c = i + '0';
uart_putc( c );
// verkuerzt: uart_putc( i + '0' );
}
}"
Auch das versteh ich nicht. Währe mir über eine korrekte Lösung und kleine erklärung warum und weshalb dankbar. Ansonsten denk ich komm ich zufriedenstellend voran. Input Output war kein Problem.
MfG
Blue
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen