Forum: Mikrocontroller und Digitale Elektronik Digispark Attiny85 schneller booten lassen.


von Maximilian A. (bratkolben)


Lesenswert?

Hallo,
ich bin neu hier. Meine Erfahrung mit Microcontrollern stammt noch aus 
einer Zeit, als man Eproms mit UV geschlöscht hat und verbrannte ROMs in 
den Müll geworfen hat.
Nun hab ich ich aber einige Ideen und Projekte die ich mit 
Logikbausteinen und analog Technik nicht lösen konnte.
Ich hab mir also so einen Arduino Starterkasten gekauft. 
Programmiersprache, ist ja fast wie C, und die Peripherie funktioniert 
auch ohne unnötig zu qualmen! Dort also keine Probleme!

Gestern kam die o.g. Platine und nach einigen Stunden hab ich es 
geschafft sie direkt via USB zu programmieren. Kurz nachdem ich mir 
einen AVR 51 bestellt hatte und während dem Warten einen UNO als ISP 
verwenden wollte...

Aber es funktioniert auch so! Der Tiny steuert zwei Mosfets an, die 
jeweils eine 12V 12W Led ansteuern und über vier random Befehle 
unterschiedlich flackern lassen. Quasi eine sehr große (helle) Led 
Kerze.
Leider braucht der Tiny durch den vorgegeben Bootloader ja 5bis7 
Sekunden bis die Leds anfangen zu flackern.
Ich will das ganze mit einem AKKU und einem Bewegungsmelder betreiben. 
Deshalb läuft der Attiny85 nicht permanent Standby mit.

Kann mir jemand möglichst einfach und auf deutsch erklären, wie ich den 
Bootloader so ändere dass der Arduino möglichst schnell in den 
eigentlich Loop geht?

von spess53 (Gast)


Lesenswert?

Hi

>Kann mir jemand möglichst einfach und auf deutsch erklären, wie ich den
>Bootloader so ändere dass der Arduino möglichst schnell in den
>eigentlich Loop geht?

Bootloader benutz man um das Programm einmalig in den Flash zu laden, 
aber nicht bei jedem Startvorgang.

MfG Spess

von Peter II (Gast)


Lesenswert?

spess53 schrieb:
> Bootloader benutz man um das Programm einmalig in den Flash zu laden,
> aber nicht bei jedem Startvorgang.

nein.

Es gibt sehr viele Geräte die den Bootloader zuerst starten und dann 
daraus das Programm. Das hat den großen Vorteil, das man wenn man ein 
defekte Programm geflascht hat, es jederzeit wiederholen kann.

Alles andere währe irgendwie sinnlos.

Man muss den Bootloader nur so anpassen, das er z.b. abhängig von eine 
IO-PIN schneller bootet.

von spess53 (Gast)


Lesenswert?

Hi

>Alles andere währe irgendwie sinnlos.

Da gebe ich dir Recht. Ich halte diese ganze Bootloader-Manie für recht 
sinnlos. Na ja, Arduino sei Undank.

MfG Spess

von pansen (Gast)


Lesenswert?

Kann es sein, dass du dein Programm jedes Mal neu auf den Arduino 
überträgst?
Das könnte die 6 Sekunden Verzögerung erklären.

Dein Programm wird auch bei jedem Reset oder neu einschalten, gestartet. 
Das dürfte dann höchstens (gefühlte) 6 ms Verzögerung haben.

von Peter II (Gast)


Lesenswert?

pansen schrieb:
> Das könnte die 6 Sekunden Verzögerung erklären.

der bootloader muss doch eine Zeitlang warten, ob für ihn Befehle 
anliegen. Macht sogar jeden Fritzbox so.

Wenn ihm die 6s zu lang sinn, muss er den Bootloader umschreiben, oder 
komplett auf ihn verzichten.

spess53 schrieb:
> Da gebe ich dir Recht. Ich halte diese ganze Bootloader-Manie für recht
> sinnlos. Na ja, Arduino sei Undank.

Ich habe keine Arduino aber verwende auch Bootloader, damit ich von 
ferne meine Geräte updaten kann. Da sie aber nur bei Stromausfall neu 
booten, ist die Bootzeit mir ziemlich egal.

von Maximilian A. (bratkolben)


Lesenswert?

Peter II schrieb:
> Wenn ihm die 6s zu lang sinn, muss er den Bootloader umschreiben, oder
> komplett auf ihn verzichten.

