Gast
#2875532
Hallo, ich bin momentan dabei, eine Firmware für einen C8051F320 von Silabs zu schreiben, die nichts weiter tun soll, als Daten über USB zu empfangen und dann per SPI zu einem anderen uC weiterleiten soll und andersherum solls natürlich auch funktionieren. Dafür muss ich jedoch relativ große Datenpakete (128 Byte) zwischenspeichern. Am liebsten so viele wie möglich. Da ist auch schon mein Problem. Ich habe mir für die Daten zwischen zu speichern, einen Ringspeicher angelegt, der dafür nachfolgende Variablendeklarationen nutzt. Die inPackets und outPackets sind structs. Die inPackets 17 Byte groß und die outPackets 128 Byte groß. Wenn ich nun mehr wie 1 Arrayelement der OutPackets anlegen möchte oder mehr als 6 der in Packets, dann kompiliert er trotzdem noch richtig, der uC arbeitet das Programm aber nicht ab. Der XRAM ist damit ja bei weitem nicht voll. Ich habe jetzt schon Stunden damit verbracht mir die Anleitung des Compilers durchzulesen aber leider finde ich den Fehler nicht. Vll. hat ja einer von euch eine Idee. SEG_XDATA USB_IN_PACKET inPackets[NUMBER_OF_IN_PACKETS]; SEG_XDATA USB_OUT_PACKET outPackets[NUMBER_OF_OUT_PACKETS]; SEG_XDATA USB_IN_PACKET *pWriteInPacket; //next free position to write In Packet SEG_XDATA USB_IN_PACKET *pReadInPacket; //next position to read In Packet SEG_XDATA USB_OUT_PACKET *pWriteOutPacket; //next free position to write Out Packet SEG_XDATA USB_OUT_PACKET *pReadOutPacket; //next free position to read Out Packet Viele Grüße Matthias