mikrocontroller.net

Forum: Compiler & IDEs Analog komparator - Interrupt


Autor: Vergleichender (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
#include <avr/io.h>
#include <avr/interrupt.h>
#include <lcd.h>
#include <util/delay.h>
#include <compat/deprecated.h>

volatile uint16_t counter = 0;

void delay_ms(int delay) {
        int i;
        for (i=0;i<=delay;i++) {
                _delay_ms(1);
        }
}

void init_usart(void) 
{ 
 uint8_t HighByte = (416 >> 8);
 uint8_t LowByte = 416 & 0xFF;
 UBRRL |= LowByte;
 UBRRH |= HighByte;
 UCSRB = (1<<TXEN) | (1<<RXEN); 
 UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); 
} 

void send_char(unsigned char s) 
{ 
 while (!(UCSRA & (1<<UDRE))); 
 UDR = s; 
} 

void send_string(char *s) 
{ 
 while(*s != '\0') 
  { 
   send_char(*s); 
   s++; 
  } 
} 



SIGNAL(SIG_ANA_COMP)
{
  //TCNT1 * 0.000004;
  send_string("Interrupt");
}

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

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

  while(1)
  {
    PORTD &= ~(1<<PD5);  
    delay_ms(1000);
    get_cap();
    delay_ms(1000);
    
  }

}
Gruß
Vergleichender

Autor: Vergleichender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach vllt noch was zum Setup:
ISt ein Atmega8, an AIN1 liegen 2.5 Volt an, AIN0 halte ich mit der Hand 
an 5V um einen Interrupt auszulösen. Quarzfrequenz 16MHZ

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was gibt der Compiler denn für Warnungen oder Fehler aus?

Autor: Vergleichender (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Vergleichender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ok, dass wusste ich nicht, ich werds mal versuchen, wenns nicht 
klappt melde ich mich noch einmal. danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.