mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC-MUX als negativen Eingang des Analogcomparator nutzen


Autor: Christopher Brumm (chrispy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute,

ich arbeite gerade daran meinen AVR-Butterfly (ATMEGA169) dazu zu
bekommen einen Phasenanschnitt auszuwerten.
Mein Plan ist beim Nulldurchgang den 16-Bit-Timer (Timer1) zu starten
und dann beim Start des Phasenanschnitts den Timer rückzusetzen und
auszulesen.

Das Starten und Einstellen des Timers klappt inzwischen ganz
manierlich. Auch das Verwenden des CTC-Modus funktioniert und Dank der
Kalibrierungsfunktion, die bei der Demo-Software des Butterfly dabei
ist, kommt der eingestellte Takt auch ziemlich genau heraus.

Zum Auswerten und Rückseztem des Timers möchte ich den
Capture-Interrupt verwenden. Durch das angeschlossene LCD kommt aber
nur der Analog-Comparator dafür in Frage.
Da dieser leider durch den Joystick belegt kann ich den Interrupt durch
den Joystick per Hand auslösen aber das Anschliessen meines Signals wird
schwierig.

Nun meine Frage:
Wenn ich die Dokumentation richtig verstanden habe ist es möglich den
negativen Eingang des Analog-Comparators durch einen beliebigen ADC
über den MUX zu ersetzen und den positiven Eingang durch eine interne
Referenzspannung.
Ist das wirklich so?
Hab ich das richtig verstanden oder baue ich grade Luftschlösser?

Es ist so verlockend, weil der ADC1 direkt auf Stecker geführt ist.

Ich habe schon erste Versuche unternommen den Timer und den
Analogcomparator (inkl. ADMUX) einzustellen.

Bei Interresse und falls überhaupt möglich <g> werde ich diesen Versuch
gerne posten

Vielen Dank im Vorraus für jede Form der Hilfe
chrispy

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Mega169 zwar noch nicht verwendet, aber wenn es so ist wie
beim Mega88, dann sollte das schon funktionieren. Das Problem ist halt,
dass man den ADC abschalten muss, um den ADC-Multiplexer für den
Komparator verwenden zu können.

Gruss Andi

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst das ACME-Bit im ADCSRB-Register setzen. Und der den ADC darfst
du nicht benutzen. (Ich schliesse mich also Andi an).
Seite 190ff im Datenblatt...

Autor: Christopher Brumm (chrispy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,
hier mein Versuch:

TCCR1A = ((0<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |
(0<<WGM11) | (0<<WGM10));

TCCR1B = ((1<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12)
| (0<<CS11) | (0<<CS10));

TCCR1C = ((0<<FOC1A) | (0<<FOC1B));

TCNT1 = 0UL;

OCR1A = 100UL;

TIMSK1 = ((1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1));

ACSR = ((0<<ACD) | (1<<ACBG) | (0<<ACIE) | (1<<ACIC) | (0<<ACIS1) |
(0<<ACIS0));

ADCSRA = ((0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) |
(0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0));

ADCSRB = ((1<<ACME) | (0<<ADTS2) | (0<<ADTS1) | (1<<ADTS0));

ADMUX = ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR) | (0<<MUX4) | (0<<MUX3) |
(0<<MUX2) | (0<<MUX1) | (1<<MUX0));

SIGNAL(SIG_INPUT_CAPTURE1)
{
  sbiBF(PORTE,PORTE6);    //LED2 an
}

aber irgendwie klappt das noch nicht so recht.
Der Capture-Interrupt löst nicht aus.

chrispy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.