Hallo,
für ein Projekt will ich einen ATTiny13A nutzen, um ein analoges Signal
und eine "feste" Referenzspannung (= Poti) mithilfe des Internen
Komparators zu vergleichen und bei Veränderung des Ausgangs einen
Interrupt auszulösen.
Wie auch sonst hat das natürlich nicht geklappt, weshalb ich den
Programmcode auf das minimale heruntergekürzt habe (also kein Interrupt
sondern pollen von ACO, etc...)
Aber auch mit gekürzen Programmcode klappt es noch nicht (die LED bleibt
aus, egal wie ich die Potis umstelle, also bleibt ACO dauerhaft auf 0).
Zum Programmieren des ATTiny nutze ich die einen Arduino Nano als ISP
und den MicroCore (github.com/MCUdude/MicroCore).
Der Programmcode (in gekürzter form) ist wie folgt:
1 | #define TOGGLE_OUT 3
|
2 |
|
3 | void setup() {
|
4 | //Disable Digital Input for AIN0 and AIN1
|
5 | DIDR0 |= bit(AIN0D)
|
6 | | bit(AIN1D);
|
7 |
|
8 | ADCSRB &= ~bit(ACME);//Analog Comparator Multiplexer Enable = 0
|
9 |
|
10 | ACSR &= ~bit(ACD);//Analog Comparator Disable = 0
|
11 | ACSR &= ~bit(ACBG);//Analog Comparator Bandgap Select = 0
|
12 |
|
13 | pinMode(TOGGLE_OUT, OUTPUT);
|
14 | digitalWrite(TOGGLE_OUT, HIGH);
|
15 | delay(5000);
|
16 | }
|
17 |
|
18 | void loop() {
|
19 | //set led to state of analog comparator
|
20 | digitalWrite(TOGGLE_OUT, (ACSR & bit(ACO)) == 1);
|
21 | }
|
Die Schaltung ist als Anhang dabei, falls sich da ein Fehler
eingeschlichen hat.
Grüße
Chris