Forum: Mikrocontroller und Digitale Elektronik UART Peter Fleury RAMEND


von Nico (nico_l)


Lesenswert?

Hallo ich habe einen AtMega8 und möchte mit dem PC per UART 
kommunizieren. So habe ich mir die UART-Library von Peter Fleury geholt 
und das Testprogramm versucht zu komplieren. Am Testprogramm habe ich 
nichts geändert. Doch jedes Mal wenn ich es versuche dann kommt:
1
../uart.h:84:2: error: #error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"

Ich habe keine Ahnung warum es nicht funktioniert und was ist eigentlich 
RAMEND?

von hab noch was (Gast)


Lesenswert?

Das Problem hat mich auch schon verrückt gemacht.
Das in der uart.h nützt:
1
//für RAMEND
2
#include <avr/io.h>
Der Fehler kommt daher das RAMEND einfach nicht definiert ist.
RAMEND siehe:
http://www.nongnu.org/avr-libc/user-manual/group__avr__io.html

von Nico (nico_l)


Lesenswert?

Ich habe #include <avr/io.h> oben an uart.h eingefügt doch leider 
funktioniert es immer noch nicht.
Jetzt ist es aber so dass alle Funktionen die verwendet werden nicht 
funktionieren. Als Fehler kommt:
1
C:\Users\Nico\Mikrocontroller Programmierung\myAVR Board MK2 USB PLUS\Projects\UART\default/../UART.c:28: undefined reference to `uart_init'

Was kann ich dagegen tun? uart.h ist eingebunden.

von Karl H. (kbuchegg)


Lesenswert?

Nico L. schrieb:
> Ich habe #include <avr/io.h> oben an uart.h eingefügt doch leider
> funktioniert es immer noch nicht.

Der ist auch normalerweise nicht notwendig, der der Code der seinerseits 
uart.h includiert sowieso vorher schon <avr/io.h> includiert hat.

Gibs wieder raus. Das bringt nichts.

Wenn man sich bei den #includes an die Reihenfolge:
Zuerst die Systemheader
dann die projektspezifischen Header

hält (wie es P.Fleury in seinem Beispiel gemacht hat), dann muss ein 
Header File nie die allgmeinen System-Header Files includieren, 
höchstens ein paar spezifische. Da aber auf einem AVR ein *.c File mit 
größter Wahrscheinlichkeit sowieso avr/io.h includiert, ist es nicht 
notwendig, das in jeden Header mit reinzuziehen.

> Jetzt ist es aber so dass alle Funktionen die verwendet werden nicht
> funktionieren. Als Fehler kommt:
>
1
C:\Users\Nico\Mikrocontroller Programmierung\myAVR Board MK2 USB
2
> PLUS\Projects\UART\default/../UART.c:28: undefined reference to
3
> `uart_init'
4
>

Poste mal dein komplettes Projekt zusammengezippt.
Wenn du selber an den Buffergrößen nichts gedreht hast, könnte es noch 
sein, dass du bei der Projektgenerierung einen falschen Prozessor 
eingestellt hast, der einfach nicht genügend RAM hat

von Nico (nico_l)


Lesenswert?

Entschuldigung, bin auf der Leitung gestanden. Musste natürlich uartpf.c 
zum Projekt hinzufügen.

von Karl H. (kbuchegg)


Lesenswert?

Und verschieb dein Projekt auf einen Pfad, der nicht mit Leerzeichen 
gespickt ist. Als Softwareentwickler ist sowas meistens nicht besonders 
schlau.

Leerzeichn in Pfadnamen sind für BWL Studenten, die sich sonst nicht 
merken können, wo sie ihre PDF Präsentationen abgelegt haben.

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.