Analog komparator - Interrupt

Gast #1241893
Lesenswert?

Hallo,
ich versuche gerade den Analog Komparator zum laufen zu kriegen, hab die 
Bits so gesetzt wie es im Datenbaltt steht, aber leider wird die ISR nie 
angesprungen...
Sieht von euch jemand den Fehler?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <lcd.h>
4
#include <util/delay.h>
5
#include <compat/deprecated.h>
6

7
volatile uint16_t counter = 0;
8

9
void delay_ms(int delay) {
10
        int i;
11
        for (i=0;i<=delay;i++) {
12
                _delay_ms(1);
13
        }
14
}
15

16
void init_usart(void) 
17
{ 
18
 uint8_t HighByte = (416 >> 8);
19
 uint8_t LowByte = 416 & 0xFF;
20
 UBRRL |= LowByte;
21
 UBRRH |= HighByte;
22
 UCSRB = (1<<TXEN) | (1<<RXEN); 
23
 UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); 
24
} 
25

26
void send_char(unsigned char s) 
27
{ 
28
 while (!(UCSRA & (1<<UDRE))); 
29
 UDR = s; 
30
} 
31

32
void send_string(char *s) 
33
{ 
34
 while(*s != '\0') 
35
  { 
36
   send_char(*s); 
37
   s++; 
38
  } 
39
} 
40

41

42

43
SIGNAL(SIG_ANA_COMP)
44
{
45
  //TCNT1 * 0.000004;
46
  send_string("Interrupt");
47
}
48

49
get_cap()
50
{
51
  
52
  TCNT1 = 0x00;    // Timerregister 0 setzen
53
  PORTD |= (1<<PD5);  // High setzen um Kondensator zu laden
54
  send_string("Die Kapazität beträgt:\n\n");
55
}
56

57
int main(void)
58
{
59
 sei();
60
 init_usart();
61
 DDRD |= (1<<PD5);
62
 DDRD &= ~(1<<PD7) | ~(1<<PD6);
63
 TCCR1B = (1 << CS10) | (1 << CS11);  //Prescaler 64
64
 ACSR |= (1<<ACIE) | (1<<ACIS0) | (1<<ACIS1); //Interrupt enable rising edges
65

66
  while(1)
67
  {
68
    PORTD &= ~(1<<PD5);  
69
    delay_ms(1000);
70
    get_cap();
71
    delay_ms(1000);
72
    
73
  }
74

75
}
Gruß
Vergleichender
Gast #1241932
Lesenswert?

sender.c:43: warning: 'SIG_ANA_COMP' appears to be a misspelled signal 
handler
sender.c:50: warning: return type defaults to 'int'
sender.c:50: warning: function declaration isn't a prototype
sender.c: In function 'get_cap':
sender.c:55: warning: control reaches end of non-void function

Habe das mit dem misspelled signal handler gar nicht gesehen, aber so 
ist der doch deklariert im Datenblatt??
Gast #1241940
Lesenswert?

Angenommen du verwendest AVR-Studio mit gcc:
- auf das + vor external dependencies klicken und die iom8.h öffnen
- einfach mal durchsuchen nach Interrupt vectors
- den richtigen rauspicken und schon klappts

die andere Warnung vlt noch mit einem void wegmachen, die werden ja 
nicht zum Spass ausgegeben ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren