Hallo, ich möchte einen dynamischen Empfangspuffer für die Übertragung vom PC zum controller schreiben, allerdings hab ich im Moment keinen großen Durchblick. Habs auf folgende Weise versucht aber der Compiler bedankt sich mit Fehlermeldungen. // global static volatile unsigned int *Buffer = malloc(MAX_BUFFER * sizeof(char)); UART.c:22: warning: implicit declaration of function `malloc' UART.c:22: warning: initialization makes pointer from integer without a cast UART.c:22: error: initializer element is not constant // Interrupt SIGNAL(SIG_UART_RECV) { Buffer[zaehler] = UDR; zaehler++; } // Main // Beim Auslesen des ersten werts nachrücken! Byte = Buffer[0]; zaehler = 0; while (Buffer[zaehler] =| NULL) { Buffer[zaehler] = Buffer[zaehler+1] } Kann mir jemand sagen was ich falsch mache oder hat jemand ein Beispielprogramm wie man das ein wenig eleganter machen kann. Wär Klasse, danke Stefan
Hallo, 1. wieso verwendest du malloc??? - auf einem Controller ist der Speicher bereits bei der Compilierung vergeben. Der befehl malloc erzeugt eine menge an zusätzlichem Code. Ich verwende bei solchen sachen ein Array. z.B. unsigned char rxbuffer[100]; Dein 2. fehler ist wohl eine folge des ersten fehlers, bei welchem ein Fehler im malloc-aufruf angezeigt wird. Dein 3. fehler kommt von dem static in der Deklaration der Variable. Static wird meines wissens nur in Funktionen verwendet um beim erneuten funktionsaufruf die Variable nicht zu verlieren. Gruß, Florian
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.