Ja genau, der Micronucleus  Bootloader wartet 6 Sekunden ob er neu 
beschrieben wird, oder nicht.
Wie schreibe ich den Bootloader um, bzw. was schreibe ich rein?

von holger (Gast)


Lesenswert?

>Wie schreibe ich den Bootloader um, bzw. was schreibe ich rein?

Du besorgst dir den Sourcecode und änderst diesen. Wird aber ohne
ISP Programmer nichts nützen. Der Bootloader kann sich nicht selber
neu flashen.

von Einer K. (Gast)


Lesenswert?

Hole dir einen nackten Attiny.
Den kannste dann mit der ArduinoIDE, und dem UNO als ISP beschreiben.
Ein Bootloader auf dem Tiny ist dafür nicht nötig.

von Peter II (Gast)


Lesenswert?

Arduino F. schrieb:
> Hole dir einen nackten Attiny.

man kann den Bootloader auch löschen, dafür muss man nicht extra einen 
neue µC kaufen.

von Draco (Gast)


Lesenswert?

Peter II schrieb:
> nein.
>
> Es gibt sehr viele Geräte die den Bootloader zuerst starten und dann
> daraus das Programm. Das hat den großen Vorteil, das man wenn man ein
> defekte Programm geflascht hat, es jederzeit wiederholen kann.
>
> Alles andere währe irgendwie sinnlos.
>
> Man muss den Bootloader nur so anpassen, das er z.b. abhängig von eine
> IO-PIN schneller bootet.

Quark...

der Bootloader, zumindest bei einem AVR, liegt hinter dem Programmcode. 
Dieser Vector wird bei Reset, entweder Hardware oder Software via BOD, 
angesprungen. Dieser Zustand kann jedesmal erreicht werden wenn der µC 
in den Reset geht. Ob der Flash ab 0x00 nun beschrieben, Falsch oder 
sonstwas ist.

Wird ein µC eingeschaltet, ohne aktives WDTON Flag, geht er IMMER bei 
0x00 mit seinem Programm los.

Deine Sicht der Dinge macht keinen Sinn, denn das würde heißen das man 
den µC reseten oder stromlos machen muss um dann die sechs bis sieben 
Sekunden zu warten bis man ihn flashen kann und danach ist wieder 
schicht... DAS macht keinen Sinn.



@ Maximilian Anonym

Zeig mal deinen Code her, ich denke du hast da irgendwie ne Schleife 
drinn, denn alles andere ist im Brei rumstochern.

von Peter II (Gast)


Lesenswert?

Draco schrieb:
> Wird ein µC eingeschaltet, ohne aktives WDTON Flag, geht er IMMER bei
> 0x00 mit seinem Programm los

dann sollte du mal die doku lesen

> Alternatively,
> the Boot Reset Fuse can be programmed so that the Reset Vector Reset is > 
pointing to the Boot
> Flash start address after a reset. In

> Deine Sicht der Dinge macht keinen Sinn, denn das würde heißen das man
> den µC reseten oder stromlos machen muss um dann die sechs bis sieben
> Sekunden zu warten bis man ihn flashen kann und danach ist wieder
> schicht... DAS macht keinen Sinn.
doch das macht sehr wohl sinn. Du hast ihn nur nicht verstanden.

Man muss nicht 6 Sekunden warten, bis man ihn flashen kann, das geht 
sofort. Man muss 6 Sekunden warten, wenn man ihn nicht flashen will. 
(also das normale Programm starten)

von Draco (Gast)


Lesenswert?

Peter II schrieb:
>> Alternatively,
>> the Boot Reset Fuse can be programmed so that the Reset Vector Reset is >
>> pointing to the Boot
>> Flash start address after a reset.

Ja halt einfach den BOOTRST Fuse auf 1 (aus). Aber dann überspringt er 
ja den Bootloaderbereich komplett. Das ist mir bei noch keinem 
Bootloader untergekommen, und schon garnicht bei einem Arduino-Loader 
(Und da würde ich so nen Unsinn als erstes erwarten)

Peter II schrieb:
> Man muss nicht 6 Sekunden warten, bis man ihn flashen kann, das geht
> sofort. Man muss 6 Sekunden warten, wenn man ihn nicht flashen will.
> (also das normale Programm starten)

Nein, du verstehst nicht - was passiert NACH den sechs Sekunden? Nicht 
mehr Flashbar?! Nur noch durch Stromlosschalten und / oder Reset. Ja 
dann kann das auch gleich der Programmer / TTL Wandler machen, das ist 
ja mit Kanonen nach Spatzen geschossen.

