mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik u-Controller-Programmierung


Autor: Falko98 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo leute,

ich hab da ein problem,
ich arbeite das erste mal nem u-Controller
und möchte, dass er über eine rs232 schnittstelle mit
meinem java-programm kommuniziert.

mein problem ist, dass ich nicht weiß,
wie ich die daten auf dem u-controller mittels c auffangen soll und
die veränderten daten dann zurück schicken soll.

vom java programm kommt ein string ==> wird vom u-Controller
verarbeiter durch c ==> und schickt dann einen string wieder zurück zum 
java-programm.

kann mir da jemand helfen???

        Gruß Falko98

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da können viele helfen, wenn sie den Typ des µC kennen und die benutzte 
Entwicklungsumgebung für den µC.

Autor: Meister Lampe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schaut Dein Protokoll aus?
Zeig mal dein Code was Du hast bisher. UART init usw...

Autor: Falko98 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nunja, der controller ist ein at 8051 auf einem demoboard
das java-programm habe ich mit netbeans gschrieben
und für den code am demoboard arbeite ich mit Keil uVision2

zurzeit habe ich nur den java code, um vernünftig weiter zuarbeiten 
brauche ich mal eine testversion zum überprüfen, ob es überhaupt 
funktioniert.

im grunde muss ich nur wissen, wie ich die programmierung mache zum 
empfangen und senden. und wie ich den String rüberbekomme.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> im grunde muss ich nur wissen, wie ich die programmierung mache zum
> empfangen und senden

Für das Senden und Empfangen am µC schaust du einfach
mal ins Tutorial (entweder Asm oder C, am besten beides).
Ganz nach oben scrollen, ganz links, unter 'AVR'

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz,

das nutzt nichts das AVR Tutorial zu lesen denn 8051 ist kein AVR.

Keil uVision, du programmierst also in C ? Das Hello World Beispiel 
Programm (bestandteil des C Compiler) enthält ein UART Beispiel.

Reicht es für den Anfang ein "Echo" von der UART zu bekommen ?

Hast du überhaupt schon irgendein funktionsfähiges Programm für deinen 
Controller am laufen z.B. Blinky (ist auch als DEMO dabei) ?

Beschreibe bitte deinen Wissensstand.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> das nutzt nichts das AVR Tutorial zu lesen denn 8051 ist kein AVR.

Ah, sorry. Hab ich überlesen.


Autor: Peter Rauch (falko98)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab schon ein paar programme für den uC ist aber nichts, wo ich über 
eine rs232 komunizieren muss. Sind einfache Blinklichter/Lauflichter 
nichts besonderes.

Bei dem programm das ich jetzt mache habe ich einen Taschenrechner, über 
eine java- oberfläche werden die zahlen und die operatoren eingegeben 
und über rs232 zum uC gesendet. der verarbeitet das dann und zurück 
bekomme ich ebenfalls über die rs232 das ergebniss.

die java- Oberfläche und die berechnung am uC sind nicht das problem. 
mein problem ist, dass ich nicht weiss, wie ich den String (mit den 
Zahlen und den Operatoren) auf den uC bekomme und anschließend das 
ergebniss zurück.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falko98 wrote:

> mein problem ist, dass ich nicht weiß,
> wie ich die daten auf dem u-controller mittels c auffangen soll und
> die veränderten daten dann zurück schicken soll.


C hat dafür keine Funktionen, die mußt Du schon selber schreiben oder 
Beispiele lesen.

Zum Anfang würde ich als Protokoll Text-Daten empfehlen, die mit CR und 
oder LF abgeschlossen sind.

Die liest Du dann in einen Puffer (char-Feld) ein, bis eben CR/LF kommt 
und hängst noch ne /0 an.
Dann kannst Du das Feld bearbeiten, wie Du lustig bist (strncmp, sscanf 
usw.).
Und die einzelnen Bytes wieder senden.

Wenn das funktioniert, kann man das Einsammeln und Senden der Bits in 
den Puffer als Interrupthandler schreiben.


Peter

Autor: Peter Rauch (falko98)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mal im internet noch ein wenig herumgeschaut und das angefunden:

fürs senden:
void senden(void)
{
  int u;
  u=0;
  l=strlen(test);
  for(u=0;u<=(l-1);u++)
  {
    S1BUF=test[u];
    while((S1CON&0x02)==0x00)
      ;
    S1CON&=0xFD;
  }
  blank_lcd();
  print_lcd(1,1,"Gesendet");

}

fürs empfangen:
void serISR(void) interrupt 16
{
  if((S1CON&0x01)==0x01)
  {
    S1CON&=0xFE;
    empf[e]=S1BUF;
    if(empf[e]=='#')
    {
      serflag=1;
    }
    else
      e++;
  }
}

jetzt ist mein problem, das ich das nicht verstehe. dieses programm ist 
für ein demoboard gedacht und ich kann mit den ganzen variablen nichts 
anfagen.
kann mir einer von euch erklären, was das ganze bedeutet???

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.