mikrocontroller.net

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


Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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-Tu...  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++;
}

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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-Tu...
Dort findest Du fertigen Beispielcode samt Erklärung, z.B. unter 
"Schreiben einer Zeichenkette (String)"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.