Sorry, aber das ist mir noch nicht untergekommen.

von Draco (Gast)


Lesenswert?

Draco schrieb:
> Ja halt einfach den BOOTRST Fuse auf 1 (aus). Aber dann überspringt er
> ja den Bootloaderbereich komplett. Das ist mir bei noch keinem
> Bootloader untergekommen, und schon garnicht bei einem Arduino-Loader
> (Und da würde ich so nen Unsinn als erstes erwarten)

Was übrigens Standard ist. Da gibt es nur ein paar Ausnahmen welche mit 
einem DFU Loader ausgliefert werden, und das betrifft afaik nur die 
AT90USBxx und die Mega u2 und u4. Aber nicht den Tinyx5

von Peter II (Gast)


Lesenswert?

Draco schrieb:
> Nein, du verstehst nicht - was passiert NACH den sechs Sekunden? Nicht
> mehr Flashbar?!
doch, in den man von seinen eigenen Programm in den bootloader springt 
wenn man es will-

> Nur noch durch Stromlosschalten und / oder Reset. Ja
nein

> dann kann das auch gleich der Programmer / TTL Wandler machen, das ist
> ja mit Kanonen nach Spatzen geschossen.
man kann von ferne den Strom abschalten, den Progammer kann ich nicht 
von Ferne anschließen.

> Sorry, aber das ist mir noch nicht untergekommen.
ja, scheinbar hast du den sinn eines Bootloaders immer noch nicht 
verstanden.

Es ist ein Programm, was vor dem eigentlichen Programm gestartet wird. 
Es warten über eine Kommunikationsschnittstelle auf Befehle um den Flash 
neu zu schreiben. Wenn kein Befehlt kommt, wird das Programm gestartet.

Vorteile: man kann Geräte über jede beliebige Schnittstelle (Seriell, 
Netzwerk, Funk) neu flashen ohne eine spezielle Hardware. Der Bootloader 
funktioniert auch noch wenn man Fehler im Programm hat, dafür muss man 
nur für ein Reset sorgen (z.b. Watchdog, Reset, Stromlos).

Wie schon oben geschrieben, wird es in viele Geräte so gemacht. Eine 
fritzbox warten auch ein paar Sekunden nach dem booten auf eine 
FTP-Verbindung. Wenn keine Verbindung kommt, wird das normale System 
gestartet. Wenn man das nicht hätte, bräuchte man zum Flashen (wenn das 
System mal gar nicht mehr will) spezielle JTAG Hard und Software.

von Lothar (Gast)


Lesenswert?

Peter II schrieb:
> Draco schrieb:
>> Wird ein µC eingeschaltet, ohne aktives WDTON Flag, geht er IMMER bei
>> 0x00 mit seinem Programm los
>
> dann sollte du mal die doku lesen

Auf den meisten anderen uC - 8051 und viele ARM - ist das genau so. Der 
Bootloader ist am Ende vom Flash und es gibt eine Hardware-Logik zu 
einem Boot-Pin, die nach RESET entweder zu 0x00 oder zum Bootloader 
springt. Eine Verzögerungszeit gibt es dabei nicht, es ist egal, ob der 
Bootloader drauf ist oder nicht.

Weiterhin gibt es einen Assembler-Befehl, mit dem auch vom User-Programm 
der Bootloader aufgerufen werden kann, z.B. beim 8051 die undefined 
instruction 0xA5 und beim ARM ein SWI

von Lothar (Gast)


Lesenswert?

holger schrieb:
>>Wie schreibe ich den Bootloader um, bzw. was schreibe ich rein?
>
> Du besorgst dir den Sourcecode und änderst diesen. Wird aber ohne
> ISP Programmer nichts nützen. Der Bootloader kann sich nicht selber
> neu flashen.

Doch der micronucleus kann sich selber updaten, wäre ja sonst auch 
witzlos, wenn man wieder mit Programmer und Fuses anrücken müsste:

https://github.com/micronucleus/micronucleus

Also einfach die Wartezeit rausmachen und stattdessen einen Pin vom 
Attiny85 prüfen, ob User Programm oder Bootloader gestartet werden soll.

von holger (Gast)


Lesenswert?

>Doch der micronucleus kann sich selber updaten, wäre ja sonst auch
>witzlos, wenn man wieder mit Programmer und Fuses anrücken müsste:

