Daten per UART am HT

Gast #1749379
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?
Gast #1749424
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren