www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik fleury uart - startschwierigkeiten


Autor: DeMarc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

scheitere gleich am Anfang meiner UART Versuche - habe mir test_uart.c 
mitsamt uart bibliotheken von Peter Fleury runtergeladen und auf meinen 
AVR Tiny aufgespielt. Das funktioniert noch einwandfrei, d.h. ich bekomm 
bei Programmstart "String stored in SRAM String stored in FLASH 134" 
angezeigt und kann von meinem PC Daten zum Mikrocontroller schicken und 
bekomm das Ganze wieder zurückgeschickt. Soweit scheint also alles 
(Verkabelung, Takt,  ...) i.O. zu sein.

Wenn ich aber ganz simpel die Zeile

uart_puts("String stored in SRAM\n");

verdoppele und zwei Zeilen ausgeben will

uart_puts("String stored in SRAM\n");
uart_puts("String2 stored in SRAM\n");

funktioniert überhaupt nichts mehr.


wie geht so was ?


gruß
Marc

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich kann dir bei deinem Problem leider nicht helfen, da ich selber erst 
am Anfang stehen, und gerade meine ersten Versuche mit einem ATMega8 und 
UART mache.
Könntest du vielleicht einen Link posten, wo du deinen Code herhast, 
oder gleich den ganzen Code? Das wäre sehr nett, weil dann könnte ich 
den Code mal durchlesen, und versuchen dann einen eigenen zu schreiben.
Vielen Dank schon einmal im Voraus.
Gruß, Steffen

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie geht so was ?

Könnte da dran liegen dass der Tiny (welcher?) zu wenig RAM hat, und die 
2. Zeile selbiges schon überfüllt....

Autor: DeMarc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan

ich verwende einen Attiny 2313 der mit 8 Mhz läuft - die Baudrate hab 
ich auf   9600 baud laufen.

@Steffen

die sehr gute Seite von Peter Fleury findest du hier
http://www.jump.to/fleury

speziell die uart dateien wie ich sie hergenommen habe gibts hier zum 
download
http://homepage.hispeed.ch/peterfleury/uartlibrary.zip

wär nett wenn du das mal bei dir nachprobieren könntest.

grüße
Marc

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Makefile ist der Falsche µC eingetragen! (Wenn du das benutzt, 
trag mal "MCU = attiny2313" und "F_CPU=8000000" korrekt ein.
Der Attiny2313 hat nur 128 Bytes SRAM, davon sind 24+69 Bytes 
(sections .data und .bss) belegt.
Da kannst du nicht so viel machen:
 - Alle konstanten Strings in den Flash (uart_puts_P hast du ja schon 
entdeckt)
 - Überlegen, ob du die Puffer verkleinern kannst (UART_RX_BUFFER_SIZE 
und UART_TX_BUFFER_SIZE in "uart.h").
 - bei dem Winavr-071221 (ich wahr bisher zu faul zum updaten) muss man 
extra abschalten, dass main() als normale Funktion behandelt wird:
int main(void) __attribute__((OS_main));
int main(void)
{
//...
Der Prototyp für main verhindert eine größere (unnötige) Push-Orgie 
bei Programm-start (Wenn der GCC meldet "directive ignored" o.ä. kannst 
du's ja wieder löschen)

hth. Jörg

Autor: deMarc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für die Anregungen

gruß
Marc

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wenn ich aus dem .zip- File den Programmcode von test_uart in ein neues 
GCC- Project bei AVR Studio kopiere, und dann auf Build Active 
Configuration klicke, dann kommt folgende Buildmeldung:

rm -rf UARTTEST.o  UARTTEST.elf dep/* UARTTEST.hex UARTTEST.eep 
UARTTEST.lss UARTTEST.map
Build succeeded with 0 Warnings...
avr-gcc.exe  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP 
-MT UARTTEST.o -MF dep/UARTTEST.o.d  -c  ../UARTTEST.c
In file included from ../UARTTEST.c:17:
d:/programme/avr_studio/bin/../avr/include/avr/signal.h:36:2: warning: 
#warning "This header file is obsolete.  Use <avr/interrupt.h>."
avr-gcc.exe -mmcu=atmega8 -Wl,-Map=UARTTEST.map UARTTEST.o     -o 
UARTTEST.elf
UARTTEST.o: In function `main':
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:46: 
undefined reference to `uart_init'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:60: 
undefined reference to `uart_puts'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:65: 
undefined reference to `uart_puts_p'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:73: 
undefined reference to `uart_puts'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:79: 
undefined reference to `uart_putc'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:90: 
undefined reference to `uart_getc'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:106: 
undefined reference to `uart_puts_p'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:115: 
undefined reference to `uart_puts_p'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:123: 
undefined reference to `uart_puts_p'
C:\Dokumente und Einstellungen\Steffen 
Oesterwind\Desktop\EigeneProgramme\UARTTEST\default/../UARTTEST.c:128: 
undefined reference to `uart_putc'
make: *** [UARTTEST.elf] Error 1
Build failed with 10 errors and 1 warnings...

Woran liegt das? Wo, bzw. wie muss ich die Uartlib einfügen, damit alles 
korrekt funktioniert?
Tschuldigung, dass ich hier jetzt so in den Thread hineinplatze ;-).
Vielen Dank schon einmal im Voraus.
Gruß, Steffen

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ (derelektroniker):
Du musst die Datei "uart.c" unter "Source-files" einzufügen (oder 
externes Makefile benutzen - sollte aber nicht nötig sein)

rtfm, Jörg

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen Dank für den Tip!!!
Muss ich das jetzt immer machen, wenn ich eine lib von Peter Fleury 
verwende?
Also muss ich uart.c in Source File einfügen, und dann noch uart.h 
includen?
Ich werde nun mal die UART- Verbindung testen. Ich hab leider nur einen 
4 Mhz Quarz gerade da, funktioniert das mit dem auch (ist ja kein 
Baudratenquarz)?
Gruß, Steffen

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, was ich noch vergessen hatte: Wie muss ich den ATMega8 fusen, 
damit er einen externen Quarzoszillator mit 4Mhz verwendet?
Vielen Dank schon einmal im Voraus.
Gruß, Steffen

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
also bei mir klappt es mit einem Mega8 ohne Probleme. Ich hab auch schon 
die Zeile:
uart_puts("String stored in SRAM\n");
verdoppelt, und es klappts immernoch problemlos.
Gruß, Steffen

Autor: deMarc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habs mittlerweile auch hinbekommen

Marc

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.