Mercurial > d1-mini-20ch-servo
changeset 12:6894e39cec87 draft
Add handling of the address jumpers
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Fri, 20 Jan 2017 11:55:51 +0100 |
| parents | 740510238f32 |
| children | 846c874c742c |
| files | firmware/main.c |
| diffstat | 1 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/firmware/main.c Fri Jan 20 11:49:05 2017 +0100 +++ b/firmware/main.c Fri Jan 20 11:55:51 2017 +0100 @@ -86,10 +86,31 @@ } +uint16_t adc(uint8_t pin) { + ADMUX = 0<<ADLAR | 0<<REFS1 | 0<<REFS0 | (0x03 & pin); + ADCSRA |= 1<<ADSC; + while (ADCSRA & (1<<ADSC)) { + // Pass. + } + return ADC; +} + + int main() { + // Init ADC. + ADCSRA = 1<<ADEN | 1<<ADPS2 | 1<<ADPS1 | 0<<ADPS0; // Pre-scaler 64. + uint8_t i2c_address = I2C_ADDRESS; + if (adc(6) > 511) { + i2c_address += 1; + } + if (adc(7) > 511) { + i2c_address += 2; + } + ADCSRA = 0<<ADEN; + // setup i2c slave PORTC |= 1<<PC4 | 1<<PC5; // enable pullups - TWAR = I2C_ADDRESS<<1; + TWAR = i2c_address<<1; // setup servos TCCR1A = 0x00;
