MoinMoin liebes Forum,
ich hab ein kleines Problem mit den Bitmanipulationen(Atmel Studio 6.1).
Ich wollte ein kleines Progrämmchen schreiben, um mich ans Messen mit
dem ADC per Interrupt zu machen.
Dazu hab ich mir eine Variable ISR_Flags erstellt, in welcher das LSB
gesetzt wird(in der ISR) wenn die Messung abgeschlossen ist, und wieder
auf Null gesetzt werden soll, wenn die Messung fertig ist, und eine
Konstante Messungkomplett die auf 0b00000001 gesetzt ist.
Wenn ich das ganze dann per
1 | ISR_Flags |= (1<<Messungkomplett)
|
versuche zu setzen, wird mir das vom Studio als Fehler angekreidet, in
Registern ala ADCSRA funktioniert das ohne Mosern.
Kann mir wer sagen, welchen Denkfehler ich hier mache, oder ob des
Studio spinnt? Ich meine, soetwas schonmal genauso gelöst zu haben, hab
das aber nicht mehr auf meiner Festplatte....
hier nochmal der Code in seiner Gesamtheit:
1 | /*
|
2 | * MotorBla.c
|
3 | *
|
4 | * Created: 27.02.2014 19:14:55
|
5 | * Author: Ich
|
6 | */
|
7 |
|
8 |
|
9 | #define F_CPU 8000000UL
|
10 |
|
11 | #include <avr/io.h>
|
12 | #include <avr/interrupt.h>
|
13 |
|
14 |
|
15 |
|
16 | #define Messungkomplett 0b00000001;
|
17 |
|
18 |
|
19 | void SystemStart(void);
|
20 | void ADC_Messenstart(uint8_t Channel);
|
21 |
|
22 |
|
23 |
|
24 | uint8_t ISR_Flags = 0;
|
25 |
|
26 | uint16_t ADC_Channel0 = 0;
|
27 |
|
28 |
|
29 | ISR(ADC_vect)
|
30 | {
|
31 | ADC_Channel0 = ADC;
|
32 | ISR_Flags |= (1<<Messungkomplett);
|
33 | }
|
34 |
|
35 | int main(void)
|
36 | {
|
37 | while(1)
|
38 | {
|
39 |
|
40 | }
|
41 | }
|
42 |
|
43 |
|
44 | void SystemStart(void)
|
45 | {
|
46 | TCCR1A |= (1<<COM1A1)|(1<<WGM11)|(1<<WGM10); //Timer1-
|
47 | TCCR1B |= (1<<WGM12)|(1<<CS00); //Initialisierung
|
48 |
|
49 | ADCSRA |= (1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS2); //Analog-Digital-Converter Initialisierung
|
50 | }
|
51 |
|
52 | void ADC_Messenstart(uint8_t Channel)
|
53 | {
|
54 | if(Channel == 0)
|
55 | {
|
56 | ADMUX = 0;
|
57 | ADCSRA |= ADSC;
|
58 | ISR_Flags &= ~(1<<Messungkomplett);
|
59 | }
|
60 | }
|
MfG Chaos