Dies ist eine alte Version des Dokuments!
ATTINY85 LowPass-Pilight
ATTINY85 - Setup
Gekauft habe ich eine Developer-Edition mit USB-Anschluss. Das Schaltbild und weitere Infos gibt es hier. Das sollte alles einfacher machen. In Arduino unter Einstellungen bei Boardmanagern folgendes eintragen
http://digistump.com/package_digistump_index.json
In Werkzeuge→Board …→Boardverwalter nach „Digistump AVR Boards“ suchen und installieren. Dann das Default-Board auswählen. Wichtig: Nicht einstecken, bis Arduino dich auffordert! Sonst kommt die Meldung
Running Digispark Uploader... Plug in device now... (will timeout in 60 seconds) Assertion failed: (res >= 4), function micronucleus_connect, file library/micronucleus_lib.c, line 100. > Please plug in the device ... > Press CTRL+C to terminate the program.
Es hat auch geholfen, alle USB-Devices (und leere Kabel) abzuziehen. Aus der Anleitung: Digispark only shows up as a programmable device for 5 seconds, after that it will start running its code (when it is new and un-programmed this means it will blink) and disappear or act like the USB device you programmed it to act like.]
ATTINY85 - Programmieren
Eine LED mit 220Ohm Widerstand an PB0 (MOSI); PB2 (SCK/ADC1); PB4 >(ADC2) und man kann mit wenig Code LEDs schalten (Stromversorgung nicht über das USB-Programmier-Kabel vom Rechner, da sonst nicht alle Pins gehen.
pinMode(PIN, OUTPUT); # 0,2 oder 4 für PIN digitalWrite(PIN, HIGH); digitalWrite(PIN, LOW);
Interrupt-Programmierung ist in diesem Artikel mit einem Beispiel sehr schön erklärt. Auch ein Beispiel mit Asynchronen Timern ist da zu finden.
Ich habe daraus gelernt, dass durch 'volatile' der Compiler die Variable nicht ratsoptimiert, wenn sie nur in einer interrupt-routine aufgerufen wird, die aus dem code nicht explizit angesprungen wird. PORTB sind die Pins 0-4 in einem Register zusammengefasst.
Dokumentation zum Chip findet man in der Atmel 8-bit AVR Microcontroller with 2/4/8K Bytes In-System Programmable Flash