www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten per UART am HT


Autor: heute (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!


zum prüfren  meine Rechnungen im Program habe ich daten per UART am 
Hyper T ausgegeben. daten könne schon am Terminal ankommen. aber die 
Routine läuft in ein interrupt, das 1ms zykluszeit haben soll. die 
Ausgabecode dauer schon 0,4s und damit ann das programm nicht gut 
laufen. die  Baudrate habe ich 9600 ,8 Datenbit und 1 stopbit und keine 
parität wurde eingestellt.

1. ich will die die code für ausgabe von dem routine wo anders schreiben 
(in main  z.B) , damit die routine für meine berechnung seine zykluszeit 
richtig macht.meine einstellung sind Baudrate 9600, 8 datenbit, 1 
stopbit
muss unbedingt echtzeit programmiert? oder kann mann anders in main 
schreiben, so dass sogar die daten richtig am hyper T und die zykluszeit 
des Interrupt(1ms) richtig funktioniert.?

2.muss unbedingt die Baudrate auf 19200 ändern?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sei so nett und lies Dir das noch mal durch. Meinst Du wirklich, daß 
andere Leute verstehen, was Du mitteilen willst?

Autor: heute (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly schrieb:
> Sei so nett und lies Dir das noch mal durch. Meinst Du wirklich, daß
>
> andere Leute verstehen, was Du mitteilen willst?

hallo Rufus,

entschuldigung wenn ich mich nicht richtig erklärt habe.
nicht schlimm anders könnte ich o formulieren.

ich benutze ein Timer-interrupt , das alla 1ms ein Interrupt auslösen 
soll.in dieser Zeit wird ein Rechenprogrambearbeitet. von diesem program 
will ich die Daten bzw. Rechnungsergebnisse mit UART am Hyper Terminal 
von PC ausgeben. aus internet habe einige code dafür benutzt. und kann 
ich schon nach jeder rechnung was ausgeben mit folgende code.




sprintf(array,"w=%d\n",w);
write(0,array);



#define CR     0x0D

int putchar(int ch)  {                   /* Write character to Serial 
Port  */

  if (ch == '\n')  {
      while(!(0x020==(COMSTA0 & 0x020)))
      {}
    COMTX = CR;              /* output CR */
    }
    while(!(0x020==(COMSTA0 & 0x020)))
    {}

   return (COMTX = ch);
}


int getchar (void)  {                      /* Read character from Serial 
Port */

     while(!(0x01==(COMSTA0 & 0x01)))
     {}
    return (COMRX);
}

void write (int file, char * ptr ) {
  //int i;
 // for (i = 0; i < len; i++)
 while(!(*ptr == 0))
 putchar (*ptr++);
  //return len;

}

damit bekommt man schon die ergebnisse im HT, nur dass, dieses Method 
viel zeit braucht ungefähr 0,5s für die ganze rutine.  der 
timer-interrupt soll nur 1ms dauert. deswegen finde ich nicht richtig 
die ausgabe indem routine Berechnung zu machen. will in dem Main machen, 
aber soll irgendwie anpassen, damit es nich so viel zeit braucht oder 
anders schreiben? das sind meine gedanken.

ich bin nicht so fit in softwareentwicklung. will aber gerne lernen.

vielen dank

Autor: Ohforf Sake (ohforf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei nur 9600 baud klappt das nie in 1ms.
Pobier mal aus, wie schnell dein rs232 Interface läuft - mit etwa Glück 
gehen 115200 baud oder so, das spart viel Zeit.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Überleg mal, wie lange die Übertragung eines Zeichens bei 9600 Baud 
braucht, und zähle mal, wieviele Zeichen Du in Deiner Interruptroutine 
ausgeben willst.

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.