Und wie macht er das? Er überschreibt das Flash aus dem er gerade
selber ausgeführt wird? Das geht nicht.

von Lothar (Gast)


Lesenswert?

holger schrieb:
> Und wie macht er das? Er überschreibt das Flash aus dem er gerade
> selber ausgeführt wird? Das geht nicht.

Was Du schreibst ginge bei AVR nicht, aber so macht er es:

https://github.com/micronucleus/micronucleus/issues/69

von Peter D. (peda)


Lesenswert?

Maximilian A. schrieb:
> Deshalb läuft der Attiny85 nicht permanent Standby mit.

Du mußt den AVR nicht jedesmal neu resetten.
Nimm einen Spannungsregler, der nur wenige µA verbraucht (z.B. MCP1702) 
und setze den AVR in Power-Down. Dann kannst Du ihn ständig an den 12V 
lassen und mit Pin-Change-Interrupt aufwecken.

von Maximilian A. (bratkolben)


Lesenswert?

Draco schrieb:
> Zeig mal deinen Code her, ich denke du hast da irgendwie ne Schleife
> drinn, denn alles andere ist im Brei rumstochern.

Natürlich ist da eine Schleife drin und die läuft auch wie sie soll.

byte links = 0;
byte rechts = 1;
byte x;
byte y;

void setup() {
pinMode(links, OUTPUT);
pinMode(rechts, OUTPUT);
}

void loop() {
x=random(5)*50;
analogWrite(links, x);
delay(random(250));
y=random(5)*50;
analogWrite(rechts, y);
delay(random(250));
}

Es funktioniert auch so wie es so soll. Und blinkt und blitzt pausenlos 
bis der Strom abgestellt wird.
Nur eben vergehen zwischen einschalten der Versorgungsspannung 
(Bewegungsmelder) und dem dem Einschalten der Leds 5-6Sekunden! Und das 
hätte ich gerne einfach etwas schneller!

von Einer K. (Gast)


Lesenswert?

Maximilian A. schrieb:
> Nur eben vergehen zwischen einschalten der Versorgungsspannung
> (Bewegungsmelder) und dem dem Einschalten der Leds 5-6Sekunden! Und das
> hätte ich gerne einfach etwas schneller!


Tja. weg mit dem Bootloader, oder ihn modifizieren.
Aber das wurde ja alles schon gesagt.....

von Lothar (Gast)


Lesenswert?

Arduino F. schrieb:
> weg mit dem Bootloader, oder ihn modifizieren

Oder ganz anders: warum weiter mit AVR rumärgern? Dein Programm ist so 
einfach, das läuft auf anderen uC praktisch ohne Änderung genauso. Also 
warum keinen uC mit "verzögerungsfreiem" Bootloader nehmen?

Ich nehme an Du hast Attiny85 DIP-8

Nimm stattdessen den hier. Ist etwas teurer und für die Anwendung leicht 
überdimensioniert, löst aber elegant Dein Problem:

http://www.watterott.com/de/LPC810M021FN8FP

von Peter II (Gast)


Lesenswert?

Lothar schrieb:
> Oder ganz anders: warum weiter mit AVR rumärgern? Dein Programm ist so
> einfach, das läuft auf anderen uC praktisch ohne Änderung genauso. Also
> warum keinen uC mit "verzögerungsfreiem" Bootloader nehmen?

weil die Verzögerung, sinn und zweck beim bootloader hat. Sie wurde 
nicht aus Spass reingemacht. Wenn er nicht wartet, kann man ihn auch 
keine Befehle erteilen um ihn zu Flashen.

Das ganze ist so gewünscht und kein Problem der Hardware. Wenn man es 
nicht will, kann man es einfach ändern.

von Philipp K. (philipp_k59)


Lesenswert?

Man könnte den bootloader umschreiben und einen freien pin auf High 
abfragen, ansonsten direkt ins Programm.

einen Pin beim Tiny zu opfern ist natürlich nicht so toll.

Wenn das der USB Bootloader ist kann man ja den Reset nehmen.

von Einer K. (Gast)


Lesenswert?

Lothar schrieb:
> Ich nehme an Du hast Attiny85 DIP-8
Hat er nicht!

von Maximilian A. (bratkolben)


Lesenswert?

Peter II schrieb:
> Wenn man es
> nicht will, kann man es einfach ändern.

WIE?

Philipp K. schrieb:
> Man könnte den bootloader umschreiben

WIE? und WAS muss ich reinschreiben???

Arduino F. schrieb:
> Lothar schrieb:
>> Ich nehme an Du hast Attiny85 DIP-8
> Hat er nicht!

Ich habe den Digispark Attiny85 (allerdings die Micro USB Variante)
https://www.roboter-bausatz.de/560/digispark-kickstarter-attiny85-usb-development-board-fuer-arduino

von Einer K. (Gast)


Lesenswert?

Maximilian A. schrieb:
> WIE? und WAS muss ich reinschreiben???

§1: Du sollst nicht schreien.

Wenn du nicht in der Lage bist den Bootloader Code zu finden, zu 
editieren, kompilieren, und wieder drauf zu schreiben, dann ist das 
nicht dein Weg.


Du brauchst sowieso einen ISP Programmiergerät!
Sowieso...

Damit kannst du den Bootloader überschreiben.
Fettich.

von Philipp K. (philipp_k59)


Lesenswert?

Dieser Bootloader müsste das sein, viel Spaß.

https://github.com/micronucleus/micronucleus/

von Peter II (Gast)


Lesenswert?

Maximilian A. schrieb:
> WIE? und WAS muss ich reinschreiben???

eine andere Zeit

https://github.com/micronucleus/micronucleus/tree/master/firmware
bootloaderconfig.h
#define AUTO_EXIT_MS           6000

da sind die 6 Sekunden definiert


Scheinbar kann sich auch der bootloader selber neu schreiben. Ich würde 
ihn so abändert, das er nur die 6 Sekunden warten, wenn eine IO-Pin auf 
Low oder High gesetzt ist.

Dann kannst du von außen das booten beeinflussen.

von Peter II (Gast)


Lesenswert?

Arduino F. schrieb:
> Du brauchst sowieso einen ISP Programmiergerät!
> Sowieso...

wozu? Im code steht etwas davon, das sich der Bootloader selber flashen 
kann.

von Maximilian A. (bratkolben)


Lesenswert?

Ich habe mir wie ganz oben geschrieben, ja bereits einen AVR 51 
bestellt!
Ich könnte aber auch meinen Arduino Uno verwenden, richtig?

Wenn meine Frage ist, wie ich den Bootloader verändern muss um ein 
schnelleres booten zu erreichen.
Und als Antwort erhalte, dass ich den Bootloader verändern soll... 
befinden wir uns glaub ich in einer Schleife

von Philipp K. (philipp_k59)


Lesenswert?

In der Bootloaderconfig.h kann man ab Zeile75 einen EntryMode mit Jumper 
setzen..

Vielleicht ist das die Lösung!

von Maximilian A. (bratkolben)


Lesenswert?

Peter II schrieb:

> https://github.com/micronucleus/micronucleus/tree/...
> bootloaderconfig.h
> #define AUTO_EXIT_MS           6000
>
> da sind die 6 Sekunden definiert
>
> Scheinbar kann sich auch der bootloader selber neu schreiben. Ich würde
> ihn so abändert, das er nur die 6 Sekunden warten, wenn eine IO-Pin auf
> Low oder High gesetzt ist.
>
> Dann kannst du von außen das booten beeinflussen.

Vielen vielen Dank!

von Einer K. (Gast)


Lesenswert?

Maximilian A. schrieb:
> Ich könnte aber auch meinen Arduino Uno verwenden, richtig?

Wenn du den UNO als ISP verwendest, kannst du auf den Bootloader 
verzichten.
Somit sind die 6 Sekunden weg.


Aber das sagte ich doch ganz zu Anfang schon....
Arduino F. schrieb:
> Den kannste dann mit der ArduinoIDE, und dem UNO als ISP beschreiben.
> Ein Bootloader auf dem Tiny ist dafür nicht nötig.

von Philipp K. (philipp_k59)


Lesenswert?

#define ENTRYMODE ENTRY_ALWAYS

auf ENTRY_JUMPER setzen dann kann man mit PB0 den Bootloader aktivieren 
sonst direkt rein.

Das Programmierfenster wird mit weniger Millisekunden immer kleiner!

von Peter II (Gast)


Lesenswert?

Philipp K. schrieb:
> In der Bootloaderconfig.h kann man ab Zeile75 einen EntryMode mit Jumper
> setzen..

ja sieht so aus, als ob das alles vorgesehen ist

