ich (Anfänger) experimentiere aktuell ein wenig mit dem Attiny85 und habe Probleme mit einer SMD Version (Attiny85V-10SU).
Ich bekomme einfach kein Programm aufgespielt oder den Bootloader gebrannt.
Hier mal die Ausgabe der Arduino IDE:
Double check connections and try again, or use -F to override
60
this check.
61
62
63
avrdude done. Thank you.
Zum Programmieren nutze ich einen Arduino Nano.
Warum in der obigen Ausgabe 0,0V angezeigt wird, weiß ich nicht.
Die Kableverbindungen sollten alle in Ordnung sein und einen 10uF Elko habe ich zur Sicherheit auch an den Nano geklemmt (zwischen RST und GND). Der Attiny85V-10SU wird mit Hilfe eines SOP-8 zu DIP-8 Adapters auf ein Steckbrett gesteckt. Genau auf den selben Platz, auf den ich zuvor einen Attiny85-20 (DIP) gesteckt habe, mit dem alles einwandfrei funktioniert. Ich habe nichts verändert, nur die Chips ausgetauscht und dennoch funktioniert es nicht.
Die Pins des Adapters habe ich auf Kurzschluss geprüft, alles in Ordnung. Die Verbindung zwischen den unteren Steckpins des Adapters und den Pins direkt am eingeklemmten Chip habe ich auf Durchgang geprüft und auch hier ist alles Ordnung.
Ich habe auch beim Brennen keinen externen Oszillator eingestellt.
Einen USBAsp habe ich auch versucht, gleiches Szenario: Die DIP Version funktioniert, die SOIC Version nicht.
Hier mal meine Einstellungen in der IDE:
1
Board: Attiny25,45,85 (no bootloader)
2
Chip: Attiny85
3
Clock secure: 1Mhz, 8MHz external oder internernal, ja nach dem.
4
Timer 1 Clock "CPU (CPU frequenzy)"
5
LTO (1.6.11+only): "Enabled"
6
millis()/ micros(): "Enabled"
7
Save EEpPROM (only set on bootload); "EEPROM retained"
8
B.O.D. Level (Only set on bootload): B.O.D. Desabled (Saves power)
9
Port:/dev/TTYUSB0
10
Programmer: "Arudino as ISP"
Hat jemand eine Ahnung, was hier das Problem sein könnte?
Warum in der obigen Ausgabe 0,0V angezeigt wird, weiß ich nicht.
Weil dein Programmieradapter (der Arduino Nano) die Spannung nicht messen kann. Ich glaube das ist in der "Arduino as ISP" Firmware nicht implementiert. Das ist kein Hindernis.
Als Anfänger sind die Teile dann für mich wohl unbrauchbar?
Vom Debuggen habe ich keine Ahnung und einen HV habe ich auch nicht.
Einen USBAsp, einen Arduino Nano und einen 8 MHz Oszillator (3 Pins) habe ich hier nur zur Verfügung.
Das wird wohl nicht reichen, um die Dinger gangbar zu machen?
Den Text von stefanfrings.de verstehe ich auch nicht wirklich. Auf jeden Fall habe ich aber an den Fuses nichts verändert. Trotzdem hatte ich zwischenzeitlich einfach mal den 8 MHz Oszillator angeklemmt, für den Fall, dass da irgendwas auf extern eingestellt ist. War aber scheinbar nicht der Fall, denn es hat ebenfalls nicht funktioniert.
Wenn du willst, kannst du mir den ATtiny85 in einen Briefumschlag stecken und her schicken, ich teste ihn dir. Wenn er funktioniert (von mir aus auch mit HV oder externem Takt), programmiere ich dir die Fuses nach deiner Wahl und stecke ihn in einen Briefumschlag zurück. Wenn nicht, ist es vermutlich preiswerter, wenn ich ihn dann in den Müll werfe.
Worauf muss ich denn in Zukunft achten, dass ich nicht noch mal so ein
Zeug kaufe?
Originale kaufen?
Ist ja nichts grundsätzlich dagegen einzuwenden, dass jemand das Zeug "refurbished", aber dann sollte er zumindest in der Lage sein, 1.) nicht nur die Flash-Inhalte zu löschen, sondern auch die Fuses auf Werkzustand zurückzusetzen und 2.) wenigstens die grundlegende Funktion zu testen.
Aber mit so viel Arbeit ließe sich mit dem Recycling wahrscheinlich kein Geld mehr machen. Einen ATtiny85 bekommst du von einem Distri für einen reichlichen Euro, und da vedient der noch was dran. Wenn nun jemand die recycelten Teile verkaufen will, muss er nochmal eine ganze Runde da drunter bleiben, da kannst du dir vorstellen, wieviel Arbeit er damit zubringen darf, damit der Laden rentabel bleibt. So billig sind auch chinesiche Arbeitsstunden halt nicht.
Besten Dank für Eure Informationen und Tipps! Das war sehr hilfreich!
@dl8dtl Auch an Dich noch mal vielen Dank für das Angebot! Ich werde mich ggf. noch mal über PN bei Dir melden.
Die Fusebits CKSELx in der low fuse. Worst case: 0b0000 = "external clock". Aber auch nicht jede der Einstellungen für einen externen Resonator muss deiner funktionieren.
Die Fusebits CKSELx in der low fuse. Worst case: 0b0000 = "external
clock". Aber auch nicht jede der Einstellungen für einen externen
Resonator muss deiner funktionieren.
Das wird wohl nicht reichen, um die Dinger gangbar zu machen?
Du könntest noch versuchen, einen 1MHz Takt auf XTAL1 einzuspeisen. Dazu könntest du z.B. PWM auf dem Attiny85 benutzen, der schon einen Bootloader drauf hat, oder jeden anderen Arduino. GND zu GND nicht vergessen.
Es könnte ja auch sein, dass da noch ein altes Programm drauf ist, bei dem der Takt über clkpr runter gesetzt wurde. Der lässt sich dann nur mit einem entsprechend langsamen Takt programmieren. Oder mit der brutalen Methode: bevor Vcc angelegt wird, den Reset hart auf Gnd legen und Reset erst nach dem Programmieren wieder freigeben. Das hatten wir mal hier rausgefunden:
Beitrag "Re: ATmega1284p lässt sich nur einmal laden"
Kommt sehr darauf an, Jörg Wunsch - probieren Sie es einmal mit Ihrem eigenen Programmiergerät: 'Low Frequency Crystal Oscillator' mit einem Programm, das den Teiler auf 256 setzt, und schauen Sie, was anschließend passiert.
PS:
Für einen solchen Fall geht mein Selbstbaugerät bis auf 29 Hz herunter - vielleicht haben Sie ja etwas Besseres.
ISP erfolgt während Reset, da interessieren nur die Fuses.
Es ist aber so, dass beim normalen Programmieren zuerst Vcc angelegt wird, dann läuft das vorhandene Programm los und wird über clkpr auf niedrigen Takt gesetzt. Dann geht der normale Programmiertakt nicht mehr. Die Fuses werden erst gesetzt, wenn er aus dem Powerdown oder Reset heraus kommt. Also beim Start zu früh, da danach clkpr gesetzt wird und dann geht schon nichts mehr.
Hatte ich gerade wieder, als ich einen schon mal programmierten Chip nutzen wollte, da hat AVR-Studio gleich über falsche Signatur gemeckert, weil er sie nicht lesen konnte. Mit dem Trick über Hart-Reset ging alles wieder.
ISP erfolgt während Reset, da interessieren nur die Fuses.
Das ist nicht ganz richtig. Der Clock Prescaler wird nicht beim Eintrit in den Reset Zustand zurück gesetzt, sondern beim Verlassen.
Nehmen wir an, das Programm läuft und hat die Taktrate herunter gesetzt. Jetzt zieht der Programmieradapter die Reset Leitung auf LOW, um in den ISP Modul zu wechseln. Dann ist die Taktrate immer noch niedrig!
Um dieses Problem zu umgehen besteht die Möglichkeit (und ich glaube dein Avrdude macht das auch), die Reset Leitung kurz auf LOW zu Pulsen, und dann ein zweites mal auf LOW zu ziehen (und zu halten). Wenn das Programm die Taktfrequenz bis dahin nicht schon wieder herab gesetzt hat, dann funktioniert die ISP Kommunikation nun schnell. Deswegen gibt es den Tipp, am Anfang des Programms eine Sekunde zu warten, bevor man die Taktrate herunter setzt. Wer das bisher immer so gemacht hat, kennt das "Problem" womöglich gar nicht.
Um dieses Problem zu umgehen besteht die Möglichkeit (und ich glaube
dein Avrdude macht das auch), die Reset Leitung kurz auf LOW zu Pulsen,
und dann ein zweites mal auf LOW zu ziehen (und zu halten)
Das ist letztlich die seit Jahr und Tag*) von Atmel empfohlene Vorgehensweise.
*) Einzige Ausnahme: beim AT90S1200 stand dies noch nicht in der Vorschrift drin. Der hatte aber auch keinen clock prescaler. ;-)
Ansonsten spricht natürlich auch nichts dagegen, dass man /RESET vorab auf low zieht und dann erst Vcc anlegt.