Forum: Mikrocontroller und Digitale Elektronik Problem mit ADC beim ATTiny13


von Markus (Gast)


Lesenswert?

Hallo

Ich möchte eine ADC-Messung mit einem ATTiny13, ausgelöst durch einen 
Compare-Match durchführen, doch im Simulator von AVRStudio4 springe ich 
nie in die Interruptroutine des ADCs. Woran liegt das? Die 
Compare-Match-ISR wird wie gewünscht ausgeführt. Ich habe den ADC wie 
unten aufgeführt konfiguriert. Nehme an, dass ich nicht expliziet (z. B. 
in der Compare-Match-ISR) explizit eine ADC-Conversation starten muss, 
da die Trigger-Quelle des ADC der Interrupt des Compare-Matchs ist/sein 
sollte.
1
ADCSRB |=  (1 << ACME);     // Analog Comparator Multiplexer Enable
2
ADMUX |= (1 << MUX1);       // ADC-Eingang ist ADC2 (PB4)
3
ADMUX |= (1 << REFS0);      // interne Spannungsreferenz nutzen
4
// Timer/Counter Compare Match A triggert eine ADC conversation
5
ADCSRB |=  ((1 << ADTS1) | (1 << ADTS0));
6
ADCSRA |= (1 << ADATE);     // ADC Auto Trigger Enable
7
ADCSRA |= (1 << ADPS0);     // ADC-Prescaler auf 2 setzen
8
// ADC Conversion Complete Interrupt is activated
9
ADCSRA |= (1 << ADIE);
10
ADCSRA |=  (1 << ADEN);     // ADC enable

Thx, Markus

von spess53 (Gast)


Lesenswert?

Hi

sei()?

MfG Spess

von Markus (Gast)


Lesenswert?

Danke für den Hinweis, aber die Interrupts hab ich auch global 
aktiviert, mein Compare Match wird ja auch ausgelöst ;)

von spess53 (Gast)


Lesenswert?

Hi

>ADCSRB |=  (1 << ACME);     // Analog Comparator Multiplexer Enable

Wozu soll das gut sein?

Datenblatt:

• Bit 6 – ACME: Analog Comparator Multiplexer Enable
When this bit is written logic one and the ADC is switched off (ADEN in
ADCSRA is zero), the ADC multiplexer selects the negative input to the
Analog Comparator.

MfG Spess

von Markus (Gast)


Lesenswert?

ohh, da hat sich was eingeschlichen, das gehört natürlich nicht zur 
ADC-Konfiguration, sondern an eine andere Stelle im Code. Habs leider 
immer noch nicht hingekriegt.
Als Ausweg kann ich mir vorstellen, dass ich in der Compare Match-ISR 
eine ADC-Convertierung im Code auslöse, aber dann verstehe ich die 
Trigger-Optionen des ADCs nicht. Nehme an, dass direkt nach (oder 
während) der Compare-Match-ISR eine Convertierung ausgelöst werden 
sollte und das Start-ADC-Conversion-Bit im Simulator (mindestens für 
eine Taktperiode) gesetzt sein sollte oder?
Kann ich im AVRStudio überhaupt den ADC korrekt simulieren? Die ADC-ISR 
müsste ja bei einem "ADC Conversion Complete"-Event ausgelöst werden und 
ein zu konvertierender analoger Spannungswert kann ja im Simulator auch 
nicht angegeben werden...

von spess53 (Gast)


Lesenswert?

Hi

>Kann ich im AVRStudio überhaupt den ADC korrekt simulieren? Die ADC-ISR
>müsste ja bei einem "ADC Conversion Complete"-Event ausgelöst werden

Einfach mal ADIF in ADCSRA per Hand setzen.

MfG Spess

von spess53 (Gast)


Lesenswert?

Hi

Welchen Simulator benutzt du? Ich habe das mal schnell getestet: Im 
Simulator2 funktioniert Autotrigger. Im Simulator(1) nicht.

MfG Spess

von Markus (Gast)


Lesenswert?

ich glaube mal was von "AVR Simulator" (= 1) gesehen zu haben, bin mir 
aber nicht mehr sicher. Wo kann ich das nachschauen?
Kann man bei einem bestehenden Projekt den Simulator ändern?

von spess53 (Gast)


Lesenswert?

Hi

>Kann man bei einem bestehenden Projekt den Simulator ändern?

Ja. Debug->Select Platform and Cevice.

MfG Spess

von Markus (Gast)


Lesenswert?

Super, daran lags. Jetzt funktioniert meine ADC-ISR. Vielen Dank!!!

LG Markus

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.