AtTiny84 lässt sich nicht mti Arduino programmieren

OP #4463374
Lesenswert?

Hallo zusammen

Ich versuche schon einige Abende mit Hilfe eines Arduino einen ATtiny84 
zu programmieren. Bis jetzt leider erfolglos.

Ich verwende die neuste Arduino IDE 1.6.7 und das mitgelieferte 
ArduinoISP Sketch.

Ich kann das Sketch auf den Arduino übertragen und die Heartbeat LED 
pulsiert brav vor sich hin.

Dann habe ich die IDE wie folgt eingestellt
Board: ATtiny
Processor: ATtiny84
Clock: 1 MHz (internal)

Jetzt versuche ich das Blink Sketch auf den ATtiny zu übertragen. Als 
Fehlermeldung bekommen ich
1
avrdude: Yikes!  Invalid device signature.
2
         Double check connections and try again, or use -F to override
3
         this check.

Die Verkabelung könnt ihr der Fritzing Zeichnung entnehmen. Ich habe 
alle Kabel mehrfach kontrolliert und bin mir sicher das alles so 
angeschlossen ist wie in der Zeichnung.

Beim Kontrollieren der Schaltung ist mir aufgefallen, das zwischen dem 
5V und GND Pin des Arduino nur 4V sind. Ist das normal? Die Beispiele 
aus dem Starterkit haben bis jetzt alle problemlos funktioniert.

Ich habe auch gelesen, das man den avrdude auf verbose stellen kann, 
damit er mehr Informationen liefert. Wie mache ich das mit der Arduino 
IDE?

Ich habe einen ATTiny84A. Spielt das eine Rolle?

Woran könnte es sonst noch liegen?

Viele Grüsse
Fredy
#4463389
Lesenswert?

Ernst P. schrieb:
> avrdude: Yikes!  Invalid device signature.
>          Double check connections and try again, or use -F to override
>          this check.

Da gibt es wirklich nur 2 möglichkeiten..

1. Falsch angeschlossen bzw. Wackler aufm Steckbrett.
2. Irgendwie dumm angefuset das der nen Externen Takt an XTal benötigt

Eventuell noch nen 100uF an die Versorgung.

Paul B. schrieb:
> Es ist möglich, daß der eine andere Signatur als der "blanke" Attiny84
> hat.

Dann würde er aber beide IDs als vergleich melden.
OP #4463482
Lesenswert?

Uwe S. schrieb:
> Hallo Ernst,
>
> wie schnell ist der ISP Takt ?
Ich habe einfach das ArduinoISP Sketch auf dem Arduino installiert. Den 
einzigen Takt, den ich einstellen kann sind die 1MHz (internal) im Tools 
Menü.

> Wo ist der 100nF Kondensator direkt am attiny ?
Wie du aus obigen Schaltplan ersehen kannst, ist der Kondensator 
zwischen Reset und GND des Arduino.
#4463487
Lesenswert?

Ernst P. schrieb:
> Uwe S. schrieb:
>> Hallo Ernst,
>>
>> wie schnell ist der ISP Takt ?
> Ich habe einfach das ArduinoISP Sketch auf dem Arduino installiert. Den
> einzigen Takt, den ich einstellen kann sind die 1MHz (internal) im Tools
> Menü.

Na dann liess mal im Datenblatt nach, wie hoch der sein darf !
Es gilt nicht, sich hinter Arduino zu verstecken.
Was man darf oder nicht steht im Datenblatt, damit kann man selbst eine 
Fehleranalyse durchführen.

>> Wo ist der 100nF Kondensator direkt am attiny ?
> Wie du aus obigen Schaltplan ersehen kannst, ist der Kondensator
> zwischen Reset und GND des Arduino.
Sorry hier war ich ungenau, es fehlt eine 100nF Kondensator zwischen Vcc 
und GND.
Am Restet Anschluß gehört kein 100nF hin!, sondern eher 10k Ohm nach Vcc 
und - evtl. in einem EMV Umfeld - einen sehr viel kleinere Kondensator 
nach Masse: 1nF-10nF würden reichen.

Steht auch alles in den Application Notes.
#4463551
Lesenswert?

Die gleiche Fehlermeldung kommt auch wenn du keinen AVR ansteckst 
richtig?

Das hat mich auch 2 Abende gequält.
Du benutzt ein Arduino UNO mit Mega328?

Im Sketch müssen die Pins für MOSI,MISO,SCK richtig definiert sein, da 
ansonsten keine Antwort vom Tiny erkannt wird.
Die IDE ist leider nicht intelligent genug das für dich zu machen.

Hier die Pinbelegung: 
http://jobs.arduinoexperts.com/wp-content/uploads/2013/03/ARDUINO_V2.png

Laut deinem Anschlussplan verwendest du die PINS 11 bis 13 dafür, aber 
im Sketch sind standardmäßig Hardware PINS definiert.
Entferne im ArduinoISP Sketch in Zeile 81 mal die beien //
von // #define USE_OLD_STYLE_WIRING
in #define USE_OLD_STYLE_WIRING
Dann laden den Sketch neu auf den Arduino und probiere es nochmal.
#4463575
Lesenswert?

Gerald R. schrieb:
> Die gleiche Fehlermeldung kommt auch wenn du keinen AVR ansteckst
> richtig?
>
> Das hat mich auch 2 Abende gequält.
> Du benutzt ein Arduino UNO mit Mega328?

Jeder der die IDE installiert und einen Uno hat, wählt einfach nur 
ArduinoISP als Beispielsketch und ab gehts mit den im Sketch angegebenen 
Pins. Auch wenn es der Uno mit Sockel ist kann man da vom alten Atmega8 
bis 328p alles raufpampen und den Sketch aufspielen.

Ich brauchte da noch nie für einen Tiny und andere Chips was ändern.,
OP #4463677
Lesenswert?

Gerald R. schrieb:
> Laut deinem Anschlussplan verwendest du die PINS 11 bis 13 dafür,
Nein, ich verwende den rechten ICSP Header, so wie es in der Anleitung 
des Sketches beschrieben ist.

> Entferne im ArduinoISP Sketch in Zeile 81 mal die beien //
> von // #define USE_OLD_STYLE_WIRING
> in #define USE_OLD_STYLE_WIRING
> Dann laden den Sketch neu auf den Arduino und probiere es nochmal.
Wäre noch ein Versuch wert. Man weiss ja nie...
OP #4463678
Lesenswert?

Philipp K. schrieb:
> Bastian W. schrieb:
>> Der ist dafür um den Mega 8 zu programmieren und nicht um
>> damit andere AVRs zu programmieren.
>
> passt normalerweise schon, die sind gebrückt.
Laut Kommentar im Sketch muss mann den ICSP header und nicht PIN11-13 
verwenden. Ich habe mich auch gewundert, das es so viele Anleitungen im 
Netz gibt, die auf PIN11-13 verweisen, obwohl das Sketch seit 2011 den 
ICSP Header verwendet.

>
> Vielleicht mal miso mosi vertauschen als Test.
Das habe ich schon versucht. Leider mit dem gleichen Ergebnis :-(.
#4463979
Lesenswert?

Ernst P. schrieb:
> Laut Kommentar im Sketch muss mann den ICSP header und nicht PIN11-13
> verwenden. Ich habe mich auch gewundert, das es so viele Anleitungen im
> Netz gibt, die auf PIN11-13 verweisen, obwohl das Sketch seit 2011 den
> ICSP Header verwendet.

Die sind gebrückt laut Schaltplan, damit wäre das egal.. wenn Du nen 
Klon mit zwei ISP Headern hast dann funktioniert nur einer dsavon.

zweitens wäre nach deinem Schaltplan der Reset falsch angeschlossen.. 
der Reset auf dem ICSP ist nen Eingang und kein Ausgang. Poste mal bitte 
was zum anschluß im Sketch steht.

EDIT: Laut meinem Sketch kommt Reset des Attiny84 auf SS und der liegt 
leider auf dem ganzen Board nur an Pin10..  die anderen Pins liegen an 
der Pinleiste und am Header.

Ich finde die Hinweise auf den Header in meinen Anleitungen und Sketches 
nirgends!
Angehängte Dateien:
#4464101
Lesenswert?

Im Sketch steht doch dass reset PIN10 ist und nicht 1 wie dein Bild 
zeigt.
Vermutlich ist das dein Problem.

Alternativ kannst du folgendes testen:
7,8,9 für die LEDs
10 für Reset
11,12,13 für MISO MOSI SCK in Verbindung mit #define 
USE_OLD_STYLE_WIRING

Steht auch so im Sketch:
1
// On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins
2
// as digital pin 11, 12 and 13, respectively. That is why many tutorials
3
// instruct you to hook up the target to these pins. If you find this wiring
4
// more practical, have a define USE_OLD_STYLE_WIRING. This will work even
5
// even when not using an Uno. (On an Uno this is not needed).
Gast #4464107
Lesenswert?

Ernst P. schrieb:
> Yikes!  Invalid device signature.
Warum schneidest du die wichtigste Information aus der Fehlermeldung 
raus?
Weil du sie als unwichtig ansiehst...?
Wie m,an sich doch irren kann....

Oder muss die geheim gehalten werden?
Dann würde mich mal das "warum" interessieren.
#4464118
Lesenswert?

Was?

Da kommt nicht mehr Information wenn man die falsche Pinbelegung hat.
1
Sketch uses 296 bytes (3%) of program storage space. Maximum is 8,192 bytes.
2
Global variables use 9 bytes of dynamic memory.
3
avrdude: Yikes!  Invalid device signature.
4
         Double check connections and try again, or use -F to override
5
         this check.
#4464120
Lesenswert?

Gerald R. schrieb:
> have a define USE_OLD_STYLE_WIRING.

Ich habe eine 3 Wochen alte neu installierte IDE und kann davon nix 
finden..


Hab mal im Github gesucht.

// By default, use hardware SPI pins
Der Absatz drüber, brauch man garnix machen solang man MOSI MISO und SCK 
nicht selbst per Hand gesetzt hat.. kann man übrigens in den ersten C 
Zeilen des Sketches selbst feststellen.

Dann nehm einfach 10-13 wie beschrieben, das passt schon.. das ist nur 
ein  Hinweis das fast alle Pins auf dem Header sind, Vortiel könnte sein 
das alles beschriftet ist.
#4464137
Lesenswert?

Gerald R. schrieb:
> Ich hänge mal den originalen Sketch an, habe meine IDE am Freitag
> installiert.

Okay für versteher:

// On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins
// as digital pin 11, 12 and 13, respectively.

An vielen Arduinos wie zB. dem Uno sind 11-13 gleichzeitig Hardware SPI 
miso mosi sck.

//That is why many tutorials instruct you to hook up the target to these 
pins.

Deswegen benutzen viele Tutorials diese Pins.

//If you find this wiring more practical, have a define 
USE_OLD_STYLE_WIRING.

Wenn du keinen Uno hast kannst Du diese mit Oldstyle Wiring setzen.

//This will work even when not using an Uno. (On an Uno this is not 
needed).

