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
intmain(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
charc;
15
if((c=getchar()))
16
{
17
putchar(c);
18
continue;
19
}
20
else
21
{
22
break;
23
}
24
}
25
return0;
26
}
Edit:
Program & Formatierung richtiggestellt.
Ich habe mit lboot (./bootlader) unter debian uebertragen und unter
windows mit UpdateLoader2.2
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.
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.
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 ?
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 :)
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.
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 !
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.
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."