summaryrefslogtreecommitdiff
path: root/software
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2012-05-20 02:48:07 +0000
committerChristian Pointner <equinox@mur.at>2012-05-20 02:48:07 +0000
commit15dccdee60665a14de32483dd98754bc0ece1da8 (patch)
treef3d4b08855f9bcbcb174e8d42ab945506dd5801c /software
parentrx/tx test updates (diff)
fixed reset to bootloader??
git-svn-id: https://svn.spreadspace.org/mur.sat@451 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'software')
-rw-r--r--software/hhd70dongle/util.c34
1 files changed, 8 insertions, 26 deletions
diff --git a/software/hhd70dongle/util.c b/software/hhd70dongle/util.c
index 56fe575..6ad965c 100644
--- a/software/hhd70dongle/util.c
+++ b/software/hhd70dongle/util.c
@@ -34,6 +34,9 @@
#include <util/delay.h>
#include "util.h"
+typedef void (*f_ptr_type)(void);
+f_ptr_type start_bootloader = (f_ptr_type)0x3800;
+
void reset(void)
{
cli();
@@ -43,31 +46,11 @@ void reset(void)
USBCON = (1<<FRZCLK); // disable USB
UCSR1B = 0;
_delay_ms(5);
- #if defined(__AVR_AT90USB162__) // Teensy 1.0
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0;
- TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0;
- DDRB = 0; DDRC = 0; DDRD = 0;
- PORTB = 0; PORTC = 0; PORTD = 0;
- asm volatile("jmp 0x3E00");
- #elif defined(__AVR_ATmega32U4__) // Teensy 2.0
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0;
- DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0;
- PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- asm volatile("jmp 0x7E00");
- #elif defined(__AVR_AT90USB646__) // Teensy++ 1.0
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0;
- DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;
- PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- asm volatile("jmp 0xFC00");
- #elif defined(__AVR_AT90USB1286__) // Teensy++ 2.0
- EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
- TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0;
- DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;
- PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
- asm volatile("jmp 0x1FC00");
- #endif
+ EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0;
+ TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0;
+ DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0;
+ PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;
+ start_bootloader();
}
//not switchin off adc produces slightly besser results
@@ -81,7 +64,6 @@ void adc_off(void)
ADCSRA &= ~(1<<ADEN); // disable ADC -> save power
}
-
uint8_t adc_read(uint8_t mux)
{
ADCSRB = (mux & 0x20); // select input