AtTiny45

hello, i wanted to programm my attiny45 with the arduino, but following error::

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
avrdude: Yikes! Invalid device signature.
** Double check connections and try again, or use -F to override**
** this check.**

i used this tutorial:

Hallo,

ich habe mal in das Tutorial geschaut. Leider ist der Download-Link darin kaputt, ich erhalte nur "Not Found", kann also nicht sehen, wie die Definitionen darin sind.

Deshalb nur ein paar allgemeine Hinweise, die Dir vielleicht aber schon weiterhelfen.

Please define Pagel... - kannst Du ignorieren.

Yikes! Invalid... - Entweder ist Deine Verkabelung falsch und deshalb kann AVRDude die Signatur nicht lesen oder in den Definitionen, die ich leider nicht sehen kann wg. Link kaputt, steht was falsches drin. Um die Verkabelung zu überprüfen habe ich Dir unten ein Bild angehängt. So sieht das bei mir auf dem Breadboard aus und funktioniert. Statt des Tiny13, den ich benutzt habe, kannst Du auch den Tiny45 nehmen die sind pinkompatibel. Wenn Du also den Fehler in der Verkabelung findest, sollte er jetzt gelöst sein.

Falls die Definitionen irgendwo fehlerhaft sind, kannst Du AVRDude mal von Hand starten. Erstelle dazu auf Deinem Rechner einen Ordner und kopiere die Hex-Datei, die ich angehängt habe, da rein. Schau nach, an welchem Comport Dein Arduino hängt. Starte die Eingabeaufforderung (iich hoffe, Du arbeitest unter Windows?). Gib folgendes Kommando ein:

avrdude -c arduino -P COM9 -b 19200 -p attiny45 -U flash:w:main.hex:i

Statt COM9 musst Du den Comport angeben, an dem Dein Arduino hängt.

Wenn die Verkabelung stimmt, sollte das jetzt klappen. Dann solltest Du Dir evtl. neue Definitionen der Tiny-Boards besorgen. Ein Anlaufpunkt wäre das hier: https://github.com/damellis/attiny/archive/master.zip

Wenn es dann immer noch nicht geht, bitte nochmal die genauen Fehlermeldungen posten.

Hoffe, das hilft!

Gruß,
Ralf

PS: Ach ja, die Main.hex-Datei bringt die LED zum blinken, wenn sie wie auf dem Bild angeschlossen ist.

main.hex (259 Bytes)

wie nutze ich avrdude?
wenn ich das in cmd eingeben, dann kommt befehl"avrdude" nicht gefunden?

Wenn Deine Arduino-Software korrekt installiert ist, sollte auch AVRDude gehen. Ansonsten kannst Du den auch im Web runterladen.

Gruß,
Ralf

funktioniert nicht, fehler:

avrdude: please define PAGEL and BS2 signals in the configuration file for part
ATtiny45
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

avrdude done. Thank you.

Mein Erfahrungen mit dem ATTiny45 lassen mich bei sowas zuerst die Verkabelung überprüfen. Aber ein paar zusätzliche Informationen wären hilfreich. Welcher Arduino wird verwendet? Ist der Kondensator zwischen Reset und Ground drin? Sicher der Arduino as ISP Scetch geladen?

Grüße,

Sven

Klar, Kabel checken - wie geschrieben, incl. Kondensator.

Hast Du den AVRDude mit der von mir angegebenen Kommandozeile gestartet? Welches OS hat Dein Computer, welchen Arduino benutzt Du?

Theoretisch muss man auch ins Auge fassen, dass der Tiny45 kaputt oder (wahrscheinlicher) verfused sein kann.

Gruß,
Ralf

Hmm, ich habe mir gerade die Anleitung nach der vorgegangen bist durchgelesen. Dort fehlt der Punkt mit "Bootloader installieren".
Handelt es sich um einen nagelneuen ATTiny? Wenn ja, solltest Du bei den "Boards" den ATTiny mit 1MHz aussuchen. Falls Du eine andere Taktfrequenz willst, musst Du vorher den Punkt Bootloader installieren unter Tools ausführen.

sven222:
Handelt es sich um einen nagelneuen ATTiny? Wenn ja, solltest Du bei den "Boards" den ATTiny mit 1MHz aussuchen. Falls Du eine andere Taktfrequenz willst, musst Du vorher den Punkt Bootloader installieren unter Tools ausführen.

Nein, wenn der Tiny über ISP programmiert wird, braucht er keinen Bootloader. Der TO müsste einfach mal über meine Kommandozeile von oben den Tiny programmieren.

Gruß,
Ralf

Hatte das gleiche Problem.
Mir hat das hier geholfen:

http://hlt.media.mit.edu/?p=1695

Grüsse
Konstantin

@Ralf
Klar braucht man keinen Bootloader auf einem ATTiny.
Der einzige Sinn an "burn bootloader" ist, dass da erstmal die fuses gesetzt werden.
( Das macht "deine Kommandozeile von oben" leider nicht, wenn du damit

avrdude -c arduino -P COM9 -b 19200  -p attiny45 -U flash:w:main.hex:i

meinst )
Fuses direkt per Kommandozeile setzen geht zwar auch, man sollte sich dabei aber nicht vertippen, da man an einen "verfuseten" Controller evtl. nur schwer wieder dran kommt.

Aber eine signatur 000000 ist eher ein generelles (Verdrahtungs-) Problem

Diese Kommando sollte jedenfalls nicht mehr machen als die Signatur anzuzeigen
avrdude -P COM9 -p t45 -c arduino -v