#define ENTRYMODE ENTRY_ALWAYS

#define JUMPER_PIN    PB0
#define JUMPER_PORT   PORTB
#define JUMPER_DDR    DDRB
#define JUMPER_INP    PINB

ENTRY_ALWAYS auf ENTRY_JUMPER ändern und den passenden Port eintragen.

von Lothar (Gast)


Lesenswert?

Peter II schrieb:
> Das ganze ist so gewünscht und kein Problem der Hardware. Wenn man es
> nicht will, kann man es einfach ändern.

Hatte ich ja ganz am Anfang schon geschrieben, wie man es ändern kann. 
Aber für einen Anfänger könnte es ja bequemer sein, statt den Bootloader 
auf dem Attiny85 zu ändern, den uC zu tauschen in einen, der werkseitig 
mit Pin Bootloader kommt.

Lothar schrieb:
> Doch der micronucleus kann sich selber updaten, wäre ja sonst auch
> witzlos, wenn man wieder mit Programmer und Fuses anrücken müsste:
>
> https://github.com/micronucleus/micronucleus
>
> Also einfach die Wartezeit rausmachen und stattdessen einen Pin vom
> Attiny85 prüfen, ob User Programm oder Bootloader gestartet werden soll

Wie das geht steht alles im Code und die hast es ja jetzt auch 
ausführlich beschrieben:

Peter II schrieb:
> ja sieht so aus, als ob das alles vorgesehen ist

von Carl D. (jcw2)


Lesenswert?

Oder einfach mit Bootloader entwickeln und wenn fertig ung zufrieden 
einen μC für "produktiven Einsatz" per ISP programmieren. Dann ohne 
Bootloader und ohne Wartezeit.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Carl D. schrieb:
> Oder einfach mit Bootloader entwickeln und wenn fertig ung zufrieden
> einen μC für "produktiven Einsatz" per ISP programmieren. Dann ohne
> Bootloader und ohne Wartezeit.

Mein Reden ....

von Peter D. (peda)


Lesenswert?

Oh mann.
Wie schon gesagt, einfach über Pin-Change-Interrupt gehen, statt über 
Reset.
Dann ist es schnurz, wie lange der Bootloader wartet.

von bianchifan (Gast)


Lesenswert?

Maximilian A. schrieb:
> Kann mir jemand möglichst einfach und auf deutsch erklären, wie ich den
> Bootloader so ändere dass der Arduino möglichst schnell in den
> eigentlich Loop geht?

Gar nicht!
IIRC sind die 6 Sekunden den Eigenschaften der Arduino IDE geschuldet.
D.H:, dass nach Erscheinen einer korrespondierenden Meldung in der IDE 
Konsole innerhalb dieser Zeitspanne ein manueller Reset ausgelöst werden 
soll.

Wenn Dein Programm ausgetestet und funktionsfähig ist steht es Dir frei, 
für die endgültige Version die ISP-Schnittstelle zu nutzen, dann gibt es 
im Betrieb auch keine Warteschleife...;)
ISP geht übrigens auch prima mit der IDE, der Bootloder ist nicht 
unbedingt notwendig.
Mein Tip: USBASP!
Geht auch mit Attiny85 -> Guloprog.
Wirklich sinnvoll ist der Bootloader nur für fest eingebaute 
Installationen ohne Zugriff auf die ISP-Kontakte.

von Philipp K. (philipp_k59)


Lesenswert?

bianchifan schrieb:
> Gar nicht!
> IIRC sind die 6 Sekunden den Eigenschaften der Arduino IDE geschuldet.

Hab ich auch schon geschrieben.. umso kleiner die Zeit ist umso weniger 
Triffst Du den Punkt zwischen "Treiber erkannt,Gerät fertig installiert" 
und dem Port/Gerät nach dem die Ide sucht..

Ich würde das mit dem Entry-Pin machen wenn du den Bootloader unbedingt 
drauflassen willst.

Wenn Du eine Anleitung haben möchtest sag bescheid.. wo der Thread schon 
auf ist ;)

: Bearbeitet durch User
von Tim (Gast)


Lesenswert?

Ich verwende bei allen Devices:
1
#define ENTRYMODE ENTRY_ALWAYS

Damit wird der Bootloader nur durch einen externen Reset aktiviert.

Vorteile:
- Es wird kein Pin durch den Bootloader belegt.
- Der Bootloader wird im normalen Betrieb (Einschalten ohne Reset) nicht 
aktiviert.

