diff options
Diffstat (limited to 'common/bootloader.c')
| -rw-r--r-- | common/bootloader.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/common/bootloader.c b/common/bootloader.c index e45295cd5..612b94964 100644 --- a/common/bootloader.c +++ b/common/bootloader.c | |||
| @@ -24,12 +24,22 @@ | |||
| 24 | 24 | ||
| 25 | void bootloader_jump(void) { | 25 | void bootloader_jump(void) { |
| 26 | cli(); | 26 | cli(); |
| 27 | |||
| 28 | // | ||
| 29 | //Teensy | ||
| 30 | // | ||
| 31 | #if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) | ||
| 27 | // disable watchdog, if enabled | 32 | // disable watchdog, if enabled |
| 28 | // disable all peripherals | 33 | // disable all peripherals |
| 29 | UDCON = 1; | 34 | UDCON = 1; |
| 30 | USBCON = (1<<FRZCLK); // disable USB | 35 | USBCON = (1<<FRZCLK); // disable USB |
| 31 | UCSR1B = 0; | 36 | UCSR1B = 0; |
| 32 | _delay_ms(5); | 37 | _delay_ms(5); |
| 38 | #else | ||
| 39 | // This makes custom USBasploader come up. | ||
| 40 | MCUSR = 0; | ||
| 41 | #endif | ||
| 42 | |||
| 33 | #if defined(__AVR_AT90USB162__) | 43 | #if defined(__AVR_AT90USB162__) |
| 34 | EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; | 44 | EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; |
| 35 | TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0; | 45 | TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0; |
| @@ -52,6 +62,26 @@ void bootloader_jump(void) { | |||
| 52 | PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; | 62 | PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; |
| 53 | #endif | 63 | #endif |
| 54 | 64 | ||
| 65 | |||
| 66 | // | ||
| 67 | //USBasp | ||
| 68 | // | ||
| 69 | #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P) | ||
| 70 | // This makes custom USBasploader come up. | ||
| 71 | MCUSR = 0; | ||
| 72 | |||
| 73 | // initialize ports | ||
| 74 | PORTB = 0; PORTC= 0; PORTD = 0; | ||
| 75 | DDRB = 0; DDRC= 0; DDRD = 0; | ||
| 76 | |||
| 77 | // disable interrupts | ||
| 78 | EIMSK = 0; EECR = 0; SPCR = 0; | ||
| 79 | ACSR = 0; SPMCSR = 0; WDTCSR = 0; PCICR = 0; | ||
| 80 | TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; | ||
| 81 | ADCSRA = 0; TWCR = 0; UCSR0B = 0; | ||
| 82 | #endif | ||
| 83 | |||
| 84 | |||
| 55 | // start Bootloader | 85 | // start Bootloader |
| 56 | ((void (*)(void))BOOTLOADER_START)(); | 86 | ((void (*)(void))BOOTLOADER_START)(); |
| 57 | } | 87 | } |
