working software
This commit is contained in:
55
software/software.ino
Normal file
55
software/software.ino
Normal file
@@ -0,0 +1,55 @@
|
||||
#include "Keyboard.h"
|
||||
#include "HID.h"
|
||||
|
||||
#if F_CPU == 16000000
|
||||
#error should be running at 8MHz
|
||||
#endif
|
||||
|
||||
void setup() {
|
||||
pinMode(A0, INPUT_PULLUP);
|
||||
Keyboard.begin();
|
||||
Serial.begin(9600);
|
||||
Serial.setTimeout(50);
|
||||
}
|
||||
|
||||
void goto_bootloader() {
|
||||
cli();
|
||||
UDCON |= (1<<DETACH);
|
||||
USBCON |= (1<<USBE);
|
||||
|
||||
TIMSK0 = 0;
|
||||
|
||||
MCUCR |= (1<<IVCE);
|
||||
MCUCR |= (1<<IVSEL);
|
||||
sei();
|
||||
asm("jmp 0x7000");
|
||||
}
|
||||
|
||||
|
||||
void check_blcmd() {
|
||||
if (Serial.available()) {
|
||||
String in = Serial.readStringUntil("\n");
|
||||
if (in.equals("bootloader\n")) {
|
||||
goto_bootloader();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
while (digitalRead(A0) == HIGH) {
|
||||
check_blcmd();
|
||||
delay(100);
|
||||
}
|
||||
|
||||
Keyboard.press(KEY_F14);
|
||||
Keyboard.releaseAll();
|
||||
|
||||
while (digitalRead(A0) != HIGH) {
|
||||
check_blcmd();
|
||||
delay(100);
|
||||
}
|
||||
|
||||
Keyboard.press(KEY_F15);
|
||||
Keyboard.releaseAll();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user