Nachteil:
- Man benötigt einen Reset-Taster oder -Zugang. Beim normalen Digispark 
leider nicht gegeben.

von Tim (Gast)


Lesenswert?

Arg...

Tim schrieb:
> Ich verwende bei allen Devices:
> #define ENTRYMODE ENTRY_ALWAYS

Ich meinte
1
#define ENTRYMODE ENTRY_EXT_RESET

... muss wohl doch meine Login-Daten wieder heraussuchen.

von MWS (Gast)


Lesenswert?

PORF auswerten, wenn gesetzt dann den Bootlader Überspringen, der Reset 
über den Resetbutton startet den BL.

von Peter D. (peda)


Lesenswert?

Merkt immer noch keiner, daß es eigentlich garnicht um den Bootloader 
geht, sondern darum, auf ein Signal schnell zu reagieren.
Dazu muß man aber nicht am Bootloader drehen, sondern einfach nur den 
Lösungsansatz ändern.

von Peter II (Gast)


Lesenswert?

Peter D. schrieb:
> Merkt immer noch keiner, daß es eigentlich garnicht um den Bootloader
> geht, sondern darum, auf ein Signal schnell zu reagieren.
> Dazu muß man aber nicht am Bootloader drehen, sondern einfach nur den
> Lösungsansatz ändern.

sicher?

> Ich will das ganze mit einem AKKU und einem Bewegungsmelder betreiben.
> Deshalb läuft der Attiny85 nicht permanent Standby mit.

er schaltet den Attiny85 komplett ab, wenn er neu startet startet der 
Bootloader der 6 Sekunden wartet und das ist sein Problem.

Klar könnte man das so ändern, das der Tiny nur schläft, aber das will 
er ja nicht.

von Peter D. (peda)


Lesenswert?

Peter II schrieb:
> Klar könnte man das so ändern, das der Tiny nur schläft, aber das will
> er ja nicht.

Man kann sich natürlich in einem einmal gefaßten Lösungsansatz 
festrennen.

Der Bewegungsmelder wird ja bestimmt auch Strom benötigen. Und für 24W 
LED-Last braucht man schon etwas Akkukapazität.
Da könnte man leicht ausrechnen, ob ein ATtiny im Power-Down + sparsamen 
Spannungsregler überhaupt eine Rolle spielt.

von Maximilian A. (bratkolben)


Lesenswert?

Philipp K. schrieb:
> Ich würde das mit dem Entry-Pin machen wenn du den Bootloader unbedingt
> drauflassen willst.
>
> Wenn Du eine Anleitung haben möchtest sag bescheid.. wo der Thread schon
> auf ist ;)



Unbedingt würde ich nicht sagen...

Über eine Anleitung würde ich mich sehr freuen!

Im Idealfall bleibt der Tiny im Gehäuse und wird dort viele Jahre 
unberührt seinen Dienst erweisen.


Die Kabel liegen unter Putz! Es liegen also nur "sporadisch" 12V an. 
Extra Versorgungsleitung vom Akku legen, fällt aus! Und einen zweiten 
kleinen Akku für den Tiny, will ich nicht.
Technisch kann man das sicherlich besser lösen, Bautechnisch ist es 
nunmal so gelöst(worden)

von Peter D. (peda)


Lesenswert?

Peter II schrieb:
> Scheinbar kann sich auch der bootloader selber neu schreiben.

Wenn das wirklich geht, dann Hut ab!
Er müßte sich erstmal an eine andere Stelle kopieren, den Resetsprung 
dahin umleiten, dann den neuen Bootloader schreiben und dann den 
Resetsprung wieder auf den Start des neuen Bootloaders zurück setzen.

von Peter D. (peda)


Lesenswert?

Maximilian A. schrieb:
> Die Kabel liegen unter Putz! Es liegen also nur "sporadisch" 12V an.

Muß nicht unbedingt ein Hinderungsgrund sein.
Man könnte zu dem Sensorkontakt einen Widerstand parallel legen, so daß 
immer ~5V/5µA auf der Leitung liegen.
Liegen dann starke 12V an, erwacht der MC aus dem Sleep und macht sein 
Ding.

von ASM Superprofi (Gast)


Lesenswert?

HAHAHA BOOTLOADER

Der Weg der Nichtskönner und Denkverweigerer.

von ASM Superprofi (Gast)


Lesenswert?

