ATtiny45
8 MHz int. osc.
Vcc = 2,8 V
Uref = Vcc
U_ADC3 = 2,2 V
Ich komm nicht drauf - was läuft hier falsch?
1 | void temp_init(void)
|
2 | {
|
3 | DIDR0 = (1<<ADC3D); // disable digital
|
4 | ADCSRA = (1<<ADEN)
|
5 | | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
|
6 | ADMUX = 3; // select pin, Vcc as reference
|
7 | ADCSRA |= (ADSC); // start conversion
|
8 | while (ADCSRA & (1<<ADSC) ); // wait until completed
|
9 | int16_t discard = ADC; // 10 bit value
|
10 | }
|
11 |
|
12 | int16_t temp_get(void)
|
13 | {
|
14 | ADCSRA |= (ADSC); // start conversion
|
15 | while (ADCSRA & (1<<ADSC) ); // wait until completed
|
16 | return (ADC); // 10 bit value
|
17 | }
|
18 |
|
19 | .......
|
20 |
|
21 | while(1)
|
22 |
|
23 | {
|
24 |
|
25 | _delay_ms( 500 );
|
26 |
|
27 |
|
28 |
|
29 | tmp = temp_get();
|
30 |
|
31 | itoa(tmp, buffer, 10);
|
32 |
|
33 | LCD_WriteString(8, 3, buffer);
|
34 | ...............
|
tmp auf einen Wert gesetzt bewirkt erwartungsgemäße Ausgabe.