Creative Commons License Dokumentation Geocaching-Magnetbake / Reaktivlicht (W006D004) von Jochen Wienstroth steht unter einer Creative Commons: Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz.

Detailbeschreibung W006Z003 Zurück zur Magnetbake W006Z003    Homepage-Startseite

Hinweis: Zur Verbesserung der Lesbarkeit empfiehlt es sich, diesen Frame einzeln ohne die Navigationsleiste auf der rechten Seite anzuzeigen. Je nach Browser findet sich das passende Menü unter Rechtsklick » Aktueller Frame » Frame in neuem Fenster/Tab öffnen.


Schaltplan

Bevor ich auf die einzelnen Bauteile eingehe, hier eine verkleinerte Übersicht des Gesamtschaltplans in der Version W006Z003V003. Der Schaltplan ist im downloadbaren Dokumentationsarchiv in erheblich größerer und besserer Auflösung als PDF enthalten, diese Version hier dient nur der Übersicht:

Übersichts-Schaltplan Magnetbake Atmel W006Z003V003

Übersichts-Schaltplan Magnetbake Atmel W006Z003V003

IC1 - AtTiny24A-PU

Zurück zur Magnetbake W006Z003    Listenanfang   
Kernstück der Schaltung. Welche Version des Tiny24 eingesetzt wird, ist prinzipiell relativ egal. Es tut sowohl die Version AtTiny24A-PU, als auch AtTiny24V-10PU. Der AtTiny24A-PU ist momentan bei Reichelt der Billigste, daher habe ich diesen verwendet.
Ein wichtiger Punkt ist allerdings zu beachten: Es gibt vom Tiny24 wohl verschiedene Versionen des verwendeten Dies (Siliziums) im Inneren. Meine Software nutzt ein Feature, das erst relativ spät implementiert wurde: Das softwareseitige Abschalten des Brown-Out-Detektors, während der Prozessor schläft und wartet, bis er per Interrupt-on-Pin-Change aufgeweckt wird. Nur durch Nutzung dieses Features ist der relativ niedrige Ruhestromverbrauch von ca. 110nA bei gleichzeitiger Benutzung des EEPROMs möglich. Und dieses Feature war wohl nicht "von Anfang an" von Atmel implementiert und wurde erst in der Die-Revision E nachgereicht.
Es ist also darauf zu achten, dass nur Prozessoren von Die-Revision E (oder aktueller - wenn da noch was kommen sollte) eingesetzt werden. Meine ältesten AtTiny24V-Exemplare sind von 2009, die sind schon alle Revision E. Die Gefahr, "aus Versehen" einen älteren zu erwischen ist also relativ gering, es sei denn, man hat zu Hause noch ein paar ältere Schätzchen. Laut Atmel ist die Die-Revision auf der Unterseite des Chips gekennzeichnet, allerdings habe ich bisher nirgendwo ein Dokument gefunden, das die diversen Markierungen auf der Unterseite erklärt. Ich vermute mal, das relativ groß gedruckte kleine "e" ist die Revisions-Bezeichnung.... Wer da Genaueres weiß: Ich bin für jegliche Informationen dankbar. Der uralte AtTiny24 (ohne Buchstabe dahinter) ist nicht einsetzbar, da die Fuses den Brown-Out-Detektor auf 1,8V legen und der Original-Tiny24 das so weit ich weiß nicht konnte. Es ist nicht möglich, einfach eine höhere Brown-Out-Schwelle zu definieren, dann verweigert die Software wegen falsch sitzender Fuses den Dienst ;)

Sowohl aus Gründen der Wartungsfreundlichkeit, als auch für bessere Lötbarkeit des Reed-Kontakts S1 empfiehlt es sich, den Prozessor auf einen 14poligen Präzisionssockel zu setzen. Dieser ist als X3 in der Stückliste enthalten und auch im Bestückungsdruck auf der Oberseite angedeutet. Wenn man den Prozessor sockelt dann muss man beim Einlöten des Reed-Kontakts S1 nicht darauf achten die überschüssige Pinlänge des Anschlusses der unter dem Prozessor landet vor dem Löten zu kürzen, und man muss auch nicht darauf achten erst den Reed-Kontakt und dann den Prozessor einzulöten weil man sonst nicht mehr an das Lötauge des Reedkontakts drankommt.

C1 - 100nF X7R

Zurück zur Magnetbake W006Z003    Listenanfang   
Ja, diverse Leute meinen, den könnte man auch weglassen, weil er eh nichts tut. Tut euch und dem Prozessor was Gutes und spendiert ihm einen Abblock-Kondensator möglichst nah an den Betriebsspannungs-Pins. Auch wenn in den meisten Fällen die Schaltung auch ohne tut, so tut sie mit doch deutlich stabiler.
Und wenn man diesen Kondensator schon nutzt, dann kann man auch gleich ein "richtiges" Keramikmaterial (wie X7R oder notfalls auch X5R) nehmen, das macht preislich auch keinen Unterschied. Diese beiden Materialien zeichnen sich durch relativ niedrigen Innenwiderstand aus, das bügelt die doch etwas größeren Sprünge im Stromverbrauch der Schaltung zumindest ein wenig glatt und beruhigt den ansonsten recht ängstlichen Brown-Out-Detektor.
Angenehmer Nebeneffekt: Beim Betrieb ohne Lebenszeichen-Blitz ist der Stromverbrauch der Schaltung so klein, dass sie problemlos mehrere Minuten aus dem 100nF-Kerko leben kann und so höchstwahrscheinlich im Falle eines Batteriewechsels gar nicht mitbekommt, dass zwischendurch mal die Spannung weg war. Spart die Aufwachmeldung beim Programmstart.

LD2 - Kingbright SC39-11SRWA

Zurück zur Magnetbake W006Z003    Listenanfang   
Die ursprünglich verwendete Anzeige war mir zu groß, daher bin ich da eine Bauform kleiner geworden. Stolperfalle: Diese Anzeige (in 10mm Ziffernhöhe) hat ein völlig anderes Pinning als die im Reaktivlicht-Wiki vorgeschlagene Type. Also nicht wundern, wenn das beim Fädeln völlig anders aussieht. Eine vernünftige Pin1-Markierung an der Anzeige habe ich bis heute nicht gefunden, also am sinnvollsten die Orientierung über die Position des Dezimalpunkts festlegen. Der sitzt diagonal gegenüber Pin1.

R2 - 100R THT0207

