Forum: Mikrocontroller und Digitale Elektronik AtTiny84 lässt sich nicht mti Arduino programmieren


von Ernst P. (fredy15)



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

von Paul B. (paul_baumann)


Lesenswert?

Ernst P. schrieb:
> Ich habe einen ATTiny84A. Spielt das eine Rolle?

Es ist möglich, daß der eine andere Signatur als der "blanke" Attiny84 
hat.

Das spricht er ja auch: avrdude: Yikes!  Invalid device signature.

Guck mal in die Datenblätter der beiden Kontroller, da steht die 
Signatur irgendwo drin.

mfG Paul

von Philipp K. (philipp_k59)


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.

: Bearbeitet durch User
von Timmo H. (masterfx)


Lesenswert?

84 und 84A haben die gleiche Signatur. Auch inter Funktionalität hat 
sich nicht wirklich was geändert: 
http://www.atmel.com/Images/doc8187.pdf

: Bearbeitet durch User
von Uwe (de0508)


Lesenswert?

Hallo Ernst,

wie schnell ist der ISP Takt ?
Wo ist der 100nF Kondensator direkt am attiny ?

Natürlich steht das alles in den Application Notes von Atmel, man muss 
nur lesen können.

: Bearbeitet durch User
von Ernst P. (fredy15)


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.

von Uwe (de0508)


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.

: Bearbeitet durch User
von Bastian W. (jackfrost)


Lesenswert?

Laut dem Schaltplan vom Uno ist der ISP Header mit dem ISP des Mega 8 
verbunden. Der ist dafür um den Mega 8 zu programmieren und nicht um 
damit andere AVRs zu programmieren.

https://www.arduino.cc/en/Tutorial/ArduinoISP Hier ist das anders 
Verkabelt. Schau in dem Sketch welcher Pin des Mega8 mit dem Tiny84 
verbunden werden muss

Gruß JackFrost

von Philipp K. (philipp_k59)


Lesenswert?

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.

Vielleicht mal miso mosi vertauschen als Test.

: Bearbeitet durch User
von Gerald R. (visitor)


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.

: Bearbeitet durch User
von Philipp K. (philipp_k59)


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

von Ernst P. (fredy15)


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

von Ernst P. (fredy15)


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

: Bearbeitet durch User
von Ernst P. (fredy15)


Lesenswert?

Wie sieht es mit den Eingangs erwähnten 4V zwischen 5VC und GND am 
Arsuino aus? Muss das sein?
Ich habe auch mal alles wieder abgestöpselt und am nakten Arduino 
gemessen, da sind definitiv nur 4V.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ernst P. schrieb:
> Ich habe auch mal alles wieder abgestöpselt und am nakten Arduino
> gemessen, da sind definitiv nur 4V.

Wie speist du den Arduino? Wenn du über den Hohlstecker ein 9V DC 
Netzteil anschliesst und an den 5V misst, sollten da auch 5V sein, 
ansonsten ist der Onboard Spannungsregler evtl. beschädigt.

von Philipp K. (philipp_k59)


Angehängte Dateien:

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!

: Bearbeitet durch User
von Gerald R. (visitor)


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

von Grrr.... (Gast)


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.

von Gerald R. (visitor)


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.

von Philipp K. (philipp_k59)


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.

: Bearbeitet durch User
von Gerald R. (visitor)


Angehängte Dateien:

Lesenswert?

Ich hänge mal den originalen Sketch an, habe meine IDE am Freitag 
installiert.

von Philipp K. (philipp_k59)


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.

: Bearbeitet durch User
von Programmer (Gast)


Lesenswert?

Ernst P. schrieb:
> Dann habe ich die IDE wie folgt eingestellt
> Board: ATtiny
> Processor: ATtiny84
> Clock: 1 MHz (internal)

Was hast du eigentlich unter Programmer ausgewählt?

Unter Tools->Programmer->Arduino as ISP

von Ernst P. (fredy15)


Angehängte Dateien:

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.

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Solang der Beispiel Sketch funktioniert ist alles i.O.

von Grrr.... (Gast)


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.

von Ernst P. (fredy15)


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

von Philipp K. (philipp_k59)


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. ;)

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