Mensch, klasse! Dann kannst Du die Tiny's nach der 'Reparatur' ja wieder (weiter) benutzen. Und die paar Tage zu warten, dürfte ja nicht ganz so schlimm sein... Tja, die Fuse-Bits. Es gibt sogar eine Kombination, an der Du knapp vorbeigeschrammt bist, die die Tiny's total gekillt hätte (im Datenblatt zu finden unter 'Errata'):Windi schrieb:Jawoll hat er. Jetzt muss ich nur noch bis zum nächsten Stammtisch warten bis ich sie wiederbekomme. Glücklicherweise haben wir schon in 3 Wochen unsere Weihnachtsfeier. Ich werd mir aber noch einen großen Schwung bestellen.Sir Vivor schrieb:Und, hat Monty die kleinen 'Leichen' in Empfang genommen?![]()
3. Device may lock for further programming
Special combinations of fuse bits will lock the device for further programming effectively
turning it into an OTP device. The following combinations of settings/fuse bits
will cause this effect:
- 128 kHz internal oscillator (CKSEL[1..0] = 11), shortest start-up time
(SUT[1..0] = 00), Debugwire enabled (DWEN = 0) or Reset disabled
RSTDISBL = 0.
...
Problem fix/ Workaround
Avoid the above fuse combinations. Selecting longer start-up time will eliminate the
problem.
Das freut mich! Ich denke, wir haben auch schon fast erreicht, was wir wollten. Durch den geringen Bauteil- und Verdrahtungsaufwand nebst (fast) fertiger Software kann das nun nahezu jeder nachbauen, der mag. ;-)Windi schrieb:Das Reaktivlicht hat übrigens am Stammtisch großen Anklang gefunden.
Ich weiß nicht, ob sich ein eigenes Forum dafür lohnt; ich fand diesen und auch die anderen Elektronik-Threads (ewiger Blinker, analoges reaktives Licht) unter 'Nightcaching' eigentlich ganz gut aufgehoben... Übrigens vielen Dank für das in mich gesetzte Vertrauen bezüglich der Moderation, aber ich habe noch ein eigenes Forum, dem ich meine volle (Administrator-)Aufmerksamkeit widmen möchte.moenk schrieb:So langsam wäre ich für ein Forum für Elektronik-Basteleien. Wer möchte das moderieren, Sir Vivor? Die vorhandenen Beiträge könnten dann da rüber und etwas aufgeteilt werden.
es sei denn, der Tiny stellt den Fuse dann von selbst auf externe Clock (CKSEL=00) um, was ich nicht glaube.The following combinations of settings/fuse bits will cause this effect:
- 128 kHz internal oscillator (CKSEL[1..0] = 11), shortest start-up time (SUT[1..0] = 00), Debugwire enabled (DWEN = 0) or Reset disabled RSTDISBL = 0.
Vielen Dank fürs entsperren. Bring sie mir doch einfach zur Weihnachtsfeier mit.Monty schrieb:Ich gebe die Tinys dem Alex mit, dieser könnte evtl. den Sascha treffen, dann den Günther und so weiter, oder soll ich sie bis zum Weihnachtstreffen aufheben?
'============================================================
'
' ************************************
' *** ***
' *** Reaktiv-Tiny v0.1 28/11/2005 ***
' *** ***
' ************************************
'
' µC: ATtiny13
' +Ub: 3,43 V
' I: 58 µA
' Reichweite Dorcy:
' Reichweite 4D-MagLite:
'
'============================================================
$regfile = "ATtiny13.DAT"
$crystal = 113000 'Reale Frequenz des internen 128kHz-Oszillators
Config Portb = &B00011000 'Pinb.3 und .4 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11100111 'Pullups zuschalten, außer für Pinb.3 und .4
Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen
Dim A As Byte
Dim B As Byte
Dim Led_ladezustand As Bit
Dim Led_lichtcode As Byte
Dim Lichtcode_valid As Bit
Dim Hell As Bit
Lichtcode_valid = 0 'Merker löschen (EEPROM-Inhalt wird beim Blinken nicht verwendet)
Gosub Blinken '10 x kurz blinken
Portb.3 = 1 ')
Wait 1 '} 1 x lang blinken (Teach-In-Anfang)
Portb.3 = 0 ')
For A = 1 To 63 '63 Bytes des EEPROM's haben wir zur Verfügung
Gosub Led_abfrage
If Led_ladezustand = 0 Then 'Wenn LED beleuchtet wurde, dann
Led_lichtcode = 255 'Lichtcode-Byte setzen
Lichtcode_valid = 1 'Merker setzen (EEPROM-Inhalt wird beim Blinken verwendet)
Else 'andernfalls
Led_lichtcode = 0 'Lichtcode-Byte löschen
End If
Writeeeprom Led_lichtcode , A 'Lichtcode-Byte in's EEPROM schreiben
Waitms 65 '65 ms warten
Next A
For A = 1 To 3 ')
Portb.3 = 1 ')
Waitms 50 '} 3 x kurz blinken (Teach-In-Ende)
Portb.3 = 0 ')
Waitms 50 ')
Next A ')
Do
Gosub Led_abfrage
If Led_ladezustand = 0 Then Hell = 1 'Bei Licht Merker setzen
If Hell = 1 And B < 255 Then B = B + 1 'Wenn Merker gesetzt wurde, Zähler für Lichtdauer erhöhen (bis max. 255)
If Led_ladezustand = 1 And Hell = 1 And B < 50 Then Gosub Blinken 'Wenn es wieder dunkel ist und der Lichtimpuls nur kurz war, dann blinken
If Led_ladezustand = 1 Then 'Bei Dunkelheit Merker und Zähler für Lichtdauer löschen
Hell = 0
B = 0
End If
Loop
Led_abfrage:
Portb.3 = 0 'Portb.3 auf Masse schalten
Portb.4 = 1 'Portb.4 auf +Ub schalten, um die LED zu 'laden'
Waitus 1 'Ladezeit 1 µs, kann ggf. noch verkleinert werden
Config Portb.4 = Input 'Portb.4 nun zwecks Abfrage der LED-Ladung auf 'Eingang' schalten
Portb.4 = 0 'Pullup abschalten, sonst geht's nicht!
Waitms 20 'Entladezeit 20 ms - je kleiner, je unempfindlicher
Led_ladezustand = Pinb.4 'Ladezustand einlesen: '1' -> dunkel, '0' -> hell
Config Portb.4 = Output 'Portb.4 wieder auf Ausgang schalten
Portb.4 = 0 'Portb.4 auf Masse schalten
Return
Blinken:
Portb.3 = 0
Portb.4 = 0
If Lichtcode_valid = 0 Then 'Standart-Blinksequenz (ohne EEPROM-Inhalt)
For A = 1 To 10
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 500
Next A
Else 'Blinksequenz mit EEPROM-Inhalt
For A = 1 To 63
Readeeprom Led_lichtcode , A
If Led_lichtcode = 255 Then
Portb.3 = 1
Else
Portb.3 = 0
End If
Waitms 90
Next A
End If
Return
End
Wie währe es mit einer Art Schreibschutz? es kann ja passieren das irgendein Tier / Cacher / Muggle etc... versehentlich oder absichtlich die Stromversorgung kappt oder den Chip resettet... - evtl könnte man dazu die Ports B1 und B2 nutzen - zur Programmierung werden die Beiden kurzgeschlossen (z.B.Steckbrücke, oder aber im Wald ein schweizer Messer) - das macht dann auch den Batteriewechsel im Wald einfacher...Sir Vivor schrieb:Moin,
söderle, wieder ein Stück 'Programm' fertig: Der Teach-In-Modus!
Das Programm (siehe Anhang) tut nun, nach Anlegen der Betriebsspannung oder einem Reset, folgendes:
- 10 x kurz blinken, 1 x lang blinken (Teach-In-Anfang)
- Teach-In-Sequenz aufzeichnen (-> EEPROM)
- 3 x kurz blinken (Teach-In-Ende)
Check_write_prot:
Dim eeprom_write_prot as bit
Config Portb.1 = Input 'Schalte Portb.1 als Eingang
Portb.2 = 1 'setze Portb.2 auf VCC
eeprom_write_prot = Pinb.1 'eeprom_write_prot enthält bei aufgehobenen schreibschutz 1, ansonsten 0
Config Portb.1 = Output 'Portb.1 zurücksetzen
Portb.2 = 0 'Portb.2 auf Masse setzen
Return
Windi schrieb:Ich werde meine Schaltung in Wachs eingießen. Falls ich den Teach-In-Modus überhaupt verwende könnte ich mir höchstens vorstellen ihn per Magneten über einen Reed-Kontakt zu aktivieren.
Gibts ausser Windi noch Freiwillige für so ein Forum? Da wären dann auch Deine Bauanleitungen schön geordnet zu finden. Für jede Bauanleitung oder bei größeren auch für jeden Meilenstein ein Fred, das hätte doch mal was.radioscout schrieb:Die Idee mit dem Elektronik-Subforum gefällt mir. Ich habe in diesem und dem Blauen Forum vor langer Zeit einige Vorschläge für Cache-Elektronik beschrieben, aber die findet wahrscheinlich keiner mehr.
The HW-Stack, SW-Stack and frame space may not exceed the chip memory
Ich werde in den nächsten Tagen mal eine Art Bausatz zwecks Verkauf fertigstellen und das dann hier bekannt geben, ok?Schnueffler schrieb:@Windi und die anderen Bastler
Kann mir jemand von Euch 2 fertige Schaltungen incl LED verkaufen? Ich habe leider keine Ahnung von solchen Elektronikbasteleien und von dieser Programmierung (mir fehlt dazu auch die Hardware), würde aber ein Reaktivlicht gerne bei meinem neuen Cache, den ich gerade plane, einsetzten!
Hast Du die Druckerschnittstelle auch richtig konfiguriert? Und: Ja, die BatterieLotti schrieb:Hilfe, ... also irgendwas läuft bei mir falsch (Win-XP auf einem Toshiba Notebook) ... PS: muss die Batterie beim programmieren angeschlossen sein?