Forum: Mikrocontroller und Digitale Elektronik Das Code reinladen


von Sam (Gast)


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

von ozo (Gast)


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.

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

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

von Peter D. (peda)


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

von Sam (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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().

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.