Gast
#367164
Hi
Nach Stundenlagem Suchen und vielen Testläufen habe ich jetzt nie Nase
voll und schreib euch :).
Also bin am Input Capture versuchen. Will die Zeit zwischen zwei
Impulsen aus einem Sensor. Doch was ich auch versuche er springt
einfach nicht in die Interrupt Routine.
PROG:
#include <stdlib.h>
#include <lcd.h>
#include <lcd.c>
#include <avr/interrupt.h>
#include <avr/signal.h>
unsigned int time = 0; //
unsigned int temp = 0; //
char buffer[20]; //buffer
SIGNAL(SIG_INPUT_CAPTURE1)
{
temp = ICR1;
//TCNT1 = 0;
}
void lcd(void)
{
itoa( time , buffer, 10); //wandle integer in string
lcd_gotoxy(0,1); // gehe zu LCD Position X Y
lcd_puts(buffer); //schreibe auf den LCD den Inhalt von Var buffer
}
int main(void)
{
TCCR1B |= (1<<CS10) | (1<<CS12); // Timer CPU-Takt / 1024
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_init(LCD_DISP_ON);
lcd_puts("Impulszeit\n");
sei();
for(;;)
{
time = temp;
lcd(); // gehe in die Funktion LCD
}
}
So da ist das übel. GCC Compeliert auch alles ohne zu mucken. Der LCD
zeigt auch den Text aber die Zahl verändert sich nicht. Das bedeutet er
geht nicht in die Routine.
MFG
Daniel