Ik heb een stukje code geschreven om de werking van de AD Converter op de ATmega32(L) te leren kennen.
De code heeft gewerkt en was eerst uitgebreid tot 4 if statements zodat bij stijgende spanning steeds meer uitgangen hoog gezet werden (en ook weer laag als de spanning op poort PA6 daalde).
Maar nu werkt de code niet meer (waarschijnlijk heb ik iets weggehaald maar ik zie niet wat) en ik krijg het met geen mogelijkheid meer werkend.
ziet iemand wat ik vergeet / fout doe?!:
De code heeft gewerkt en was eerst uitgebreid tot 4 if statements zodat bij stijgende spanning steeds meer uitgangen hoog gezet werden (en ook weer laag als de spanning op poort PA6 daalde).
Maar nu werkt de code niet meer (waarschijnlijk heb ik iets weggehaald maar ik zie niet wat) en ik krijg het met geen mogelijkheid meer werkend.
ziet iemand wat ik vergeet / fout doe?!:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #include <avr/io.h>
#include <util/delay.h>
#define IsPinHigh(PORT, PIN) (((PORT>>PIN) & 0x01) == 0x01) //input op pin controleren
int i=0;
int main (void)
{
DDRA |= (1<<PA0 | 1<<PA1 | 1<<PA2 | 1<<PA3); // Set LED1 as output
DDRB |= (1 << PB0 );
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Set ADC prescaler to 128 - 125KHz sample rate @ 16MHz
ADMUX |= (1 << REFS0);
ADMUX |= (1 << REFS1);
ADMUX |= (1 << ADLAR); // Left adjust ADC result to allow easy 8 bit reading
ADMUX |= (1 << MUX2); //ADC op poort PA6 gebruiken
ADMUX |= (1 << MUX1); //ADC op poort PA6 gebruiken
ADCSRA |= (1 << ADEN); // Enable ADC
ADCSRA |= (1 << ADSC); // Start A2D Conversions
while (1) // Loop Forever
{
unsigned short spanning = ADC;
if (spanning <40000)
{
PORTA |= (1<<PA1);
}
else
{
PORTA &= ~(1<<PA1);
}
}
} |