Forum: Mikrocontroller und Digitale Elektronik Problem mit Zeicheneinlesen(ATmega88)


von Maddin S. (schrank)


Lesenswert?

Hallo!

Meine C-Kenntnisse sind leider schon etwas eingerostet und bitte euch 
daher um Hilfe:

Programmiere gerade einen Atmega88 und will eine simple Zeichenabfrage 
programmieren:

Programm verlangt nach Eingabe und gibt die eingegebene Zahl dann wieder 
aus....
Das dürfte doch so aussehn :

      COMinit_void();// initialisiert Schnittstelle


        int anzahl;

      printf ("\nBitte eine Integer-Zahl eingeben : ");
      scanf ("%d",&anzahl);

      printf ("\n\nSie gaben %d ein\n",anzahl);

Hinweis:
Ich verwende einen FT232 der mir einen Com-Port am PC emuliert. 
Angeschlossen ist das ganze über USB. Mittels Terminal empfange/sende 
ich die Daten. Momentan bekomme ich nur "Bitte eine Integer-Zahl 
eingeben" als Endlosschleife zurück, Eingaben werden ignoriert. 
COMinit_void() initialisiert die Schnittstelle, hier stehen auch die 
Funktionen getchar und putschar drin. Die Initialisierung dürfte klappen 
(ist nicht von mir sondern von nem erfahrenen Programmierer).Hab mit 
Oszi auch schon gemessen, ob Daten am Controller ankommen,was der Fall 
ist.

Kann mir bitte jemand weiterhelfen?

Vielen Dank!!
ML

von Matt (Gast)


Lesenswert?

Überprüfe, ob COMinit_void() auch den Empfangsteil des UART aktiviert.

Vergleiche:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Empfangen

von Maddin S. (schrank)


Lesenswert?

ja ist aktiviert, habs auch nochmal überprüft!
Was mich auch etwas stutzig macht ist die Tatsache, dass das Senden nach 
dem Befehl scanf nicht aufhört und er auf keine Eingabe wartet...
Ich kanns mir nicht erklären...:(

von holger (Gast)


Lesenswert?

>Momentan bekomme ich nur "Bitte eine Integer-Zahl
>eingeben" als Endlosschleife zurück

Dann macht der uC bei scanf() vermutlich ne Bauchlandung
und startet neu.

von Maddin S. (schrank)


Lesenswert?

Wie würdet ihr denn diese Aufgabe lösen?
Ich komm da einfach nicht weiter..


Vielen Dank!

von Analog (Gast)


Lesenswert?

RX-Interrupt.

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.