Forum: Compiler & IDEs [AVR] Problem mit ATmega2561 und Fleury Bootloader


von André M. (pc-fan)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit dem Bootloader von Peter Fleury ( 
http://www.jump.to/fleury ) in Verbindung mit dem ATmega2561.
Angepasst hab ich ihn im Makefile und in der stk500boot.c

Der Bootloader lässt sich problemlos über die ISP-Schnittstelle flashen.
Wenn ich jetzt ein Programm über den Bootloader aufspiele läuft dieses 
auch, allerdings nur bis zum ausschalten. Wenn ich wieder Strom auf die 
Schaltung gebe funktioniert das Programm nicht mehr, der Bootloader ist 
noch drauf.

Die Fuses sind wie folgt gesetzt (gerade eben frisch per ISP 
ausgelesen):
lfuse: 0xFF
hfuse: 0xDC
efuse: 0xFF

Wo rann könnte das liegen oder hat vielleicht jemand das selbe Problem?

Vielen Dank für die Hilfe und Gruß
André

von Karl H. (kbuchegg)


Lesenswert?

Was hat es damit auf sich und hast du das in deiner Beschaltung 
berücksichtigt?
1
.....
2
/* 
3
 * Pin "PROG_PIN" on port "PROG_PORT" has to be pulled high
4
 * (active low) to start the bootloader 
5
 * uncomment #define REMOVE_PROG_PIN_PULLUP if using an external pullup
6
 */
7
#define PROG_PORT  PORTD
8
#define PROG_DDR   DDRD
9
#define PROG_IN    PIND
10
#define PROG_PIN   PIND2
11
12
....
13
14
int main(void)
15
{
16
  ....
17
18
  /*
19
   * Branch to bootloader or application code ?
20
   */  
21
  if(PROG_IN & (1<<PROG_PIN))  
22
  {       
23
     ....


ein Pin, den man extern nicht beschaltet, ist nicht automatisch Low.

von André M. (pc-fan)


Lesenswert?

Hallo,

Karl Heinz Buchegger schrieb:
> Was hat es damit auf sich und hast du das in deiner Beschaltung
> berücksichtigt?

Ja, das funktioniert, er geht in den Bootloader wenn der Taster beim 
Start gedrückt wird und tut das nicht, wenn der Taster nicht gedrückt 
wird.

Ach und was ich vergessen hatte zu erwähnen, ich habe den Code für den 
Taster und die LED auf Active High geändert, Standard war Active Low.

Der angepasste Teil funktioniert allerdings, daran liegt das Problem 
meiner Meinung nach nicht.

Gruß
André

von Karl H. (kbuchegg)


Lesenswert?

André M. schrieb:

> Ach und was ich vergessen hatte zu erwähnen, ich habe den Code für den
> Taster und die LED auf Active High geändert, Standard war Active Low.

D.h. du hast Code gepostet, den du so gar nicht geflasht hast.

Daaankee. Und tschüss.


(Trotzdem: Ein Pin an dem nichts angeschlossen ist, zb weil ein Taster 
offen ist, hat ohne Pullup oder Pulldown keinen definierten Pegel. 
Sicher ist es auch nur Zufall, dass in dem von dir geposteten Code der 
interne Pullup abgeschaltet ist)

von André M. (pc-fan)


Lesenswert?

Hi Karl Heinz,

erstmal danke für deine Hilfe, aber:

Karl Heinz Buchegger schrieb:
> André M. schrieb:
>> Ach und was ich vergessen hatte zu erwähnen, ich habe den Code für den
>> Taster und die LED auf Active High geändert, Standard war Active Low.
>
> D.h. du hast Code gepostet, den du so gar nicht geflasht hast.
>
> Daaankee. Und tschüss.
NEIN! Das stimmt so nicht! Der Code den ich angehängt hab, ist der den 
ich geflasht hab. Ich hatte nur vergessen das zu erwähnen.

> (Trotzdem: Ein Pin an dem nichts angeschlossen ist, zb weil ein Taster
> offen ist, hat ohne Pullup oder Pulldown keinen definierten Pegel.
> Sicher ist es auch nur Zufall, dass in dem von dir geposteten Code der
> interne Pullup abgeschaltet ist)
An dem Pin ist natürlich ein externer Pulldown und wie gesagt, der Teil 
des Programms tut auch.

Das eigentliche Problem ist, das der uC das Programm nach Aus- und 
Einschalten nicht mehr startet/nicht mehr findet/nicht mehr ausführt. 
(oder was auch immer da passiert)

Gruß
André

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.