Guten Abend,
ich habe nachfolgenden Code geschrieben. In dem ich einen Analogenwert
einlesen will, und den Wert des ADCH Registers dann praktisch in
delay_ms() einfügen damit sich dann je nach Stellung des potis die Zeit
ändert. Es kommt immer eine Fehlermeldung, was mache ich hier falsch.
könnte mir das BITTE jemand zeigen ?
1 | /*
|
2 | * ATTINY_85.c
|
3 | *
|
4 | * Created: 03.03.2018 15:59:47
|
5 | * Author : USER
|
6 | */
|
7 | #define F_CPU 1000000UL
|
8 | #include <avr/io.h>
|
9 | #include <util/delay.h>
|
10 |
|
11 | uint8_t WERT = 0;
|
12 | uint8_t t = 0;
|
13 |
|
14 |
|
15 | int main(void)
|
16 | {
|
17 | DDRB &= ~ (1<<PB2); // auf Eingang Bewegungsmelder
|
18 | DDRB = (1<<PB3); // auf Ausgang Magnetventil
|
19 |
|
20 | // ADC INIT
|
21 | ADMUX = (1<<REFS0); // Referenzspannung Vcc wählen +5V
|
22 | ADMUX = (1<<MUX1); // Kanal 1 PB1 wählen
|
23 | ADCSRA = (1<<ADEN); // ADC freigeben / aktivieren
|
24 | ADCSRA = (1<<ADSC); // ADC starten
|
25 | ADCSRA = (1<<ADPS2);// Prescaler /16
|
26 | ADMUX = (1<<ADLAR); // Ausgabe linksbündig ADCH Register
|
27 |
|
28 |
|
29 | while (1)
|
30 | {
|
31 | WERT = ADCH;
|
32 | t = WERT*3;
|
33 |
|
34 | if (PINB & (1<<PB2))
|
35 | {
|
36 | PORTB |= (1<<PB3);
|
37 | _delay_ms(t);
|
38 | }
|
39 | else
|
40 | {
|
41 | PORTB &= ~(1<<PB3);
|
42 | }
|
43 | }
|
44 | }
|
und hier wäre die Fehlermeldung.:
1 | Severity Code Description Project File Line
|
2 | Error recipe for target 'main.o' failed Attiny85 C:\Users\USER\Documents\Atmel Studio\7.0\Attiny85\Attiny85\Debug\Makefile 79
|
1 | Severity Code Description Project File Line
|
2 | Error __builtin_avr_delay_cycles expects a compile time integer constant Attiny85 c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h 187
|