Ein ATTiny45 sollte übrigens die Signatur 1e 92 06 haben.

michael_x:
Aber eine signatur 000000 ist eher ein generelles (Verdrahtungs-) Problem

Tja, ich hatte das Problem ja eingegrenzt auf: Verdrahtung falsch (deshalb habe ich oben den Plan beigefügt), Controller verfused oder Controller kaputt.

Wenn der TO erst mal mein main.hex flashen würde und das ginge, wären wir ja schon mal ein Stück weiter. Dann würde ich ihm auch gerne schreiben, wie er die Fuses setzen muss. Wenn aber SPI-Programming per Fuse disabled ist oder der Tiny auf einen externen Oszillator wartet, wird es erst mal schwierig.

Gruß,
Ralf

Hallo zusammen,

vieleicht müssen wir gar nicht soweit gehen mit dem von Hand flashen. Auch wenn ich selbst Freund der Kommandozeile bin, kann ich es verstehen, dass viele Benutzer davor zurückschrecken. Außerdem verstehe ich das dritte Posting vin nitram0598 so, dass er die Kommandozeilen Option schon versucht hat, und eben wieder den Fehler mit der Signatur hat. Wenn jetzt der Auslese Befehl auch eine Signatur anzeigt, die nur aus Nullen besteht, dann sollte der Fehler eindeutig nicht in den Definitonen liegen.
Deshalb würde ich jetzt das große Feld Verkabelung untersuchen. In dem verlinkten Artikel, auf den sich das Ursprungsposting bezog wird zum Beispiel nicht erwähnt, dass man einen 10 uF Kondensator zwischen Reset und Ground am Arduino braucht. Ich hatte auch mal den lustigen Fall, dass ich mit einem nachgekauften ATMega328 mit Arduino Bootloader auf dem UNO keine ATTinys programmieren konnte. Erst als ich den Bootloader auf den ATMega nochmal neu lud, ging auch das Programmieren der Tinys wieder. Diesen Fehler habe ich bis heute nicht verstanden, konnte ihn aber mit zwei identisch gekauften ATMegas reproduzieren. Es gibt so viel was da alles daneben hauen kann. Viel Erfolg beim Fehlersuchen.
Ach ja, den Link von tron3x kann ich absolut empfehlen, in Verbindung mit diesem Link hier: http://hlt.media.mit.edu/?p=1706 sollte eigentlich alles erklärt sein.

Grüße,

Sven

http://hlt.media.mit.edu/?p=1706
dies hatte ich genutzt
und selber fehler
soll ich mal verkabelung zeigen?

nitram0598:
soll ich mal verkabelung zeigen?

Das könnte helfen, also: JA!

Gruß,
Ralf

hier

Hai,

zumindest der Widerstand ist falsch eingesteckt. So blinkt die LED nicht. Ich habe Dir nochmal ein Bild von meinem (funktionierenden) Aufbau angehängt, da kannst Du selbst nochmal vergleichen.

Gruß,
Ralf

und deine schritte/code?

nitram0598:
und deine schritte/code?

Ich weiß jetzt nicht genau, was Du meinst. Das Programm zum Blinken habe ich Dir ja oben angehängt (main.hex). Der Sourcecode davon ist normal in C geschrieben, den kann ich Dir morgen posten, wenn Du magst. Ansonsten ist das mit Notepad++ als Editor eingetippt und dann mit einem Makefile übersetzt und geflasht. Die Kommandozeile zum flashen hab ich Dir ja oben auch schon gepostet.

Falls Du einen anderen Code meinst, bitte nochmal genauer nachfragen.

Hast Du noch das Problem, dass die Signatur Deines Tiny mit 0000 gelesen wird? Hättest Du noch einen fabrikneuen Tiny, an dem noch nichts programmiert wurde? Oder evtl. einen anderen, neuen Atmel Controller? Wenn nämlich Deine Verkabelung so wie bei mir ist, sollte es mit der Kommandozeile von oben gehen. Wenn nicht, wäre es eine Option mal einen anderen Controller zu probieren. Oder aber, wie oben schon geschrieben, mal den Bootloader neu auf Deinen Arduino zu laden. Da hätte ich aber Angst, dass Du plötzlich ohne Arduino da stehst, wenn was nicht klappt.

Gruß,
Ralf

[Edit:] So, hier ist, wie versprochen, noch der C-Sourcecode:

#define F_CPU 8000000

#include <avr/io.h>
#include <util/delay.h>

int main(void) {
	DDRB |= (1 << PB4);
	
	for(;;) {
		PORTB ^= (1 << PB4);
		_delay_ms(500);
		PORTB &= ~(1 << PB4);
		_delay_ms(500);
	}
	
	return(0);
}

Zum Bootloader laden braucht man ja einen zweiten Arduino, oder ein Programmiergerät, aber die Gefahr den zweiten zu zerstören ist da. Ich habe mir sicherheitshalber auch erst zwei ATMegas gekauft, mit Bootloader, bevor ich einen davon versucht habe selbst bei einem den Booloader zu laden. Wegen Deinem Code, sollte dort anstatt:

#define F_CPU 8000000

nicht

#define F_CPU 1000000

stehen? Klar, download wird trotzdem funktionieren, aber etwas langsam blinken, oder? Ich verstehe nicht Arduino Code nicht wirklich, deshalb die Frage.
Und noch eine Frage an den Ursprungsposter, hast Du mal versucht die Signatur mit dem hier benannten Kommandozeilen Befehl auszulesen? Hast du eventuell einen anderen ATTiny da. Ist der ATTiny neu?

Grüße,

Sven