Forum: Mikrocontroller und Digitale Elektronik attiny85 Reset Pin


von Werner S. (wernertrp)


Lesenswert?

Ich habe ein Chineese attiny85 Platine mit USB Schnittstelle gekauft.
ebay: 332110929888
Ich habe sie mit Digispark Treiber und Digispark Software zum Laufen 
gebracht.
Die USB liegt an pin PB3 und PB4 des Attiny85.
Auf der Platine sind 2 LEDs eine für +5 Volt Anzeige und eine als user 
I/O.

Warum muß man bei der Digispark Software für Arduino die Platine zum 
upload des Programmes
entfernen und wieder anstecken (jedesmal) ?
Das ist schwachsinnig programmiert.

Nächster Fehler:
Warum started das blink Programm
erst nach ca. 3-5-7-17 Sekunden wenn +5 Volt (USB wird eingesteckt) an 
die Platine angelegt ist ?


Mein Programm blink:


// the setup routine runs once when you press reset:

void setup() {

// initialize the digital pin as an output.

pinMode(1, OUTPUT); //LED on Model A

}


// the loop routine runs over and over again forever:

void loop() {

digitalWrite(1, HIGH);

delay(100);               // wait for a 0,1 second

digitalWrite(1, LOW);

delay(100);               // wait for a 0,1 second

}


Einen Schaltplan der Platine habe ich nicht.
Der Reset Pin am Attiny85 ist offen.
Auch wenn er auf +5 Volt gelegt wird ändert sich nichts.
Wird der Reset Pin auf low-high gebracht, so wird ebenso ein delay von 
ca. 3-5-7-17 Sekunden erreicht.
Setzt man den Reset Pin auf low startet das Programm nie.
Muß man etwa eine richtige Reset Schaltung anbauen ?
(Diode Kondensator Widerstand am Reset Eingang ?)
Bis jetzt hatte ich noch nie mit dem Attiny85 zu tun.
Das sind meine ersten 10 Minuten.

von Flo (Gast)


Lesenswert?

Da läuft wahrscheinlich V-USB auf dem tiny85.
Also USB in Software.
Die Startverzögerung wird wahrscheinlich durch die USB-Anmeldung 
entstehen.

von Werner S. (wernertrp)


Lesenswert?

Das heißt ich muß den Digispark bootloader im Attiny85 runterschmeißen,
dann über mein AVRUSBmkII Programmiergerät meine Software reinladen ?
Dazu einen 6-pin Adaptersockel für den AVRUSBmkII  auf die Schaltung 
auflöten. Genau das wollte ich nicht.
Diese kleine Platine ist kein Käfer sondern ein Mistkäfer.

von Philipp_K59 (Gast)


Lesenswert?

und zwar bleibt der Tiny für die Bootloaderzeit nach dem Einschalten im 
Wartemodus.

Da der Bootloader Opensource ist, könnte man den Bootloader neu 
kompilieren und einen beliebigen Pin als Aktivierung benutzen. Diese 
Option ist schon im Quelltext mit wählbarem Pin vorkonfiguriert.

von Stefan F. (Gast)


Lesenswert?

> Diese kleine Platine ist kein Käfer sondern ein Mistkäfer.

So ist das eben, wenn man einen µC ohne anständige USB Schnittstelle für 
USB missbraucht. Ich würde das Ding auch nicht benutzen.

Es gibt andere µC mit richtiger USB Schnittstelle, die all diese 
Nachteile nicht haben - kostet aber mehr.

> Da der Bootloader Opensource ist, könnte man den Bootloader neu
> kompilieren und einen beliebigen Pin als Aktivierung benutzen.

Bei nur drei freien Pins wollte der Entwickler genau das sicher nicht 
tun.

von Peter D. (peda)


Lesenswert?

Werner S. schrieb:
> Diese kleine Platine ist kein Käfer sondern ein Mistkäfer.

Ein µC ist eben kein PC.
Auf einem MC kann immmer nur ein Programm zur Zeit laufen.
Der USB-Bootloader ist eben ein Programm und Deine Applikation ein 
anderes. Um nun eine neue Applikation zu laden, muß der Bootloader ran. 
Und das geht eben nur über Wartezeit oder Pinabfrage. Da kann der 
ATtiny85 aber nix dafür.

von Peter D. (peda)


Lesenswert?

Werner S. schrieb:
> Warum muß man bei der Digispark Software für Arduino die Platine zum
> upload des Programmes
> entfernen und wieder anstecken (jedesmal) ?
> Das ist schwachsinnig programmiert.

Ob das wirklich nur an der Programmierung liegt, weiß ich nicht.
Mit dem Start der Applikation geht ja die USB-Verbindung verloren, da 
der Bootloader nicht mehr ausgeführt wird.

Ist quasi wie bei einem USB-Stick. Wenn man Auswerfen gedrückt hat, wars 
das. Ohne Abstecken meldet der sich nie wieder.

von Michael F. (sharpals)


Lesenswert?

Ja das ist richtig :

Die platine hat einen Urlader, der auf eingabe über die 
USB-schnittstelle wartet und nach einiger zeit dann zu seinem normalen 
programmcode springt.

Das erklärt die Zeitverzögerung.

Das der reset bei (+) nicht reagiert, ist in ordnung.  Erist LOW-aktiv.

Also muß der pin kurz gegen masse gezogen werden.

Wenn du ihn also nicht immer abziehen willst, dann müßtest du einen 
kleinen taster an den resetpinn und masse anbringen. Beim drücken 
startet er neu und dürfte sich dann auch wider von der 
programmiersoftware ansprechen lassen ( es sei denn windows blockiert es 
).

Schlecht programmiert ist es nicht ( er läuft nun mal nicht im 
multitasking ), bei den großen ist nämlich ein zusätzlicher prozessor 
für das programmieren zuständig, der nichts anderes macht, als sich um 
die schnittstelle zu kümmern und dann den hauptprozessor zurückzusetzen 
und zu programmieren

https://www.allaboutcircuits.com/uploads/articles/Arduino_schematic.png

: 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.