Zurück zur Magnetbake W006Z003    Listenanfang   
Dieser Widerstand bestimmt die Helligkeit der Anzeige und damit maßgeblich den Stromverbrauch des Gesamtgerätes. Wer Strom sparen will, kann hier noch etwas hochohmiger werden (auf Kosten der Helligkeit), wer andere Farben für die Anzeige einsetzen möchte (die üblicherweise im Wirkungsgrad nicht ganz so gut sind wie die SRWA-roten), kann hier noch etwas niederohmiger werden. Verlustleistung ist aufgrund der relativ niedrigen Betriebsspannung des Systems und der im Vergleich dazu recht hohen Flusspannung der Anzeigen kein Thema, die 250mW, die ein THT0207er abkann langen da für gewöhnlich allemal. Seit Software-Version V002 wird die Anzeige im Multiplex-Betrieb angesteuert, so dass unabhängig davon, wie viele Segmente ein Zeichen nutzt, alle Zeichen gleich hell erscheinen. Dabei sind jetzt alle Zeichen so hell, wie früher die "8" war. Wem das zu dunkel ist, der kann im Widerstand hier problemlos runtergehen auf 82R - je nach Betriebsspannung. Ich empfehle 20mA Segmentstrom nicht zu überschreiten.

R1 - 10k THT0207

Zurück zur Magnetbake W006Z003    Listenanfang   
Die Originalschaltung wünscht sich (leider) den Schaltkontakt (ehemals LDR) plusschaltend, sonst hätte ich auf diesen Widerstand verzichten können da auch der Tiny interne Pullups hat, die man für Schaltkontakte, die Interrupts auslösen, sehr gut hätte verwenden können. Um aber nicht zu viele Inkonsistenzen zwischen den einzelnen Schaltungsvarianten zu haben, hab ich mich dann mal an die Vorlage gehalten und nur den Wert verändert. 10k halten den Porteingang sauber Low, und durch das Schließen des Schaltkontakts wird ein Flankensprung nach oben ausgelöst, der wiederum die Textausgabe startet.
Der Wert dieses Widerstandes ist an sich relativ unkritisch, er sollte nicht zu hochohmig sein, damit der Eingang des µC in Ruhe wirklich ein sauberes Low hat, und er sollte aber auch nicht zu niederohmig sein, damit im Falle eines versehentlich geschlossen gelassenen Schalters S1 (zusammenbappen oder verklemmen bei anderweitiger mechanischer Auslösung) nicht der Querstrom durch Schalter und R1 die Batterie leerlutscht.
Wer dauerhaften Stromfluss bei geschlossenem Schalter verhindern will, kann in Reihe zum Schalter noch einen "Flankendetektor" bestehend aus einer Parallelschaltung von (Hausnummer) 100nF und 1M schalten. Dann fließt wirklich nur in dem Moment, in dem der Kontakt geschlossen wird nennenswerter Strom - und ca. 100ms nach Öffnen des Schalters ist die Schaltung wieder auslösebereit. Das grenzt aber fast schon an Luxus.
Hinweis1: Die Software ist bewusst so programmiert, dass sowohl bei einer steigenden Flanke, als auch bei einer fallenden Flanke eine Nachricht ausgelöst wird (es sei denn, die nächste Flanke kommt, während gerade schon eine Nachricht angezeigt wird). Damit ist sie völlig flexibel nutzbar auch mit Auslösekontakten, die in Ruhe geschlossen sind. Hinweis2: Wer mit der Platine ein Reaktivlicht bauen möchte der kann auf der improvisiert vorgesehenen Bestückungsfläche auf der Oberseite einen LDR bestücken und einen dazu im Wert angepassten Widerstand R1 benutzen. Es ist in Deutschland inzwischen so gut wie unmöglich noch LDRs zu bekommen (aufgrund der RoHS-Richtlinien), aber es ist völlig problemlös möglich direkt über ebay China dort noch LDRs für vernachlässigbares Geld incl. Porto zu bekommen. Ich habe 50 LDRs vom Typ GL5539 für 1,50€ incl. Porto erstanden und kann diesen Typ weiterempfehlen, ein dazu passender Widerstandswert für R1 sind dann 470k. Wer in der Grabbelkiste noch Restbestände von LDR07 oder A906014 findet kann mit R1 noch deutlich hochohmiger werden und damit den Ruhestromverbrauch tagsüber des Reaktivlichts nochmal deutlich senken.

S1 - MK6-7-B

Zurück zur Magnetbake W006Z003    Listenanfang   
Dies ist der mechanische Schaltkontakt, der die Bake auslöst. Prinzipiell ist es hier egal, ob man einen Reed-Kontakt oder einen Mikroschalter nimmt - wichtig ist nur, dass es sich wirklich um einen schaltenden Kontakt handelt. Der Eingang PA2 des µC ist als Digitaleingang konfiguriert (nur so funktioniert der Trick mit dem Interrupt-on-Pin-Change), nur wenn in der Software (ab Version W006S003V004) ein Reaktivlicht konfiguriert wird wird der Pin als analoger Eingang konfiguriert und benutzt.
Bei der Auswahl des Reed-Kontakts ist zu beachten, dass sich der Hersteller Meder da unterschiedliche Selektierungen nach Auslöseempfindlichkeit gönnt und die "ganz billigen" da schonmal relativ undankbar sind. Ein eventuelles Prellen des Schalters ist völlig unkrititsch und wird in Software problemlos abgefangen. Auch die Strombelastbarkeit des Schalters ist völlig unkritisch, allerdings gibt es einige (mechanisch sehr große) Mikroschalter, die einen gewissen MINDESTstrom brauchen, um die Kontakte "sauber zu halten". Bei Reedkontakten passiert einem das aber definitiv nicht...

Kratzjumper X4 (Leiterplattenmerkmal)

Zurück zur Magnetbake W006Z003    Listenanfang   
Bei genauer Betrachtung fällt einem auf, dass auf der Leiterplatte auf der Unterseite ein "SMD-Bauteil" namens X4 vorhanden ist - welches aber in der Stückliste nicht auftaucht. Hier handelt es sich um einen "Kratzjumper" in 0603, d.h. SMD-Lötpads für ein Bauteil, die aber schon direkt bei der Fertigung mittels einer dazwischenliegenden Kupferleiterbahn verbunden sind.

Der Grund für dieses "Bauteil" liegt darin, dass meine Schaltung den Dezimalpunkt mit einer Leitung des ISP-Steckverbinders ansteuert, um genau zu sein mit der Clk-Leitung. Das merkt man auch daran dass beim Programmieren des Prozessors der Dezimalpunkt leicht mitflimmselt. Üblicherweise verursacht das keinerlei Probleme, die meisten Programmiergeräte die mir untergekommen sind können problemlos den Strom treiben, den der Dezimalpunkt in diesem Falle zusätzlich zieht, insbesondere wenn die Schaltung beim Programmieren mit 3V versorgt wird. Wenn man allerdings die Schaltung mit 5V versorgt so kommt es schonmal vor dass der Programmiervorgang fehlschlägt weil das Programmiergerät auf der Clk-Leitung nicht genügend Strom bereitstellen kann um am Prozessor für einen ausreichenden High-Pegel zu sorgen, insbesondere wenn R2 sehr niederohmig gewählt ist.

