Forum: Mikrocontroller und Digitale Elektronik 512 Byte-Sektor einer SD-Karte mit E32-868T drahtlos übertragen


von Wolle G. (wolleg)



Lesenswert?

Nachdem es mir unter Verwendung der Hilfen aus 
Beitrag "Re: Sende/Empfangsvorgang mittels nur 1St. µC" gelungen ist, 
einige Bytes zu übertragen, sollen jetzt mit dem Funkmodul E32-868T 
512 Bytes große Sektoren von SD-Karten übertragen werden. Bisher ist es 
mir nur gelungen, max. 58 Bytes in einem Rutsch zu übertragen. Dies 
würde evtl. dem Datenblatt entsprechen, wo es auf S.12 heißt:
The module can receive the user data via serial port, and transmit 
wireless data package of 58 bytes. When the
data inputted by user is up to 58 byte, the module will start wireless 
transmission. During which the user can input
data continuously for transmission.
When the required transmission bytes are less than 58 bytes, the module 
will wait 3-byte time and treat it as data
termination unless continuous data inputted by user. Then the module 
will transmit all the data through wireless
channel.
When the module receives the first data packet from user, the AUX 
outputs low level.
After all the data are transmitted into RF chip and transmission start , 
AUX outputs high level.
At this time, it means that the last wireless data package transmission 
is started, which enables the user to input
another 512 bytes continuously. The data package transmitted from the 
module working in mode 0 can only be
received by the module working in mode 0 or 1.

falls ich den englischen Text richtig verstanden habe.

Aus: (Seite 9)
5.6.2. Indication of wireless transmission
⚫ Buffer (empty): the internal 512 bytes data in the buffer are written 
to the RFIC (auto sub-packing).
⚫ When AUX=1, the user can input data less than 512 bytes continuously 
without overflow. when AUX=0, the internal 512 bytes data
in the buffer have not been written to the RFIC completely. If the user 
starts to transmit data at this circumstance, it may cause
overtime when the module is waiting for the user data, or transmitting 
wireless sub package.
⚫ Notes: When AUX = 1, it does not mean that all the UART data of the 
module have been transmitted already, perhaps the last packet
of data is still in transmission

würde ich herauslesen, dass es einen Puffer mit 512 Bytes geben könnte.
Ist die Annahne richtig und könnte man diesen 512 Bytes großen Puffer 
für mein Vorhaben nutzen? bzw. wie müssten meine Programme geändert 
werden.
Im Anhang die aktuell verwendeten Programme und ein Datenblatt zu 
E32-868T.

von Falk B. (falk)


Lesenswert?

Das ruft nach einem Spezialisten für geriatrisches Programmieren. Ich 
bin raus! ;-)

von Programmierer (Gast)


Lesenswert?

C ist doch noch gar nicht im Renteneintrittsalter.

von Wolle G. (wolleg)


Lesenswert?

Falk B. schrieb:
> Das ruft nach einem Spezialisten für geriatrisches Programmieren. Ich
> bin raus! ;-)

Etwas eigenartig.
Du willst doch bestimmt nicht sagen, dass Deine funktionstüchtigen 
Programme nach geriatrischen Gesichtpunkten erarbeitet wurden. Oder?

Bei meiner Datei „0221-TS- antwort_empfangen_512-Test.c“ wurde der 
wesentliche Teil  nahezu ohne Änderung von Deiner Datei „main.c“ 
verwendet. Ich sehe zwischen den Zeilen:

void antwort_empfangen(void){
    unsigned int i, j;
    for (i=0, j=0; i<TIMEOUT && j<4; i++ ){
        if (IFG2 & URXIFG1) {
            rx_daten[j++] = RXBUF1;
        }
        // ca. 5 Bitzeiten warten
        __delay_cycles(CYCLES_PER_UART_BIT_TIME*5);
    }

und
void antwort_empfangen(void){
    unsigned int  j,k;
    for (k=0, j=0; k<TIMEOUT && j<512; k++ )
    {
        LED_GRUEN_EIN;
        if (IFG2 & URXIFG1) {
        rx_daten[j++] = RXBUF1;
        }
         // ca. 5 Bitzeiten warten
        __delay_cycles(CYCLES_PER_UART_BIT_TIME*5);
        LED_GRUEN_AUS;
    }
keinen besonderen Unterschied.
Nur an Stelle von 4 Bytes (j<4) sollen jetzt 512 Bytes (j<512) 
übertragen werden.

Dass nur 58 Bytes statt 512 Bytes richtig angezeigt werden, das ist für 
mich jetzt das Problem. Ob es am Senden oder am Empfangen liegt, kann 
ich nicht erkennen.
Vielleicht kann jemand (unter Nutzung des Datenblattes) helfen.

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.