Forum: Mikrocontroller und Digitale Elektronik [ERLEDIGT] Fastboot, ATmega328p: Bootloader immer aktiv


von Florian O. (simuru)


Angehängte Dateien:

Lesenswert?

Hallo Forum.

Ich habe ein Problem mit dem Bootloader von Peter. Die Version ist die 
letzte Version aus dem Thread: 
Beitrag "Re: Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain"

Einstellungen im Makefile angepasst auf: ATmega328P und 16Mhz.
Fuses eingestellt: BOOTRST programmiert (0), BOOTSZ auf Wortadresse 
0xF00
(zum Vergleich auch haenge ich ein Screeshot vom FuseCalc an. )

Der Bootloader funktioniert soweit wunderbar, ich kann mein 
Nutzerprogram ohne Probleme brennen. Das Problem ist, dass ich es immer 
kann. Ich muss den Controller nicht resetten. Der Bootloader scheint 
immer aktiv zu sein.
Soweit ich den bootloader verstehe, wartet er eine Zeit ab ob ein 
bestimmtes Zeichen empfangen wird und springt sonst in die main() des 
eigentlichen Programms.

Mein Programm fragt den UART ab und immer wenn ein Zeichen kommt togglet 
eine LED.

Das ganze funktioniert auch wunderbar. Die LED toggelt mit jedem 
Zeichen, dass ich ueber Hterm sende, aber der Bootloader scheint 
trotzdem noch zu reagieren. Muss ich noch von hand nach dem 
Programmstart die ISR's verschieben oder ist das Verhalten vielleicht 
voellig normal?

Anbei mal das Programm.
1
int main( void )
2
{
3
  wdt_disable();
4
  usart_init( UBRR_VAL );
5
  usart_as_stdout();
6
  usart_as_stdin();
7
8
  /// LED at PORTB, Pin5, High active
9
  DDRB |= (1 << PB5 );
10
  PORTB &= ~( 1 << PB5 );
11
  for( ;; )
12
  {
13
    PORTB ^= (1 << PB5 );
14
    char c;
15
    if( ( c = getchar() ) )
16
    {
17
      putchar(c);
18
      continue;
19
    }
20
    else
21
    {
22
      break;
23
    }
24
  }
25
  return 0;
26
}

Edit:
Program & Formatierung richtiggestellt.

Ich habe mit lboot (./bootlader) unter debian uebertragen und unter 
windows mit UpdateLoader2.2

: Bearbeitet durch User
von Ulrich F. (Gast)


Lesenswert?

Beim offnen der seriellen Schnittstelle wird ein Reset ausgelöst (wenn 
alles üblich angeschlossen wurde).
Es ist also ganz normal, dass man kein Reset drücken muss.

Florian O. schrieb:
> Das ganze funktioniert auch wunderbar. Die LED toggelt mit jedem
> Zeichen, dass ich ueber Hterm sende,

Dann ist doch alles gut.
Entweder läuft deine Anwendung oder der Bootloader.
Beides gleichzeitig geht nicht.

von Uwe (de0508)


Lesenswert?

Ulrich F. schrieb:
> Beim offnen der seriellen Schnittstelle wird ein Reset ausgelöst (wenn
> alles üblich angeschlossen wurde).

sorry, das ist Unsinn, wie kommst Du den darauf ?
Bei allen meinen Schaltungen und Software entscheide ich über das 
Verhalten !

> Es ist also ganz normal, dass man kein Reset drücken muss.
>
> Florian O. schrieb:
>> Das ganze funktioniert auch wunderbar. Die LED toggelt mit jedem
>> Zeichen, dass ich ueber Hterm sende,
>
> Dann ist doch alles gut.
> Entweder läuft deine Anwendung oder der Bootloader.
> Beides gleichzeitig geht nicht.

von Uwe (de0508)


Lesenswert?

Hallo Florian,

überlege bitte, was passiert bei
1
 break;
.

Wo arbeitet der AVR µC dann weiter ?

von Holger L. (max5v)


Lesenswert?

Das Foto fuse_settings_01.jpg zeigt Ext. Cristal Osc. mit 8 MHz an, das 
Foto fuse_settings_03.jpg Intern RC Osc 8 MHz, und im Text stehen 16 MHz 
?

Kann es sein das deine Versorgung schwankt und der Brown Out anspricht 
da er anscheinend auf 2,7 V steht ?

von Florian O. (simuru)


Lesenswert?