In diesem Falle kann man dann entweder den Kratzjumper X4 rasch mit einem Cutter zwischen den beiden Lötpads durchtrennen, die Schaltung programmieren, und nach erfolgreicher Programmierung X4 mit einem dicken Lötzinnklecks auf den beiden Pads wieder schließen - oder gleich einen zusätzlichen Widerstand in 0603 einlöten der den Strom nur des Dezimalpunkts zusätzlich verringert.

Ganz ehrlich: Meine Empfehlung ist stattdessen einfach mit 3V zu programmieren und dadurch dem ganzen Ärger aus dem Weg zu gehen. Aber man weiß ja nie. In 99% aller Fälle kann man diesen X4 glaube ich getrost ignorieren.

Jumper K1/4 -> K1/6 (kein Lebenszeichenblitz)

Zurück zur Magnetbake W006Z003    Listenanfang   
Ein ganz netter Gag - sowohl für die Funktionalität, als auch zum klassischen Schwanzlängenvergleich "meine Koordinatenanzeige braucht weniger Ruhestrom als deine". Der "moderne" 6polige ISP-Steckverbinder ist zwar bei weitem nicht so praktisch multifunktional wie der "alte" 10polige - dafür aber ein wenig kleiner. Nun ja, man nimmt, was man bekommt. Eine klassische Jumperkappe im Raster 2,54mm passt nach dem Programmieren wunderbar zwischen Pin4 und Pin6 dieses Steckverbinders. Für Menschen, die ihre Technik gerne besonders unauffällig oder besonders stromsparend möchten oder einfach nur zu faul sind, die Leitung für den Dezimalpunkt noch zu ziehen (wenn sie die Schaltung von Hand fädeln und nicht die fertige Platine nutzen) gibt es die Möglichkeit, den Lebenszeichen-Blitz auf dem Dezimalpunkt zu deaktivieren. Genau das tut man, indem man auf diese Pins einen Jumper steckt.
Der Zustand des Pins wird nur beim Einschalten der Versorgungsspannung oder bei einem Reset eingelesen, nicht während des Betriebs, daher ist nach Ziehen oder Stecken des Jumpers ein Neustart erforderlich.
Falle: Ohne Lebenszeichen-Blitz braucht die Schaltung so wenig Strom, dass sie nach Entfernen der Versorgung "in Ruhe" locker noch längere Zeit (bis zu Minuten) aus dem 100nF-Glättungs-Kerko C1 leben kann. Um ganz sicher zu sein dass der Prozessor auch wirklich neu startet entweder einen echten Reset auslösen oder die Anzeige auslösen oder die Spannung über C1 einfach kurzschließen.
Ein gesetzter Jumper kann während des Betriebs ruhig auf Pin4 und Pin6 steckenbleiben und benötigt keinen weiteren Strom. Bei meinem Exemplar habe ich mit gestecktem Jumper einen Ruhestrom von etwa 110nA bei 22°C Umgebungstemperatur und 3,6V Betriebsspannung gemessen. Das ist schon... verdammt wenig.

Jumper K1/1 -> K1/6 (Ausgabe Auslösungszähler)

Zurück zur Magnetbake W006Z003    Listenanfang   
Die Schaltung zählt intern im EEPROM die Anzahl ihrer Auslösungen mit. Statistikfreunde können sich diesen Zählerstand auch anzeigen lassen: Wenn man z.B. mit einer Krokostrippe eine Verbindung von Pin1 nach Pin6 des ISP-Steckverbinders legt, dann wird nach der nächsten Auslösung der Bake der Zählerstand des Auslösezählers in hexadezimaler Form ausgegeben. Da das Ganze nur zu Debug-Zwecken dient, hab ich mir eine aufwendige Umrechnung nach dezimal gespart, Division durch 10 ist in Assembler... ihgitt. Einen Taschenrecher zur Umrechnung von Hex nach Dez hat so ziemlich jeder Mensch auf seinem Rechner oder seinem Mobiltelefon.
Der Zähler ist ein 16Bit-Zähler, d.h. nach 65535 Auslösungen läuft er über und fängt wieder bei 0 an, aber das dürfte den wenigsten Menschen passieren.... Zurückgesetzt wird der Zähler entweder durch ein Chip Erase beim Neuprogrammieren oder durch ein explizites EEPROM-Erase per Programmiertool.
Vor dem Zählerstand wird noch ein Unterstrich (SEG_d) ausgegeben, um den 4ziffrigen Zählerstand von der eigentlichen Ausgabenachricht zu trennen.
Tip: Wer seine Zähler häufiger auslesen möchte dem empfehle ich auf einer 6poligen Quetsch-Buchsenleiste wie sie auf den Steckverbinder passt einfach mit einem Rest einer einzelnen Flachbandkabel-Ader eine Brücke von Pin1 zu Pin6 zu quetschen, so kann man sich dieses "Werkzeug" immer griffbereit in eine Ecke lecke und spart sich das Gewürge mit der Krokostrippe (die doch immer nur Kurzschlüsse auf den falschen Pins macht) oder die Löterei einer Leitung nur für eine einzige Auslösung.


Aufbauanleitung

Wichtig: Die Reihenfolge

Zurück zur Magnetbake W006Z003    Listenanfang   
Da die Platine doch recht kompakt gehalten und eng bestückt ist, funktioniert die Bestückung nur, wenn eine bestimmte Reihenfolge eingehalten wird - sonst kommt man eventuell an den einen oder anderen Lötpunkt später nicht mehr heran.

Reed-Kontakt S1

Zurück zur Magnetbake W006Z003    Listenanfang   
Zuallererst sollte (nur bei Magnetbaken) der Reed-Kontakt bestückt werden. Dieser hat einen seiner beiden Anschlüsse unter dem Prozessor.

Wenn man vorhat den Prozessor NICHT zu sockeln, dann sollte man vor dem Einlöten des Reed-Kontakts den Anschluss, der hinterher unter dem Prozessor liegt mit einem Seitenschneider so weit kürzen dass er bündig mit der Platinenoberseite abschließt. Zinn, das der Kapillareffekt in das Bohrloch für den Anschlusspin hineinzieht hält diesen nach dem Löten noch mehr als ausreichend. So sieht ein frisch eingelöteter Reedkontakt mit unter dem Prozessor gekürzten Pin aus:

Einlöten des Reedkontakts als erstes Bauteil auf einer Magnetbaken-Platine
Einlöten des Reedkontakts als erstes Bauteil auf einer Magnetbaken-Platine

Wenn man den Arbeitsschritt des Pin-Kürzens vergisst ist das kein Weltuntergang, es führt allerdings dazu dass später der Prozessor entweder sehr hoch oder sehr schief in seiner Position sitzt wenn man ihn nicht sockelt.

Widerstände R1, R2

Zurück zur Magnetbake W006Z003    Listenanfang   
Die weitere Reihenfolge ist an sich egal, aus Gründen des vereinfachten Handlings empfehle ich jedoch als nächstes die Widerstände R1 und R2 einzulöten. Deren Footprint ist im Raster 10,16mm angelegt, da empfiehlt es sich entweder nach Augenmaß ("Augenmaß und Handgewicht verlassen Ingenieure nicht") die Beine der Widerstände relativ nah direkt am Gehäuse abzuknicken bevor man sie einsetzt, oder alternativ von Reichelt für sehr wenig Geld bei der Beschaffung die wunderbare Bestellnummer "BIEGELEHRE" gleich mitzukaufen, das ist ein vorgefertigtes Kunststoffteil das für alle gängigen 2beinigen bedrahteten Bauteilgrößen und Bauteilraster passende Wannen bereithält in die man die Bauteile legen und ihre Beine sauber im Rastermaß abwinkeln kann.

Pfostenleiste (Programmierstecker) K1

Zurück zur Magnetbake W006Z003    Listenanfang   
Das Einlöten der Pfostenleiste ist relativ unkritisch, die Löcher für der Pfostenleiste sind bewusst recht eng, so dass diese eventuell mit etwas Kraft eingesetzt werden muss. Das hat wiederum den Vorteil, dass man sich nicht beim Löten die Finger verbrennt während man versucht die Pfostenleiste am Herausfallen aus der Platine zu hindern.
Wichtig: Hier wirklich nur die ganz einfachen Pfostenleisten verwenden, für eine Wannenstiftleiste mit Verpolungsschutz sind die Bauteile zu eng positioniert, die passt hier nicht. Damit man sich später beim Programmieren nicht merken muss wie herum der Programmierstecker auf die Platine gesteckt werden muss, ist auf der Platinenoberseite eine dreieckige Pin1-Markierung zwischen den Lötpunkten für die Betriebsspannung und der Stiftleiste angebracht, die auch bei bestückter Stiftleiste zu sehen ist. Zusätzliche Sicherheit geben die Nummerierungen der Kontakte im Lötstoplack.

Kondensator C1

Zurück zur Magnetbake W006Z003    Listenanfang   
Nachdem die Pfostenleiste für die Programmierung eingelötet ist empfiehlt es sich als nächstes den Abblock-Kondensator C1 einzulöten. Dieser ist im Raster 5,08mm angelegt und sieht einen ganz einfachen Keramikkondensator in X7R vor. Sollten in der Grabbelkiste noch Folienkondensatoren in diesem Rastermaß vorhanden sein können diese genauso benutzt werden, es ist jedoch darauf zu achten dass der Kondensator nicht zu dick (breit) sein darf, sonst kollidiert er später wenn er bestückt ist mit der Kodierungsnase des Programmierkabels, das auf die Pfostenleiste K1 gesteckt wird.
Die bereits bestückte Pfostenleiste K1 verhindert, dass der üblicherweise relativ hochbeinig aufgesickte Keramikkondensator umgeknickt wird wenn man leicht dagegenkommt und schützt ihn so.

7Segment-Anzeige

