-
          
	
		
		
	
	
	
	
		
	
	
		
			
- 
	
	
		
			
			
				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