www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Das Code reinladen


Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich sitze seit einigen stunden und komme nicht mehr weiter. Ich hab ein 
Programm geschrieben und wollte es jetzt in µC reinladen. Beim 
Compilierung bekomme ich keine fehler angezeigt aber beim reinladen des 
Programms im µC folgendes error:

avrdude: ERROR: address 0x0810 out of range at line 129 of 
uartmyavr2.hex

Ich benutze für Attiny2313 und WinAVR entwicklungsumgebung.

hat das schon jemand gehabt? für jede hilfe bin ich dankbar.

Sam

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist das Code zu groß für den Tiny?
Das war ein Schuß ins Blaue, aber deine Forschungen sollten vielleicht 
erstmal in diese Richtung gehen. Was anderes kann ich mir zu einem 
"address out of range" jetzt nicht zusammenreimen.

Autor: Christoph Budelmann (Firma: Budelmann Elektronik GmbH) (christophbudelmann) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x0810 sind 2064 dezimal. Der Tiny2313 hat aber nur 2048 Byte Flash...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sam wrote:

> avrdude: ERROR: address 0x0810 out of range at line 129 of
> uartmyavr2.hex
>
> Ich benutze für Attiny2313 und WinAVR entwicklungsumgebung.

Da hat avrdude recht, in den tiny2313 passen nur 2kB (0000-07FF).

Warscheinlich hast Du float Zahlen verwendet, die float Lib des WINAVR 
paßt nicht in 2kB (die des Keil C51 paßt bequem in 2kB).

Und Du hast auch nicht den tiny2313 als Target eingestellt, sonst hätte 
ne Fehlermeldung erfolgen müssen.


Peter

Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

erstmal danke für die Beitäge. Ich hatte für das senden über uart die 
printf funktion definiert:

static int uart_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, 
_FDEV_SETUP_WRITE);

static int uart_putchar(char c,FILE *stream)
{

  if (c == '\n')
  uart_putchar('\r', stream);
  loop_until_bit_is_set(UCSRA, UDRE);
  UDR = c;
  return 0;
}


hiermit kommt das obige fehler. Wenn ich dieses dann weg tuh dann kommt 
auch kein error. Ich will aber dennoch über uart zeichen senden. Kann da 
was an einstellungen sein?

Sam

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
printf() ist ein großer Klopper, kaum wirklich geeignet, um auf einem
2 KiB-ROM-AVR was damit zu machen.  Warum hast du denn nicht einen
größeren AVR genommen, wenn du sowas tun willst?

Für eine reine Textausgabe auf eine UART braucht's natürlich auch
kein printf().

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.