Zurück zur Magnetbake W006Z003    Listenanfang   
Die 7Segment-Anzeige hat am Gehäuse keine ordentliche Pin1-Markierung, dafür sind die Leuchtbalken und der Dezimalpunkt im Bestückungsdruck angedeutet und die deckungsgleiche Positionierung damit kein Problem. Die Anschlusspins der Anzeige sind relativ lang und sollten nach dem Einlöten gekürzt werden.
Hinweis: In den letzten Jahren zeigte sich irgendwie dass so ziemliche jeder Mensch andere Vorlieben hat wie rum er einen Petling montiert: Die einen bevorzugen den Deckel "oben", die anderen "unten". Wenn man die Anzeige entsprechend des Bestückungsdrucks bestückt und anschließend die Platine zusammen mit einer Batterie in einen Petling packt, dann muss man diesen mit dem Schraubdeckel nach oben befestigen wenn die Zeichen "richtigrum" (Dezimalpunkt rechts unten" angezeigt werden sollen.
Wer (wie ich) seine Petlinge am liebsten auf ihren Schraubdeckel draufstellt der hat jetzt zwei Möglichkeiten: Entweder in der Software (ab V004) die Option "Ausgabe auf dem Kopf" aktivieren, dann erscheinen die Zeichen wieder richtigrum - allerdings ist der Dezimalpunkt dann links oben und nicht rechts unten. Oder man denkt vorher an dieses Problem, bestückt die Anzeige LD2 ABSICHTLICH um 180° gedreht (also ENTGEGEN dem Bestückungsdruck), und aktiviert dann in der Software (ab V004) sowohl die Option "auf dem Kopf ausgeben" als auch die Option "LD2 um 180° gedreht", dann vertauscht die Software automatisch die Ansteuerung der Segmente so dass wieder alles passt. Dieser Trick funktioniert nur deshalb weil die Anzeige ihre Pinbelegung relativ symmetrisch hat, also die beiden gemeinsamen Kathoden genau in der Mitte der beiden Pinreihen. Ob das ein "Schwein gehabt" oder ein "mitgedacht" ist will ich lieber nicht so genau wissen.

Prozessor

Zurück zur Magnetbake W006Z003    Listenanfang   
Als letztes Bauteil wird der Prozessor eingelötet. Da die Platine bewusst den ISP-Steckverbinder implementiert, kann man diesen im Prinzip guten Gewissens direkt und ohne Sockel einlöten, um etwas Bauhöhe zu sparen. Da die "Mindest-Bauhöhe" aber eh von der 7Segment-Anzeige vorgegeben wird kann man sich auch den "Luxus" leisten und den Prozessor auf einen Präzisionssockel setzen, dann muss man nicht dran denken den einen Anschluss des Reedkontakts, der unter dem Prozessor landet zu kürzen.
Prinzipiell müssten auch "normale" Sockel gehen, allerdings ist die Bauteileplatzierung ganz bewusst so ausgemessen und ausgepuzzelt dass der Lötanschluss des Reedkontakts genau zwischen zwei "Stegen" eines Präzisionssockels landet, bei der Verwendung anderer Sockel kann das nicht garantiert werden.

Wer mag, kann sich jetzt noch zwei Lötnägel für die Stromversorgung einlöten - je nachdem welche Batterie mit oder ohne Halter verwendet sind sind diese relativ praktisch und ausreichend stabil um auch mal an dickeren Batterieanschlüssen die gesamte Platine zu halten.


Software

Ausgabetext

Zurück zur Magnetbake W006Z003    Listenanfang   
Der bei einer Auslösung auszugebende Text kann vom Anwender relativ komfortabel im "Assembler"-Quellcode MBake.asm selbst in Klartext editiert werden. Dazu muss gegen Ende der Datei der folgende Abschnitt gefunden werden:
;*****************************************************************************
;*****************************************************************************
;*                           Auszugebende Nachricht                          *
;*****************************************************************************
;*****************************************************************************
BOTBEG:                           ; Anfang auszugebende Nachricht
;*****************************************************************************
#ifndef	GENATDW	                  ; Nachricht nur im Normalbetrieb einbauen
;*****************************************************************************
.equ FLCONF = 0b00010010                        ; Konfigurationsbyte Flash
;               |||||||+--------- Bit0: reserviert, bitte 0 lassen
;               ||||||+---------- Bit1: MUX18, Mux 1:8 für konst. Helligkeit
;               |||||+----------- Bit2: LDRTST, LDR-Test: Helligkeitsmessung
;               ||||+------------ Bit3: REAKTIV, 0=Magnetbake, 1=Reaktivlicht
;               |||+------------- Bit4: BLEND, Ausgabe per Segment-Einblendung
;               ||+-------------- Bit5: UPSDWN, Ausgabe "auf dem Kopf"
;               |+--------------- Bit6: JWUPSD, LD2 180° gedreht eingelötet
;               +---------------- Bit7: JWREAK, Reaktivlicht RC á la JWie

;.equ ADAUER = 80                 ; Anzeigedauer jedes Zeichens x10ms, (NORMAL)
.equ ADAUER = 5                   ; Einblendedauer pro Segment x10ms,  (BLEND)
                                  ; Beispiel: 80 = 800ms Anzeigedauer

;.equ PDAUER = 5                  ; Pausenzeit nach jedem Zeichen x10ms, (NORMAL)
.equ PDAUER = 60                  ; Haltezeit nach jedem Zeichen x10ms,  (BLEND)
                                  ; Beispiel: 5 = 50ms Pausenzeit

.equ DSCHWELL = 48                ; Dunkel-Schwelle: Bei kleinerer Helligkeit
                                  ; schaltet Reaktivlicht in Nachtmodus
.equ HSCHWELL = 128               ; Hell-Schwelle: Bei größerer Helligkeit
                                  ; schaltet Reaktivlicht in Tagmodus
.equ SPRUNG = 5                   ; Sprunghöhe: Höherer Sprung löst Reaktiv-
                                  ; licht im Dunkelmodus aus.

.db FLCONF, ADAUER                ; Flash-Config, Anzeigedauer ablegen
.db PDAUER, DSCHWELL              ; Pausen-Dauer, Dunkel-Schwelle ablegen
.db HSCHWELL, SPRUNG              ; Hell-Schwelle, Sprunghöhe ablegen

.dw ((BOTEND-BOTBEG-4)<<1)        ; Länge des Strings (automatisch errechnet)
							
;*****************************************************************************
;                          Eigentlicher Ausgabe-String
;*****************************************************************************

.db "HALLO FINDE N48*51.493 E002*17.670 und H=324"	
.db "PIEPS "

;*****************************************************************************
;                       Ende eigentlicher Ausgabe-String
;*****************************************************************************

Fangen wir mal oben bei der ASCII-Malerei an. Mit dem "Konfigurationsbyte Flash" kann man verschiedene Konfigurationsoptionen, die die Software mit sich bringt ein- oder umschalten. Der Atmel-Assembler hat leider keine elegante Möglichkeit "Einzelbits" als Variable anzulegen, daher das Hilfskonstrukt mit einer als 8Bit-Binärwert angelegten Byte-Variable und der ASCII-Malerei darunter die anzeigt, welches Bit des Wertes welche Funktionalität mit sich bringt. Da der Platz für Kommentare hinter der ASCII-Malerei nicht besonder groß ist hier eine etwas ausführlichere Erklärung der einzelnen Optionen:

Bit1: MUX18 Mit diesem Konfiguratonsbit schaltet man das 1:8 Multiplexen der Anzeige ein, so dass immer nur maximal ein einzelnes Segment leuchtet und so den vollen Strom durch den Vorwiderstand R2 abbekommt. Das angesteuerte Segment wird mit 1kHz Takt gewechselt, so dass sich insgesamt eine Refresh-Frequenz für das Zeichen von 125 Hz ergibt was ausreichend flimmerfreie Darstellung ermöglicht. Auf diese Weise erscheinen alle Zeichen auf der Anzeige gleichmäßig hell unabhängig davon wie viele Segmente das Zeichen benutzt - eine "1" ist genauso hell wie eine "8". Nachteil: Durch das doch schon recht hohe Verhältnis von 1:8 beim Multiplexen kommen die Anzeigen doch schon in einen Bereich, wo das Verhältnis Segmentstrom zu Segmenthelligkeit langsam etwas nichtlinear wird. Auch der Innenwiderstand der Portpins als Ausgang macht sich hier langsam bemerkbar wenn der gesamte Strom immer auf einem einzigen Ausgangspin liegt und sich nicht verteilt. So kommt es dass eine gemultiplext dargestellte "8" immer etwas dunkler ist als eine statisch dargestellte "8". Meiner persönlichen Meinung nach ist das aber immer noch mehr als hell genug und wiegt den hässlichen Schönheitsfehler dass bei statischer Darstellung alle Zeichen unterschiedlich hell sind je nachdem wieviele Segmente benutzt sind mehr als auf.
Wobei wir dann auch schon bei der anderen Ausgabeoption sind die genutzt wird wenn dieses Konfigurationsbit 0 ist: Hier werden alle benutzten Segmente gleichzeitig angesteuert, der Strom durch den Widerstand R2 verteilt sich dann gleichmäßig auf alle Segmente. Dies bringt maximale Helligkeitseffizienz und ist zusätzlich auch als Option gedacht für Menschen die jedem Segment der Anzeige einen eigenen Vorwiderstand spendieren.

Bit2: LDRTST Mit diesem Konfigurationsbit schaltet man bei Reaktivlichtern einen Debug-Modus ein, der nichts anderes macht als ständig hintereinander durch ein Leerzeichen getrennt den gemessenen Helligkeitswert des LDR auszugeben. So kann man 1.) testen, ob die Helligkeitsmessung überhaupt funktioniert, und 2.) entscheiden, ob eventuell eine Feinanpassung des Werts von R1 oder der in der Software hinterlegten Schaltschwellen für Hell- und Dunkelmodus sinnvoll sind. Die Ausgabe der gemessenen Helligkeit erfolgt als Hex-Zahl, eine Umrechnung nach dezimal muss wieder selbst mit dem Taschenrechner vorgenommen werden.

Bit3: REAKTIV Wie der Name schon erahnen lässt schaltet man mit diesem Konfigurationsbit um ob es sich um ein Reaktivlicht (Bit=1) oder eine Magnetbake (Bit=0) handelt. Man sollte tunlichst nicht versuchen eine Schaltung mit einem LDR in der Software als Magnetbake zu konfigurieren, der in diesem Fall als Digitaleingang konfigurierte Pin wird bei anliegenden analogen Spannungen im digitalen Niemansland vermutlich fiese Querströme ziehen. Eine Schaltung mit Reedkontakt als Reaktivlicht konfiguriert könnte durchaus problemlos funktionieren - wird aber allein aus Stromverbrauchsgründen nicht empfohlen.

Bit4: BLEND Animierte Zeichen für Spielkinder. Mit diesem Bit gibt man an, ob die Ausgabe der einzelnen Zeichen "springend" von Zeichen zu Zeichen mit Pause dazwischen ("NORMAL", Bit=0) oder "einblendend" Segment für Segment nacheinander ("BLEND", Bit=1) erfolgen soll. Wenn das Bit=0 ist und damit eine "NORMAL"-Ausgabe gewünscht ist wird jedes auszugebende Zeichen für eine Zeit ADAUER angezeigt, und anschließend für eine Zeit PDAUER die Anzeige ausgeschaltet (Um eine Unterscheidung von "Doppelbuchstaben" zu ermöglichen). Ganz klassisch. Wenn die Ausgabe einblendend gewünscht ist dann wird bei jedem Zeichenwechsel die Anzeige gelöscht, und dann nacheinander für die Anzeigedauer ADAUER jeweils ein Segment nach dem anderen hinzugefügt. Gestartet wird mit dem Dezimalpunkt, anschliessend Segment g, Segment f, ..., bis Segment a. Für den Betrachter sieht das aus einiger Entfernung so aus als würde sich das Zeichen von der Mitte aus langsam "gegen den Uhrzeigersinn" aufbauen. Wenn alle Segmente eingeblendet sind wird anschließend das Zeichen noch für die Zeit PDAUER auf der Anzeige gehalten bevor zum nächsten Zeichen gewechselt wird.
Dieses Bit ist eigentlich ein "Überbleibsel" - ich hatte ursprünglich versucht eine Art "scrollende Darstellung" wie bei meiner DotMatrix-Magnetbake (W006Z005) zu realisieren, aber alle Versuche in diese Richtung sahen durch die maximal möglichen 3 Scrollschritte... scheiße aus. Dann stand ich da und dachte mir "jetzt hast du schon dieses Konfigurationsbit und diese Animationsroutine in Software - dann musst du auch irgendwas damit machen". Woraufhin ich noch ein wenig rumprobiert habe, festgestellt habe dass für meinen Geschmack dieses "Einblenden" ganz hübsch ist, und dass "linksrum" irgendwie besser aussieht als "rechtsrum" - und so ist es jetzt da. Auch wenn es wirklich nur Spielerei ist. Ich mag sie ganz gerne.

Bit5: UPSDWN "Upside-Down". Wenn dieses Bit auf 1 gesetzt wird dann wird die Ausgabe auf der Anzeige "auf den Kopf gestellt". Das ist ganz nützlich wenn man sich akribisch an den Bestückungsplan gehalten hat, seine Schaltung mit einer Batterie in einen Petling einbaut, diesen auf seinen Deckel hübsch auf den Schreibtisch stellt - und dann feststellt dass jetzt bei der Ausgabe irgendwie alle Zeichen falschrum sind. Wenn man den Dezimalpunkt NICHT nutzt (oder damit lebt dass dieser jetzt "links oben" und nicht wie üblich "rechts unten ist) dann kann man dieses Manko so umgehen.

Bit6: JWUPSD "Upside-Down á la JW". Wenn man (wie ich ;)) gerne Petlinge auf ihren Deckel stellt, aber auch gerne den Dezimalpunkt (z.B. für Koordinatenangaben) mitnutzt, dann gibt es die Möglichkeit die Anzeige LD2 mutwillig ENTGEGEN dem Bestückungsdruck einzulöten - so dass der Dezimalpunkt dann auf der Seite des Prozessors liegt. Durch Absicht oder Zufall liegen die beiden gemeinsamen Kathoden der Anzeige genau in der Mitte der jeweiligen Pinreihe so dass die Anzeige das mitmacht, und mit dieser Softwareoption kann man die Ansteuerung der Segmente so vertauschen dass dann wieder alles passt. Achtung: Damit das funktioniert muss SOWOHL das Bit "UPSDWN" ALS AUCH das Bit "JWUPSD" gesetzt sein.

Bit7: JWREAK "Reaktivlicht á la JW". Irgendwie hat es mich immer schon gestört dass der übliche LDR/R-Spannungsteiler tagsüber richtig Strom "verheizt" obwohl der LDR hier gar nicht gebraucht wird. Um dieses Manko zu beseitigen (ok, und weil ich dort einen Portpin zu wenig hatte um den Spannungsteiler schaltbar zu machen) habe ich für die DotMatrix-Bake ein Verfahren zur Helligkeitsmessung erfunden, das stattdessen mit einem LDR/C-Glied arbeitet. Und aus "Gleichteilegründen" natürlich auch hier noch mit in die Software gepackt. Abgesehen von mir wird dieses Bit vermutlich niemals jemand auf 1 setzen - die zugehörige Beschaltung ist auch nicht auf dieser Platine als Bestückungsoption vorgesehen. Kinder, lasst dieses Bit bitte immer auf 0.

Die Zahl hinter dem .equ ADAUER = ... gibt (wie bei Bit4: BLEND beschrieben) die Anzeigedauer jedes einzelnen sichtbaren Zeichens in Vielfachen von 10ms an. Persönliche Erfahrungswerte für den Normalmodus: 600ms pro Zeichen kommen dem Programmierer, der die Botschaft schon kennt EWIG langsam vor und sind dem Dosensucher, der sie zum ersten Mal sieht zu schnell. 800ms bis 1s sind ein halbwegs praxistauglicher Wert, länger als 1s pro Zeichen ist dann wirklich zum arg gemütlichen Mitschreiben....
Vorschläge für praxistaugliche Wert sind hier jeweils für den NORMAL-Modus und den BLEND-Modus angegeben und praktischerweise einfach auskommentierbar.

DSCHWELL, HSCHWELL und SPRUNG sind nur bei Reaktivlichtern von Interesse, hier werden die Helligkeiten konfiguriert bei denen ein Reaktivlicht vom Tag- in den Nachtmodus schaltet und welchen Helligkeitssprung im Nachtmodus nach oben man mindestens verursachen muss damit das Reaktivlicht auslöst.
Wichtig ist hier, dass DSCHWELL immer kleiner sein muss als HSCHWELL. Die vorliegenden Werte haben sich durch experimentieren als ganz praxistauglich erwiesen - natürlich kann auch hier noch beliebig gespielt werden.

Die eigentliche Nachricht kann einige Zeilen darunter dann in Klartext angegeben werden (die Beispiel- Nachricht führt den Dosensucher zu einem touristisch sehr attraktiven Ziel). Nichtdarstellbare Zeichen (immer wieder beliebt: k,x,m,w und viele mehr) werden als Leerzeichen ausgegeben. Als Zeichensatz ist nur klassisches 7Bit-ASCII implementiert, daher folgende Ausnahme: Das "°"-Zeichen scheint für Dosensucher ganz praktisch zu sein, liegt aber ausserhalb des 7Bit-Raumes und wurde daher kurzerhand auf das "*"-Zeichen gemappt. Die obigen Koordinaten erscheinen also auf der Anzeige als "N48°51.493 E002°17.670". Wer einen Ort westlicher als Greenwich zeigen möchte, muss sich was einfallen lassen - etwas klügeres als "-" ist mir bisher auch noch nicht als Idee gekommen. Wer der Übersichtlichkeit wegen seine Nachricht im Quellcode auf mehrere Zeilen aufteilen will, kann das wie oben gezeigt tun - im Beispiel erscheint das "PIEPS" bündig ohne Leerzeichen hinter dem "H=324". Hinweis: Der Atmel-Assembler kann solche Datenkonstanten nur 16Bit-wortweise ablegen und gibt daher eine Warning aus, wenn man eine ungerade Anzahl Buchstaben pro Zeile hinterlegt. Die Warning kann man entweder ignorieren (es wird bei der Ausgabe automatisch ein Leerzeichen angefügt) oder umgehen, indem man ungerade Buchstabenanzahlen selbst nach hinten mit Leerzeichen auffüllt (das ist das Leerzeichen hinter dem PIEPS). Die maximale Länge der auszugebenden Botschaft beträgt 254 Zeichen - das dürfte mehr als genug sein.

Character-ROM

Zurück zur Magnetbake W006Z003    Listenanfang   
Für kreative Köpfe, die gerne selbst Zeichen malen und für Spielkinder, äh, Mühsterieh-Freunde, die gerne seltsame Sonderzeichen definieren liefere ich das Zeichensatz-ROM zum Selbstbauen mit. In der Datei CharROM.inc darf sich Jeder nach Herzenslust austoben, der neue Zeichen definieren möchte oder meine hässlich findet oder Fehler von mir korrigieren möchte. Solltet Ihr entsprechende Ergebnisse weiterverbreiten wäre ich dankbar, wenn ich entsprechend den Lizenzbedingungen CC-BY-NC-SA als Ursprungs-Urheber auch in den modifizierten Dateien erwähnt werde.
Grobes Vorgehen, um sich selbst ein (neues) Zeichen zu definieren: Zuerst sucht man sich im oberen Teil der Datei die Stelle, an der die "8" definiert wird und nimmt sich diese per Kopierpaste als Vorlage, um daraus ein neues Zeichen zu bauen. Die hier:
.equ SYM_8 = SEG_a | SEG_b | SEG_c | SEG_d | SEG_e | SEG_f | SEG_g ; "8"
;      a
;   --------
;  |        |
; f|        |b
;  |   g    |
;   --------
;  |        |
; e|        |c
;  |   d    |
;   --------
Nehmen wir einfach mal an, man wäre Markenfetischist und wollte sich das Logo einer seltsamen Klamotten- Firma selbst bauen, das aussieht wie eine volle Tankanzeige mit dem Wort "SPRIT" daneben. Dann löscht man zuerst aus der Definition hinter dem .equ alle Segmente raus, die man nicht braucht - und passt danach dann das untendrunter als Kommentar gemalte Symbol an, damit man im Quellcode schon sieht, was nachher rauskommt:
.equ SYM_ESP = SEG_a | SEG_d | SEG_g ; Klamotten-Symbol
;     a
;  --------
;
;
;     g 
;  --------
;
;
;     d
;  --------
Natürlich hat das Ganze einen eigenen Namen bekommen (SYM_ESP), damit man es nachher wiederfindet. Diesen Namen trägt man nun unten in der Tabelle an der Stelle des Zeichens ein, das er ersetzen soll. Ich hab mir mal spontan das Dollar-Zeichen ausgesucht als Eselsbrücke dass dieser Mode-Mist eh immer zu teuer ist:
; 0x20+
;   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
;   Leer  !     "     #     $     %     &     '
.db SYM_leer, SYM_leer, SYM_Anf, SYM_leer, SYM_leer, SYM_leer, SYM_leer, SEG_b
Diese Zeile editieren wir nun zu:
; 0x20+
;   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
;   Leer  !     "     #     $     %     &     '
.db SYM_leer, SYM_leer, SYM_Anf, SYM_leer, SYM_ESP, SYM_leer, SYM_leer, SEG_b
und finden damit an fünfter Position der Zeile (oder mit dem Wert 0x24) unser teures Firmenlogo wieder. Das erscheint jetzt immer genau dann auf der Anzeige, wenn im Ausgabetext ein $ enthalten ist. So einfach ist das.... Viel Spaß beim Malen - und ich hoffe, die Firma mit der Tankanzeige verzeiht mir, dass ich sie als (schlechtes) Beispiel an den Haaren herbeigezogen habe. Wobei ich mir gar nicht sicher bin, ob sie dieses Logo heute noch verwenden - zumindest in meiner Jugend, den wilden 80ern, war das noch durchaus gängig.

Fuses

