- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Daten via RS232 ins Eeprom und zurück

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2005
    Beiträge
    21

    Daten via RS232 ins Eeprom und zurück

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo, ich habe viele Parameter die in einer Struktur zusammengefasst sind. Diese werden auch im Eeprom abgelegt. Welche effiziente Möglichkeiten gibt es diese Parameter auf einem PC zu ändern und wieder ins Eeprom zu schreiben.

    Bisher habe ich da an USART Schnittstelle gedacht, die die Parameter einer nach dem anderen an den PC übertragt, wo sie ein Windows Programm aufbereitet.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Du hannst die Struktur als ganzes übertragen.
    Den typedef dafur machst du in einem Header, den du sowohl in dem AVR-Programm, als auch in dem PC-Teil includest.
    Gelesen und Geschreiben ins EEPROM werden nicht die einzelnen Komponenten, sondern ein ganzer Datensatz als Block.
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2005
    Beiträge
    21

    Daten via RS232 als ganzer Block

    ist leichter gesagt als getan. Das Problem ist auch nicht so sehr das Schreiben ins Eprom - das kann man schon blockweise machen - sondern die Übertragung.

    Bisher verfolge ich folgende Strategie:

    1. Lesen der Daten aus dem Eeprom mit
    eeprom_read_block(&gPidParam,&ePidParam,sizeof(gPi dParam));

    2. Senden der Daten mit
    uart_putc('<'); // start character
    uart_put_dec(gKupParam.GesWeg,DATASIZE,'0');

    so dass folgender String entsteht:
    <0360;0016;0016;0001;0150;0205;0075;0003>

    --> leider habe ich noch mehr Parameter so dass ich sehr viele uart_put_dec Befehle nötig sind

    3. Separieren der Daten auf dem PC in Visual C++ kein Problem

    4. Daten ausgeben, evtl. ändern

    5. Erzeugen eines Strings, muss ich mir noch überlegen

    6. Senden des ganzen Strings

    7. Separieren der Daten auf dem uC und schreiben der Daten wieder Blockweise zurück ins Eprom


    So, wie gesagt ich Suche nach einen Alternative bzw. Optimierung der einzelnen Punkte. z.B. muss jeder Wert einer Struktur mit
    uart_put_dec(gKupParam.GesWeg,DATASIZE,'0'); gesenden werden.

    --> evtl. gibt es da schon eine Alternative den ganzen Datenblock der Struktur zu senden. Wenn ja mit welchem Befehl und welche Lib?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Du sendest die Daten nicht als ASCII, sonder einfach als Bytes und setzt sie im PC wieder zusammen:

    Code:
    unsigned char i;
    const unsigned char *p = (const unsigned char *) &gPidParam;
    
    uart_putc ('<');
    
    for (i=0; i < sizeof (gPidParam); i++)
    {
       uart_putc (*p++);
    }
    Das Zusammensetzen am PC geht genauso. Zu achten ist darauf, daß bei int etc die Endianess stimmt. AVR ist little Endian, d.h. das low-Byte eines int steht an der kleinsten Adresse. Ist das am PC auch so, musst du nix weiter tun. Ansonsten musst du in das int-Format konvertieren.
    Disclaimer: none. Sue me.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    24.03.2005
    Beiträge
    21
    Hallo Sprinter,

    vielen Dank für den Tip, jetzt muss ich nur noch schauen, wie ich eine Struktur in meiner Dialogklasse einbinde.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress