Hallo ihr alle,
ich versuche mittels Timer0 Impulse zu zählen und bei einer bestimmten Anzahl ein Pin auf High zu setzten. (PIC 12F629 4MHz intern)
Ich habe mal probiert, das folgender maßen zu lösen. In der ISR habe ich einen Zähler den ich jedes Mal beim Aufruf um einen erhöhe. Außerhalb der ISR frage ich dann ab, ob der Zähler den Wert 25 erreicht hat. Ist das der Fall, setze ich den Zähler wieder auf Null. Jetzt wollte ich in der festlegten Zeit, den int_ext beim L_H Übergang benutzen, um bei einer bestimmten Anzahl von Impulsen Pin_A1 zu setzen. Doch irgendwie gelinkt es mir noch nicht richtig. Außerdem habe ich noch Probleme mit Set_tris. Könnte ich da noch ein wenig Hilfe bekommen.
long int count;
int zaehler;
#int_ext
Hundemist()
{
count++;
}
#int_RTCC
RTCC_isr()
{
zaehler++;
}
void main()
{
int i;
set_timer0(130);
set_tris_a(1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_EXT);
enable_interrupts(INT_RTCC);
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_32);
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
ext_int_edge(L_TO_H);
enable_interrupts(INT_EXT);
enable_interrupts(global);
count =0;
zaehler = 0;
while (1)
{
if (zaehler >= 25)
{
disable_interrupts(INT_EXT);
disable_interrupts(INT_RTCC);
disable_interrupts(global);
delay_ms(1);
if (count >= 100)
{
output_high (Pin_A1);
delay_ms (500); delay_ms (500);
output_low (Pin_A1);
}
zaehler =0;
count =0;
enable_interrupts(INT_RTCC);
enable_interrupts(global);
enable_interrupts(INT_EXT);
delay_ms(1);
set_timer0(130);
}
}
}