Forum: Projekte & Code YAFR - Yet Another Fuse Reseter für ATtiny


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Für einen Wettbewerb in meinem erweiterten Bekanntenkreis werde ich 
(nach langer Zeit) mal wieder teilnehmen.

Die Aufgabe:

Eine Schaltung entwickeln, die

- Bauteilekosten unterhalb einem Euro (ohne PCB)
- Bauteilekosten aus China-Quelle, mitnahme von Mengenrabatten bis 10 
Stck.
- keine fertigen Module dürfen eingesetzt werden.
- Sinn der Schaltung frei wählbar.

Also dachte ich mir, weil ich nicht immer meinen Universal-Programmer 
zur Verfügung habe und ich bisweilen bei den ATtinys den Reset-Anschluss 
als GPIO verwende: ich mache einen Fuse-Reseter wie es im Netz und hier 
schon zu finden gibt (und ich immer noch keinen gebaut habe).

Was braucht man hierfür:

- geschaltete Leitungen
- einen Step-Up Wandler zur Erzeugung der 12V Programmierspannung

Dann stelle ich für mich fest, dass ich diese Hardware ja schon habe:

Beitrag "Arduino - UNO Flashershield (Linux)"

Ursprünglich wollte ich das extrem minimalistisch machen und vllt. einen 
ATtiny13 dazu verwenden, aber das war mir aufgrund der wenigen I/O Pins 
dann zu arg. Ein ATtiny44 würde gehen (und evtl. realisiere ich das noch 
einmal mit dieser MCU), aber:

Ein ATmega8 (hey, ich weiß dass er alt ist, aber für diesen Zweck reicht 
er mehr als aus) ist zudem in China der zweitpreiswerteste Controller 
den ich gefunden habe. Also habe ich das für einen ATmega8 geschrieben 
(in ein Arduino Board einen Mega8 mit Bootloader gesteckt).

Das vorliegende Programm arbeitet mit ATmega8, ATmega48/88/168/328p und 
unterstützt als Targetcontroller:

- ATtiny13
- ATtiny24/44/84
- ATtiny25/45/85

Bis auf den ATtiny24 und ATtiny25 habe ich das Programm getestet und 
funktioniert.

Ich werde also später des Flashershields nochmal aufbauen, aber nicht 
auf einem Arduino-r3 Formfaktor und die Connectoren des Flashershields 
durch 8 und 14 polige Sockel ersetzen.

--------------------------------------------------------------

Die Schaltung kann sowohl als Standalone - Schaltung betrieben werden, 
als auch über eine serielle Schnittstelle.

Nach anlegen der Betriebsspannung blinkt die gelbe Leuchtdiode als 
Anzeige dafür, dass die Schaltung betriebsbereit ist.

Es kann ein Chip in den Sockel eingesteckt werden (die 12V 
Programmierspannung sowie die Betriebsspannung für den Target-Controller 
sind abgeschaltet).

Drücken (und gedrückt halten) der Taste bis die LED aufhört zu blinken 
und Taster loslassen.

- der eingesetzte Controller wird auf seine Default Fuses zurück gesetzt

War das Rücksetzen erfolgreich, leuchtet für kurze Zeit die grüne LED 
auf. Die gelbe Leuchtdiode blinkt wieder, alle Spannungen am 
Target-Controller sind abgeschaltet, ein weiterer Controller kann 
eingesetzt werden.

War das Rücksetzen nicht erfolgreich, leuchtet die rote LED auf, diese 
muss mit einem weiteren Tastendruck quittiert werden und die gelbe LED 
blinkt wieder.

Bedienung über die serielle Schnittstelle:

Ist eine serielle Schnittstelle angeschlossen, kann das Rücksetzen 
verfolgt werden. Es wird der eingesetzte Controller sowie die momentan 
gesetzten Fuses angezeigt.

Ein Drücken der Schaltungstaste setzt wie oben beschrieben die Fuses auf 
die Defaultwerte zurück.

Wird anstelle der Schaltungstaste eine Taste der Tastatur gedrückt, 
können die Werte der Fuses die geschrieben werden sollen, über die 
Tastatur eingegeben werden.

--------------------------------

Alles in allem bin ich auf 0,98 Euro gekommen

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

