Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zum STK500 mit Atmega 8515, String senden über USART an Hyperterminal?


von Matze (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin neu hier im Forum und stelle meine erste Frage.

Ich bin ein Anfänger und habe mich schon zwei Wochen lang mit dem STK500 
und dem Atmega 8515 beschäftigt.

Taster abfragen und LEDs schalten sowie Zeichen an Hyperterminal sendenn 
klappt schon ganz gut. :-)

Nun schaffe ich es nicht ein komplettes Zeichen an Hyperterminal zu 
senden. :-(

Könnt ihr mir dabei bitte helfen und den folgenden Code so umschreiben, 
dass er funktioniert.
ich beschäftige mich jetzt schon einige Tage mit dem Problem ohne zu 
einer Lösung zu kommen.
diverse Foren und 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART  habe 
ich auch schon versucht zu verstehen.

das reicht alles nicht.

anbei mein kompletter code, um wenigstens ein Zeichen senden zu können.
würdet ihr so nett sein und ihn so umstellen, dass ein Textfeld gesendet 
werden kann?
Darüber würde ich mich sehr freuen, vielen Dank im Vorraus.

Viele Grüße, MAtthias.


#include <avr/io.h>


#ifndef F_CPU

#warning "F_CPU war noch nicht definiert, wird nun nachgeholt"


#define F_CPU 8000000UL

#endif



#define BAUD 4800UL      // Baudrate

// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = 
kein Fehler.


#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
  #error Systematischer Fehler der Baudrate grösser 1% und damit zu 
hoch!
#endif






int main(void)
{


UCSRB |= (1<<TXEN);

UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  // Asynchron 8N1

 UBRRH = UBRR_VAL >> 8;
 UBRRL = UBRR_VAL & 0xFF;


char name='emil';


 while (1)
{

 while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich 
*/
    {
    }


UDR = name;                    /* schreibt das Zeichen  auf die 
Schnittstelle */
t++;
}

von ... (Gast)


Lesenswert?

1) C-Buch lesen! Insbesondere den Unterschied zwischen character und 
string.
Hint: char name='emil'; ==> char name="emil";
Da ist aber dann noch mehr verkehrt.
2) hier weiter lesen: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Kapitel 17 verweist dann auf das hier:
3) http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART
Dort findest Du fertigen Beispielcode samt Erklärung, z.B. unter 
"Schreiben einer Zeichenkette (String)"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.