Forum: Mikrocontroller und Digitale Elektronik ADC Interrupt wird nicht ausgelöst - ATMEGA8


von Dav!d (Gast)


Lesenswert?

Hallo Leute,

Ich hatte die letzten Tage ne Menge Spaß mit meiner ersten 
Mikrocontroller-Platine. Nur will jetzt der ADC nicht so ganz...

Problem (Vermutung):
Nachdem der ADC fertig ist wird das Interrupt nicht ausgeführt. Zum Test 
wollte ich einfach im Interrupt-Teil mal meine LED auf PINB2 
einschalten, die bleibt aber aus und auch im Simulator springt mir mein 
Programm nicht in den ISR-Teil, sondern bleibt im main. Warum?

Wen's interessiert hier mein Schaltplan im Anhang:
Beitrag "Programmieren schlägt fehl - Anfängerfrage"

Hier mein Code:
1
#include <avr/io.h>
2
#include <stdlib.h>
3
#include <avr/interrupt.h>
4
5
int main(void)
6
{
7
  DDRB |= 1<<PINB2;
8
  
9
  //ADC Enable
10
  ADCSRA |= 1<<ADEN;
11
  
12
  //Prescaler /16
13
  ADCSRA |= 1<<ADPS2;
14
  
15
  //Linksausrichtung
16
  ADMUX |= 1<<ADLAR;
17
  
18
  //Referenzspannung = AVCC
19
  ADMUX |= 1<<REFS0;
20
  
21
  sei();
22
  
23
  //Interrupt aktivieren
24
  ADCSRA |= ADIE;
25
26
  //Start first conversion
27
  ADCSRA |= 1<<ADSC;
28
  
29
  
30
  while(1)
31
  {
32
  }
33
}
34
35
ISR(ADC_vect)
36
{
37
  PORTB |= 1<<PINB2;
38
39
  //Start next conversion
40
  ADCSRA |= 1<<ADSC;
41
}

von katastrophenheonz (Gast)


Lesenswert?

//Interrupt aktivieren
  ADCSRA |= 1<<ADIE;

von Dav!d (Gast)


Lesenswert?

Ach du Sch.... und ich hab gestern über ne Stunde vor meinem Code 
gesessen und den Fehler gesucht.

Danke, jetzt gehts. =) =) =)

von Uwe (de0508)


Lesenswert?

Hallo,

wo wird der ADC (ADCW) ausgelesen ?

Was sagt Dir das Datenblatt, wenn Du das nicht machst ?

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.