Aus SatriaWiki
Inhaltsverzeichnis
Bootloader updaten
https://frottier.wordpress.com/2017/11/12/kein-frust-mit-digispark-clones/
Bootloader upload via ISP
Ist der Bootloader eines Digisparks defekt (z.B. durch ein fehlerhaftes Update), kann man mit einem Arduino UNO einen Bootloader auf den ATtiny85 oder ATtiny167 flashen.
Benötigte Dinge:
- Arduino UNO
- avrdude.exe (mit einer config.conf, die einen Eintrag für den ATtiny167 enthält.
- Arduino IDE > 1.6.5
- COM Port des Arduino auf 19200 baud.
- Ein .hex file des passenden Bootloaders.
Vorgehensweise beim DigisparkPro:
- Arduino und Digispark verkabeln (s. Bild rechts)
MOSI (11) -> Pin10 (Pro) | P0
MISO (12) -> Pin8 (Pro) | P1
SCK (13) -> Pin11 (Pro) | P2
RST (10) -> RST (Pro) | P5
5V -> 5V
GND -> GND - ISP Sketch im IDE laden (Beispiele -> ArduinoISP)
- USE_OLD_STYLE_WIRING aktivieren
- Sketch auf den Arduino UNO laden. Startet danach automatisch.
- avrdude Kommando ausführen (x = COM-Port Nummer):
avrdude -pt167 -carduino -PCOMx -b19200 -Uflash:w:t167_default.hex:i
Der Output sollte in etwa dieser sein:
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9487 avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "t167_default.hex" avrdude: writing flash (16260 bytes): Writing | ################################################## | 100% 0.26s avrdude: 16260 bytes of flash written avrdude: verifying flash memory against t167_default.hex: avrdude: load data flash data from input file t167_default.hex: avrdude: input file t167_default.hex contains 16260 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.35s avrdude: verifying ... avrdude: 16260 bytes of flash verified avrdude: safemode: Fuses OK (H:FE, E:DD, L:DF) avrdude done. Thank you.
Quelle: https://digistump.com/wiki/digispark/tutorials/proisp
Code snippets
Change clock speed
- define CLOCK_SPEED_16MHZ 0
- define CLOCK_SPEED_8MHZ 1
- define CLOCK_SPEED_4MHZ 2
- define CLOCK_SPEED_2MHZ 3
- define CLOCK_SPEED_1MHZ 4
- define CLOCK_SPEED_500KHZ 5
- define CLOCK_SPEED_250KHZ 6
- define CLOCK_SPEED_125KHZ 7
volatile void setClockSpeed(byte speed)
{
CLKPR = 0b10000000; // enable clock change
CLKPR = speed;
}
void setup()
{
setClockSpeed(CLOCK_SPEED_8MHZ);
}