Ach VERZEIHUNG. Natürlich der Weg der Leute, die keine Zeit haben, sich 
mit solche masochistischen Details wie der Funktionsweise eines ISPs zu 
beschäftigen.

Immerhin hat man heutzutage ja auch weitaus wichtigeres zu tun.

Z.B. alle 5 Minuten auf das dämliche Smart Phone zu schauen!

von Lothar (Gast)


Lesenswert?

ASM Superprofi schrieb:
> BOOTLOADER ... Natürlich der Weg der Leute, die keine Zeit haben, sich
> mit solche masochistischen Details wie der Funktionsweise eines ISPs zu
> beschäftigen

Auf Industriestandard uC wie aktuelle 8051 oder ARM ist ISP = der 
werksseitige UART oder USB oder CAN Bootloader in einem ROM. Sowas wie 
einen Programmer gibt es dort schon lange nicht mehr, nur der veraltete 
AVR hat noch ein SPI "ISP" das bei den alten 8051 mal ICP hiess.

Solche Bootloader sorgen nebenbei auch dafür, dass man auch noch in den 
uC reinkommt, wenn es mit Debugger nicht mehr funktioniert, weil 
entsprechende Pins abgeschaltet oder CPU CLK daneben gesetzt.

Überigens bei Deinem PC mit dem Du grade Deinen Kommentar schreibst oder 
beim Raspberry Pi lädt auch der Bootloader den Kernel.

von ASM Superprofi (Gast)


Lesenswert?

Wiedermal typisch. Wir reden hier von einer digitalen 
LED-Rumflacker-Schaltung die man unbedingt via USB programmieren können 
muss und dann MUSS es ja, wie üblich, so kommen, dass da so einer 
dahergelaufen kommt und mit erhobenen Zeigefinger als Vergleich die 
Titanen unter den Rechenknechten ausgräbt.

Wahrscheinlich nimmst du einen RasPi, um eine LED zum blinken zu 
bringen.

von ASM Superprofi (Gast)


Lesenswert?

Ich habe aus Versehen mal CPU CLK auf 4kHz gesetzt. Mit avrdude war das 
auch kein Problem, die DIV8 Fuse wieder richtig zu setzen.

von bianchifan (Gast)


Lesenswert?

Maximilian A. schrieb:
> Im Idealfall bleibt der Tiny im Gehäuse und wird dort viele Jahre
> unberührt seinen Dienst erweisen.
>
> Die Kabel liegen unter Putz! Es liegen also nur "sporadisch" 12V an.

Ganz im Ernst.. Du möchtest zwei FETs mit zufälligen Spanungsmustern 
ansteuern, sofern der ATTiny eventuell mal bestromt werden sollte, 
richtig?
Wozu benötigst Du da USB?
Wozu einen ATTiny85?
IMHO ist das ein Paradebeispiel für einen Tiny13.
Der lässt sich ebenfalls über die Arduino IDE proggen, mit ISP und 
Pseudo-Bootloader für die IDE oder auch mit echtem Bootloader, da wird 
der Platz dann knapp...
Keine Platine, nur ein kleiner Käfer mit 8 Beinchen

von Philipp K. (philipp_k59)


Lesenswert?

Hier stellt jemand eine Frage und sofort wird versucht seine Idee zu 
verbessern.. Das ist nicht Hilfreich sondern arrogant.. Ich mache das 
aus einfach nur Spaß auch so.. Attiny85V mit mikrousbbuchse und 
einfachem Programm.. Solange das Programm nicht zu groß ist und sich der 
Termin die Möglichkeit der nachprogrammierung offen lassen möchte ist 
das doch okay. Na okay, trotzdem hab ich auch nen eigenen 8Pin Sockel 
mit ner 10pol buchse für den Usbasp.. Ich Sockel sogar jeden tiny trotz 
USB.. Geht doch keinen was an wieso ich das so mache. Ich Jammer ja auch 
nicht rum das das Programm mit dem Bootloader nicht mehr reinpasst.. Das 
wäre verbesserungswürdig.

Und zum sensor.. Ich habe selbst so ein Projekt.. Der bwm verbraucht 
idle auf Bewegung wartend 3-12v 5uA.. Da hält nen 9v Block Monate.. 
Wieso da den Tiny schlafen legen?

Edit: der Trick ist dazu noch einen ldo mit dem ttl Output des bwm am 
enable pin zu aktivieren.. Verbraucht null zusätzlich.

: Bearbeitet durch User
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.