Zurück zur Magnetbake W006Z003    Listenanfang   
Ahhh, der Quell ewiger Unfreude - da sind wir nun also endlich... Aus Gründen, die mir nicht nachvollziehbar sind schafft es die Firma Atmel bis heute nicht, es möglich zu machen, dass man die nötigen Fuse-Settings gleich im Quellcode seiner Software mit angibt. Man muss sie immer "zu Fuß" nachtragen (es sei denn, man nutzt das in der Microcontrollerei relativ ungebräuchliche ELF-Format, das recht aufwendig zusammenzubauen ist), und zu allem Überfluss sieht das Menü zur Fuse-Einstellung bei jeder Programmiersoftware und jedem Programmiergerät völlig anders aus. Und damit die Not auch noch richtig schön groß wird gibt es auch noch die Möglichkeit, sich seinen Prozessor zu "verfusen" (ich liebe dieses Wort....), so dass man hinterher gar nicht mehr drankommt. Je nach Programmiergerät. Langen Elends kurzer Sinn: Das ist alles gar nicht mal so einfach mit den Fuses bei Atmel. Microchip kann das besser.
Nichtsdestotrotz ist natürlich so eine Fuse-Einstellung eine zum Betrieb eklatant wichtige Sache. Meine Software ist darauf ausgelegt, mit EXAKT EINER bestimmten Fuseeinstellung zu funktionieren. Ihr müsst also zusehen, wie ihr diese Einstellung mit eurem Programmiergerät in den Prozessor reinkriegt - sonst weigert sich die Software zu tun. Bei meinem Programmiergerät (AVRISP MK2 an AVRStudio 4.18.692) sieht das Fuse- Programmiermenü folgendermaßen aus:

Fuse-Einstellungen für Magnetbaken-Software W006S003V004

Fuse-Einstellungen für Magnetbaken-Software W006S003V004

Ihr müsst also sehen, wie ihr diese Werte (Low=0x62, High=0xDE, Extended=egal) in euren Prozessor reinbekommt. Viel Vergnügen dabei.
Hinweis1: Der Programmiertakt des Bausteins muss langsamer als ein Viertel des Prozessortaktes sein - da in meinem Fall der Prozessor mit 1MHz und mit Vorteiler :8 betrieben wird, muss der Programmiertakt langsamer als 250kHz sein. Bei meinem Programmer war der nächstlangsamere und passende Takt 125kHz. Die Software selbst ist glücklicherweise recht kurz, so dass ernsthafte Programmierzeiten selbst bei so gemächlichem Takt nicht entstehen....
Hinweis2: Im Download-Archiv ist inzwischen nur noch eine Version (aktuell V004) enthalten, die o.g. Werte gelten für diese V004. In dieser Version ist über ein Konfigurationsbit einstellbar ob die Anzeige gemultiplext angesteuert werden soll oder statisch, man muss dafür nicht mehr wie früher unterschiedliche Software-Versionen verwenden.

Programmablauf ab PowerOn

Zurück zur Magnetbake W006Z003    Listenanfang   
Nur so "just for info" bzw. zum besseren Verständnis der Funktionalität der Software hier eine Beschreibung, was im Prozessor alles passiert, bis die erste Auslösung kommt:

Wenn die Software beim PowerOn durch einen internen Reset gestartet wird, werden als allererstes die PIO- Pins des Prozessors je nach Funktionalität als Ein- oder Ausgang definiert.

Anschließend liest die Software die Fuse-Bits des Prozessors und vergleicht diese mit Sollwerten. Der Sollwert für die Low-Fuses ist 0x62, wird dieser nicht gefunden schaltet die Software das unterste (Low=unterstes) SEG_d an und erhängt sich bewusst in einer Endlosschleife. Der Sollwert für die High-Fuses ist 0xDE, wenn dieser nicht gefunden wird schaltet die Software das oberste (High=oberstes) SEG_a an und erhängt sich bewusst in einer Endlosschleife. Die Extended-Fusebits sind egal und werden daher nicht abgetestet.

Wenn die Fuses erfolgreich kontrolliert wurden, wird als nächstes getestet, ob es sich um einen echten PowerOn oder um einen Reset nach BrownOut handelt. Bei einem echten PowerOn-Reset wird eine Copyright- Meldung "I was here" in hoher Geschwindigkeit auf der Anzeige ausgegeben, bei einem Reset nach BrownOut entfällt diese Nachricht. Hintergrund: Für den Fall, dass jemand die Magnetbake an Solarzellen aus einem GoldCap betreiben möchte (wozu gibt es schließlich den Ultraenergiesparmodus) wäre es irgendwie ungeschickt, wenn die Software nach einem Reset durch absaufende Goldcap-Spannung als Erstes mal selbst wieder Zeichen ausgeben möchte - die den GoldCap sofort wieder bis zum Brownout entladen. Aus einer solche "Endlosschleife" gäbe es selbst bei noch so viel Sonne auf der Solarzelle kein Entkommen. Daher die Lösung, die Copyright-Nachricht nur bei echten PowerOns auszugeben und nicht bei Brownouts - es nervt den Anwender auch nicht ganz so sehr.

Als letzter Schritt, bevor die Bake "scharf" geschaltet wird, wird kurz nachgesehen, ob der Jumper zum Deaktivieren des Lebenszeichen-Blitzes gesetzt ist. Wenn er nicht gesetzt ist, wird der Watchdog- Timer aktiviert, um mit seiner Hilfe (und einem Software-Teiler :2) alle 16s einen Lebenszeichen-Blitz auf dem Dezimalpunkt abzusetzen. Wenn der Jumper gesteckt ist, entfällt dieser Schritt.

Nun ist die Bake "scharf" und kann durch eine Flanke an PA2 aktiviert werden. Der Bake ist es egal, ob es sich um eine steigende oder eine fallende Flanke handelt, jede Flankenart löst die Anzeige aus. Wenn eine Flanke kommt, während die Anzeige noch aktiv ist, wird diese ignoriert - es kommt also nicht zu "Doppelauslösungen" direkt hintereinander. (Klassisches Beispiel: Während die Anzeige noch läuft, nimmt der Dosensucher schon den Magneten vom Reedkontakt weg. Die Anzeige läuft bis zu Ende durch, löst aber trotz der zwischenzeitlich stattgefundenen fallenden Flanke NICHT erneut aus.)

Das war´s dann auch "schon"... ;)

Zurück zur Magnetbake W006Z003    Homepage-Startseite

Creative Commons License Dokumentation Geocaching-Magnetbake / Reaktivlicht (W006D004) von Jochen Wienstroth steht unter einer Creative Commons: Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz.

Letzte Änderung: 2021-07-01 JWie