Ulrich F. schrieb:
> Beim offnen der seriellen Schnittstelle wird ein Reset ausgelöst (wenn
> alles üblich angeschlossen wurde).
> Es ist also ganz normal, dass man kein Reset drücken muss.
>
> Florian O. schrieb:
>> Das ganze funktioniert auch wunderbar. Die LED toggelt mit jedem
>> Zeichen, dass ich ueber Hterm sende,
>
> Dann ist doch alles gut.
> Entweder läuft deine Anwendung oder der Bootloader.
> Beides gleichzeitig geht nicht.

Ich bin auch ein Sepp... Das ganze ist mir vorher noch nie passiert, da 
ich sonst meine Boards selber gemacht habe. Aber hier habe ich ein paar 
NanoV3.0 China Clone vor mir und bei denen ist tatsaechlich DTS vom USB 
<-> Seriell wandler an reset gehaengt, somit erfolgt der Reset wenn die 
DTS leitung low geht.

Vielen Dank! Darauf waere so nie gekommen ;)

Uwe S. schrieb:
> Ulrich F. schrieb:
>> Beim offnen der seriellen Schnittstelle wird ein Reset ausgelöst (wenn
>> alles üblich angeschlossen wurde).
>
> sorry, das ist Unsinn, wie kommst Du den darauf ?
> Bei allen meinen Schaltungen und Software entscheide ich über das
> Verhalten !
>

Siehe oben :)

von Florian O. (simuru)


Lesenswert?

Uwe S. schrieb:
> Hallo Florian,
>
> überlege bitte, was passiert bei break; .
>
> Wo arbeitet der AVR µC dann weiter ?

Er rennt in das return, was einen reset verursacht wenn ich mich nicht 
irre - aber ja nur wenn das empfangene zeichen 0, also '\0' ist.

Aber das sende ich nicht und es war nur ein schneller test ob die 
serielle schnittstelle geht (senden / empfangen).

Das ganze hat sich aber schon erledigt.

von Uwe (de0508)


Lesenswert?

Danke für die Aufklärung,

diese Info "NanoV3.0 China Clone" hatten wir vorher nicht.

>
> Ich bin auch ein Sepp... Das ganze ist mir vorher noch nie passiert, da
> ich sonst meine Boards selber gemacht habe. Aber hier habe ich ein paar
> NanoV3.0 China Clone vor mir und bei denen ist tatsaechlich DTS vom USB
> <-> Seriell wandler an reset gehaengt, somit erfolgt der Reset wenn die
> DTS leitung low geht.
>
> Vielen Dank! Darauf waere so nie gekommen ;)
>
> Uwe S. schrieb:
>> Ulrich F. schrieb:
>>> Beim offnen der seriellen Schnittstelle wird ein Reset ausgelöst (wenn
>>> alles üblich angeschlossen wurde).
>>
>> sorry, das ist Unsinn, wie kommst Du den darauf ?
>> Bei allen meinen Schaltungen und Software entscheide ich über das
>> Verhalten !

von Holger L. (max5v)


Lesenswert?

Holger L. schrieb:
> das
> Foto fuse_settings_03.jpg Intern RC Osc 8 MHz,

Das war mein Fehler, hatte die Low Bits vergessen.

von Florian O. (simuru)


Lesenswert?

Holger L. schrieb:
> Das Foto fuse_settings_01.jpg zeigt Ext. Cristal Osc. mit 8 MHz an, das
> Foto fuse_settings_03.jpg Intern RC Osc 8 MHz, und im Text stehen 16 MHz
> ?

Das hat mich grade doch noch kurz stutzig gemacht. Aber laut Datenblatt
Low Power External Crystal Oscillator Operating Modes..:
...
8.0 - 16.0Mhz
C1 = C2 = 12-22pF
CKSEL3..1: 111 // 8-16Mhz
CKSEL0   : 1   // Slowly Rising power

also ist das untere Nibbel 1111 -> 0xF sollte also passen

> Kann es sein das deine Versorgung schwankt und der Brown Out anspricht
> da er anscheinend auf 2,7 V steht ?

Das kann auch sein, haengt grade nur ueber USB dran. Aber mein 
eigentliches Problem ist ja gar keins mehr.

von Ulrich F. (Gast)


Lesenswert?

Florian O. schrieb:
> Vielen Dank! Darauf waere so nie gekommen ;)
Gerne geschehen!

Uwe S. schrieb:
> sorry, das ist Unsinn, wie kommst Du den darauf ?
Ein wilder Aufschrei meiner Kristallkugel.....
(die Beschreibung deutete ganz klar auf einen solchen Autoreset)


Ein Sprüchlein noch dazu:
"Manchmal ist man der Hund, und manchmal ist man der Baum."

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.