Waarom wordt de bootloader gemold
5 berichten
• Pagina 1 van 1
Waarom wordt de bootloader gemold
Arduino Leonardo.
Library/ LibT.h:
Library/ LibT.cpp:
Sketch:
Als ik deze sketch upload is de bootloader dood.
Als ik de delay(10) verwijder uit de constructor gaat alles goed.
Kan iemand mij vertellen waarom.
Library/ LibT.h:
- Code: Alles selecteren
#ifndef LibT_h
#define LibT_h
#include "Arduino.h"
class LibT
{
public:
LibT(int Pin_Stb, int Pin_Clk, int Pin_Dio);
};
#endif
Library/ LibT.cpp:
- Code: Alles selecteren
#include "Arduino.h"
#include "LibT.h"
int _pin_Dio, _pin_Clk, _pin_Stb;
LibT::LibT(int Pin_Dio, int Pin_Clk, int Pin_Stb) {
_pin_Stb = Pin_Stb;
_pin_Clk = Pin_Clk;
_pin_Dio = Pin_Dio;
pinMode(_pin_Stb, OUTPUT);
pinMode(_pin_Clk, OUTPUT);
pinMode(_pin_Dio, OUTPUT);
delay(10); // Deze delay molt de bootloader
}
Sketch:
- Code: Alles selecteren
#include "LibT.h"
LibT l(10, 11, 12);
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
delay(100);
}
Als ik deze sketch upload is de bootloader dood.
Als ik de delay(10) verwijder uit de constructor gaat alles goed.
Kan iemand mij vertellen waarom.
Advertisement
Re: Waarom wordt de bootloader gemold
Dat leek me een mooie uitdaging.
Arduino 1.8.2 in linux, met Arduino Leonardo met bootloader van Arduino.cc IDE 1.6.8.
En inderdaad, de seriële poort valt uit. Dus uploaden lukt dan niet meer.
De bootloader zit er nog in, en uploaden is toch nog mogelijk.
Je kunt bij Bestand/Voorkeuren de uitgebreide uitvoer voor het uploaden aanzetten.
Klik daarna op de knop "Upload" en wacht totdat je "PORTS {} / {} => {}" ziet. Druk dan op de reset knop van het Leonardo board.
Een delay van 1 of 1000 ms maakt niet uit. Het is dus constructor waarvan de aanroep van delay() vóór setup() wordt uitgevoerd. Ook de parameter is nodig (al is het maar één byte).
Je weet dat je in de *.cpp en *.h de parameters verwisseld hebt ?
Ik heb geen idee. Het zou een bug kunnen zijn. De delay() roept de yield() aan. Maar ik weet niet of dat te maken heeft met de usb-serial code.
De code heb ik kunnen krimpen tot dit:
Arduino 1.8.2 in linux, met Arduino Leonardo met bootloader van Arduino.cc IDE 1.6.8.
En inderdaad, de seriële poort valt uit. Dus uploaden lukt dan niet meer.
De bootloader zit er nog in, en uploaden is toch nog mogelijk.
Je kunt bij Bestand/Voorkeuren de uitgebreide uitvoer voor het uploaden aanzetten.
Klik daarna op de knop "Upload" en wacht totdat je "PORTS {} / {} => {}" ziet. Druk dan op de reset knop van het Leonardo board.
Een delay van 1 of 1000 ms maakt niet uit. Het is dus constructor waarvan de aanroep van delay() vóór setup() wordt uitgevoerd. Ook de parameter is nodig (al is het maar één byte).
Je weet dat je in de *.cpp en *.h de parameters verwisseld hebt ?
Ik heb geen idee. Het zou een bug kunnen zijn. De delay() roept de yield() aan. Maar ik weet niet of dat te maken heeft met de usb-serial code.
De code heb ik kunnen krimpen tot dit:
- Code: Alles selecteren
class myLibT
{
public:
myLibT( char a);
};
myLibT::myLibT( char a)
{
delay(10); // This delay together with the parameter kills the usb-serial.
}
myLibT serialwrecker( 0); // the parameter is needed to kill the usb-serial
void setup()
{
}
void loop()
{
}
Re: Waarom wordt de bootloader gemold
Opgelost
@Koepel
Bedankt voor het uitzoeken.
1. Fijn dat er een simpele oplossing is om het uploaden weer mogelijk te maken.
2. Ik heb geprobeerd Setup met "pinMode(13, OUTPUT); digitalWrite(13, HIGH); vóór myLibT te plaatsen: Hetzelfde resultaat. Mogelijk toch een bug ?
3. Parameterverwisseling is ontstaan door het probleem te minimaliseren.
Toch bedankt. Hiermee kan ik verder.
@Koepel
Bedankt voor het uitzoeken.
1. Fijn dat er een simpele oplossing is om het uploaden weer mogelijk te maken.
2. Ik heb geprobeerd Setup met "pinMode(13, OUTPUT); digitalWrite(13, HIGH); vóór myLibT te plaatsen: Hetzelfde resultaat. Mogelijk toch een bug ?
3. Parameterverwisseling is ontstaan door het probleem te minimaliseren.
Toch bedankt. Hiermee kan ik verder.
Re: Waarom wordt de bootloader gemold
Issue gemaakt: https://github.com/arduino/Arduino/issues/6277
Ik heb het een "possible bug" genoemd, omdat ik niet begrijp wat er aan de hand is.
Ik heb het een "possible bug" genoemd, omdat ik niet begrijp wat er aan de hand is.
Re: Waarom wordt de bootloader gemold
@Rijpaard, ze hebben het opgelost. Dat is nu nog een Pre-Release, dus bij de volgende versie is het opgelost.
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Majestic-12 [Bot] en 19 gasten