Das funktioniert nur bei Nicht-Unos, bei einem Uno ist dies unnötig.
OP #4466017
Lesenswert?

Philipp K. schrieb:
> Laut meinem Sketch kommt Reset des Attiny84 auf SS und der liegt
> leider auf dem ganzen Board nur an Pin10..  die anderen Pins liegen an
> der Pinleiste und am Header.

Gerald R. schrieb:
> Im Sketch steht doch dass reset PIN10 ist und nicht 1 wie dein
> Bild
> zeigt.
> Vermutlich ist das dein Problem.

So ist es. Pin10 des Arduino mit Pin4 am ATtiny verbunden und schon 
komme ich ein Stück weiter. Zumindest wird jetzt etwas auf den ATtiny 
geschrieben und die IDE hat keine Fehlermeldung. Wenn ich die LED am 
ATtiny anschliesse blinkt sie! Toll :-)!

Irgendetwas geht aber immer noch schief. Wie ihr dem angehängten Log 
entnehmen könnt, vermeldet die IDE zwar alles ok. Leider brennt nach dem 
Schreiben aber die LED an Port 8 des Arduino. Laut Sketchbeschreibung 
ist das die Error LED.

Ich hätte erwartet, das nach dem Schreiben wieder die Heartbeat LED 
pulsiert.
Angehängte Dateien:
Gast #4466122
Lesenswert?

Gerald R. schrieb:
> Was?
>
> Da kommt nicht mehr Information wenn man die falsche Pinbelegung hat.
> Sketch uses 296 bytes (3%) of program storage space. Maximum is 8,192
> bytes.
> Global variables use 9 bytes of dynamic memory.
> avrdude: Yikes!  Invalid device signature.
>          Double check connections and try again, or use -F to override
>          this check.

In den Arduino Voreinstellungen die ausführlichen Meldungen beim 
Hochladen aktivieren.
OP #4466385
Lesenswert?

Vielen Dank für die guten Tips! Damit ich das nächste Mal nicht wieder 
alles zusammensuchen muss, habe ich den ganzen Ablauf auf meinen Blog 
beschrieben. Vielleicht ist er ja für jemanden von Nutzen:

ATtiny84 mit einem Arduion Uno programmieren: 
http://www.pluess.li/blog/attiny84-mit-einem-arduion-uno-programmieren

Und nachdem das Progarmmieren endlich funktioniert hat musste ich noch 
etwas mit meine ATtiny spielen:

Analog-Digital Wandler mit dem ATtiny84:
http://www.pluess.li/blog/analog-digital-wandler-mit-dem-attiny84
#4466428
Lesenswert?

Das mit dem verdrahteten ISCP halte ich für unübersichtlich, anstatt 
einfach 10-13 direkt rüberzuziehen wird aufwendig am 6Pin Header 
rumgefummelt und noch einer von Pin10 rübergeholt, genauso GND und VCC.

Der Icsp ist eher von Vorteil wenn man verschiedene Header Adapter 
rumliegen hat.. dann kann man ganz einfach mit 2 Adaptern 6Pin-6Pin oder 
6Pin-10Pin programmieren.


VCC und GND sind doch auch auf dem 6Pin Header, na wenn schon denn schon 
könnte das nen bisschen schicker aussehen wenn ein Adapter mit 6er 
Pfostenbuchse auf 6 Steckpins geht. ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren