ATtiny84A ADC funktioniert nicht

OP #3287694
Hallo!
Ich verwenden den ATtiny84A und will den ADC benutzen:
http://www.atmel.com/Images/doc8183.pdf

Mein CODE:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4

5
void init();
6
volatile uint16_t t1var = 0;
7

8

9
int main(void)
10
{
11
    init();
12
    while(1)
13
    {
14

15
    }
16
  return 0;
17
}
18
void init()
19
{
20
  PRR &= ~(1 << PRADC);  //disable Power Reduction for ADC
21
  ADMUX = (1 << REFS0) | (1 << MUX1);  //externe Referenz und ADC Channel 2 (PA2) aktivieren
22
  _delay_ms(1);
23
  ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS1) | (1 << ADPS0); // ADC aktivieren, AD INterrupt aktivieren und prescaler 8 -> 125 kHz
24
  _delay_ms(1);
25
  ADCSRA = (1 << ADSC);          
26

27
  sei();
28
}
29

30
ISR(ADC_vect)
31
{
32
         DDRA |= (1 << PA7);
33
  PORTA |= (1 << PA7);
34
}

Ich will nach fertiger Wandlung in der ISR ein Port auf High setzen, um 
zu sehen, dass der ADC mit interrupt funktioniert. An dem port hängt 
eine LED zur Anzeige, wenn ich im main die beiden zeilen der ISR 
aufrufe, leuchtet sie. Anscheinend wird jedoch die ISR nie erreicht, 
WARUM???

Vielen Dank!
#3287717
Der Grund ist ganz simpel:
1
ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS1) | (1 << ADPS0);
2
ADCSRA = (1 << ADSC);
Was steht nach der zweiten Anweisung in ADCSRA? Setz doch vor das zweite 
= mal einen | und probiere es erneut.
Gast #3287727
Die Atmels sind nicht sonderlich vergesslich. Aus diesem Grunde ist es 
auch unnötig bei jeder Unterbrechung den Befehl:
DDRA |= (1 << PA7);
auszuführen. Einmal während der Initialisierung reicht wohl aus.

Der Befehl:
PORTA |= (1 << PA7);
setzt Dir jedes Mal den Pin A7, wobei es keinen Unterschied gibt, ob 
dies zum hundertsten oder hundertersten Mal geschieht. Auch beim 
hundertzweiten Mal tut sich von außen gesehen nicht neues ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.