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.
Das ruft nach einem Spezialisten für geriatrisches Programmieren. Ich bin raus! ;-)
C ist doch noch gar nicht im Renteneintrittsalter.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.