So, jetzt habe ich die Schaltung und das Programm für den 1 Euro 
Wettbewerb (und die Bauteile kosten in China 98,6 Cent).

----------------------

Realisiert ist der Reseter mit einem ATtiny44. Im Makefile kann 
angegeben werden, ob die Firmware eine UART-Ausgabe unterstützen soll 
oder nicht.
1
# version_t24 = 1    => Fuse-Reseter Firmware fuer einen ATtiny24
2
#                       keine Ein- und Ausgabe auf der UART moeglich, da
3
#                       Flashspeicher fuer eine Implementierung von printf
4
#                       nicht ausreicht
5
#             = 0    => Fuse-Reseter Firmware fuer ATtiny44/84
6
7
version_t24   = 0

Die Version mit UART Ein- / Ausgabe (version_t24 = 0) erzeugt 3682 
Codebytes (und passt somit nicht in einen ATtiny24), die Version ohne 
UART (version_t24 = 1) erzeugt 990 Byte und kann somit auch in einem 
ATtiny24 verwendet werden.

----------------------

Bedienung:

Nach anlegen der Betriebsspannung ( 5 V ) blinkt die DUO-LED gelb.

Den zu resetenden ATtiny je nach Pinanzahl in den entsprechenden 8- oder 
14 poligen Sockel einsetzen und die Taste drücken bis die DUO-LED 
dauerhaft gelb leuchtet.

Taste loslassen.

War das Reseten erfolgreich leuchtet für kurze Zeit die DUO-LED grün, 
anschliessend blinkt die LED gelb.

Bei Misserfolg leuchtet die LED rot, dieser Misserfolg muss mit einem 
Tastendruck quittiert werden.

Ein gelbes Blinken signalisiert die Bereitschaft der Schaltung

Bei Betrieb über den UART wird der eingesetzte Chip nach Betätigen des 
Tasters oder dem Betätigen einer Taste auf der Tastatur angezeigt.
Wurde eine Taste der Tastatur gedrückt, können die Werte für die Fuses 
manuell eingegeben werden.

-----------------------

Zum Wettbewerb in meinem privaten Umfeld (für den ich die Schaltung 
gemacht habe), gelten folgende Bedingungen:

Die Schaltung darf an Bauteilen (ohne Platine) nicht mehr als 1 Euro 
kosten.

Alle Bauteil sollen in China über EBAY bestellbar sein.

Für das Mitnehmen von Mengenrabatten aus China gilt:

- Mitnahme von Mengenrabatt bis zu einer Stückzahl von 10 Stück

- Mitnahme von Mengenrabatt bis zu einem Gesamtpreis von 2 Euro für die 
Gesamtmenge.


Hieraus ergab sich:
1
Stückzahl in    Bauteil       Stück   Mengenpreis      Einzelpreis
2
der Schaltung                            (Euro)          (Cent)
3
-------------------------------------------------------------------
4
5
     1          ATtiny44        10       5,73             57,3 
6
     6          Widerstand      300      1,00              2,0
7
                (Sortiment)
8
     1          Spule 680µH     50       1,57              3,2 
9
     2          Transistor      100      1,50              3,0
10
     1          Zenerdiode 12V  100      1,31              1,3
11
     1          220µF           10       1,09              5,5
12
     1          100nF           100      1,00              1,0
13
     1          Taster          50       1,00              2,0
14
     1          Sockel 8 pol.   20       1,00              5,0
15
     1          Sockel 14 pol.  20       1,16              5,8
16
     1          DUO-LED         50       1,00              2,0
17
     1          1N4148          200      1,00              0,5
18
     1          Steckerleiste   10       2,70             10,0  
19
                2 x 40 pol
20
                                                        --------
21
                                              Gesamt       98,6

--------------------------------------

Aber nachdem im Forum jemand ein Problem mit einem Kopfhörerverstärker 
hat, sollte ich vielleicht einen Verstärker einreichen (allerdings 
glaube ich dass von den 10 Teilnehmern ein paar Verstärker dabei sein 
werden).

Prinzipiell finde ich die "Frage" spannend, was man mit einem 
Bauteilewert von einem Euro alles anstellen kann und vielleicht sollte 
man hier im Forum einen solchen Wettbewerb auch einmal veranstalten. 
Schlicht "just for fun"

Gruß

JJ

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.