Hallo zusammen ich habe ein kleines Problem und zwar habe egal wie ich es drehe und wende, mein Programm funktioniert nicht. Es ist für das Studium und wir arbeiten mit einem Hallsensor, der den Strom als Spannung zurück gibt(0A = 0,5V). 185mV pro A steigt die Spannung am Ausgang des Hallsensors. Mein Problem dabei ist, dass das Programm niemals in die obere If Anweisung gelangt.
1 | main
|
2 | {
|
3 | ADMUX = (0 << REFS1)|(0 << REFS0)|(0 << MUX5)|(0 << MUX4)|(0 << MUX3)|(0 << MUX2)|(1 << MUX1)|(0 << MUX0); |
4 | //Free_running Mode
|
5 | ADCSRB = (0 << BIN)|(0 << ACME)|(0 << ADLAR)|(0 << ADTS2)|(0 << ADTS1)|(0 << ADTS0); |
6 | //ADC Interrupt aktivieren
|
7 | ADCSRA = (1 << ADEN)|(0 << ADSC)|(1 << ADATE)|(0 << ADIF)|(1 << ADIE)|(1 << ADPS2)|(0 << ADPS1)|(1 << ADPS0); |
8 | |
9 | ADCSRA |= (1 << ADSC); |
10 | sei(); |
11 | while(1) ; |
12 | }
|
13 | |
14 | ISR(ADC-vect) |
15 | {
|
16 | cli(); |
17 | uint16_t current = ADC; |
18 | current = (current - 102) / 37;//Strom = Spannung vom Hallsensor - 0,5V / 185mV |
19 | if(current >= 55) |
20 | {
|
21 | //tu was
|
22 | }
|
23 | else if(current <= 19) |
24 | {
|
25 | //lass das
|
26 | }
|
27 | else
|
28 | {
|
29 | //Mache Weiter mit der letzten Sache
|
30 | }
|
31 | sei(); |
32 | }
|