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