Forum: Mikrocontroller und Digitale Elektronik Comparator in AVR C


von O. A. (sokrates1989)


Lesenswert?

Hallo,

ich wollte ein Beispiel aus einem Buch testen.

Leider bekomme ich die Fehlermeldung
'ACO' undeclared first use in this function.

Was müsste ich ändern um den Fehler verschwinden zu lassen? Im Buch 
finde ich keine weiteren Hinweise.
1
#define F_CPU 3686400
2
#include <avr/io.h>
3
4
void init (void)
5
{
6
DDRB= 0x03;   //PORTB = Ausgang
7
}
8
9
main()
10
{
11
  init();
12
  while (1)
13
  {
14
  if (ACSR & (1<<AC0))
15
    PORTB = 0x01;
16
  else
17
    PORTB = 0x02;
18
  }
19
}

von Felix (Gast)


Lesenswert?

Welche Umgebung, welcher Controller? Für den Controller liegt irgendwo 
eine io"Controllerabkürzung".inc.
Darin mal nach "AC*" suchen...

von S. Landolt (Gast)


Lesenswert?

Das Bit heißt vermutlich ACO (oh wie Output), nicht AC0 (null).

von Carl D. (jcw2)


Lesenswert?

Das Ding heißt AC"Ooohhh" und nicht AC"Null"

Edit: zu spät ;-)

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

"... durch zweier Zeugen Mund
Wird allerwegs die Wahrheit kund"

von Christian S. (roehrenvorheizer)


Lesenswert?

"Bit 5 – ACO: Analog Comparator Output
ACO is directly connected to the comparator output."

MfG

von O. A. (sokrates1989)


Lesenswert?

Danke. es geht jetzt. (Musste noch die Eingänge hinzufügen)
Nur bin ich etwas verwirrt.
Das Programm im Buch ist echt kurz aber es genügt um 2 Analoge Werte zu 
vergleichen und signalisiert diese.

Ich habe ein Programm von einem Komillitonen vor mir liegen, das ist 
ellen lang. Was haben die gemacht??

Die Aufgabenstellung lautet.,
Es soll ein analoger Ist Wert mit einem analogen Soll wert verglichen 
werden. Bei Unterschreiten des Soll WErtes leuchtet die grüne Led. Bei 
Überschreiten die rote..

Das erfüllt das Programm meiner Meinung nach...oder habe ich etwas 
übersehen?

: Bearbeitet durch User
von void (Gast)


Lesenswert?

O. A. schrieb:
> Ich habe ein Programm von einem Komillitonen vor mir liegen, das ist
> ellen lang. Was haben die gemacht??

Den AD-Wandler benutzt.


> Das erfüllt das Programm meiner Meinung nach...
> oder habe ich etwas übersehen?

Ja. Wenn sich die Aufgabenstellung aber leicht zu einem 
Soll-Werte-Bereich erweitert, sind deine Kommilitonen in 1 Minute fertig 
und du fängst nochmal von vorne an.

von c-hater (Gast)


Lesenswert?

void schrieb:

> Ja. Wenn sich die Aufgabenstellung aber leicht zu einem
> Soll-Werte-Bereich erweitert, sind deine Kommilitonen in 1 Minute fertig
> und du fängst nochmal von vorne an.

Wenn sich die Aufgabenstellung ändert, ändert sich natürlich immer ein 
wesentliches Kriterium zur Auswahl der bestmöglichen Lösung. Sollte man 
nun allein deshalb auf die Wahl der bestmöglichen Lösung verzichten, 
weil mögliche andere Aufgabenstellungen eine andere Lösung erfordern?

Nein, natürlich nicht. Denn das führt am Ende zu einer Eierlegenden 
Wollmilchsau von Programm, die zwar theorethisch alles kann, praktisch 
aber dafür nix davon wirklich gut...

Im konkreten Fall geht es natürlich (wie so oft) um die mögliche 
Geschwindigkeit. Wenn z.B. irgendwas zu erfassen ist, was weniger als 13 
MCU-Takte dauert, fallen die ADC-Lösungen naturgemäß auf die Nase, denn 
so lange dauert eine Wandlung im absoluten Minimum. Tatsächlich sind die 
Restriktionen sogar noch sehr viel größer, weil man meistens MCU-Takte 
verwendet, die zusätzliche Bremsen für den ADC erfordern, sprich: einen 
Prescaler>1...

Mit dem AC kann man hingegen sehr viel kürzere Ereignisse erfassen.

Beitrag #5450373 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.