Hallo,
Bin neu in der PIC Welt und programmiere mit CCS.
Habe nun ein kleines testprogramm geschrieben mit dem ich die Weite von Rechteckimpulsen messen möchte.
Mein Code:
#include "D:\softwareprojekte\PIC\TEST\20M.h"
#include <stdlib.h>
int s,v;
int8 t;
int32 d;
#INT_TIMER0
void tower()
{
d++;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
while(1)
{
if(input(PIN_B0))
{
output_high(PIN_A0);
d=0;
set_timer0(0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while(input(PIN_B0))
{
//printf(".");
}
t=get_timer0();
printf("\r\n");
printf("%ld",d);
printf(" * ");
printf("%d",t);
printf(" # ");
printf(get_timer0());
printf("\n");
output_low(PIN_A0);
}
output_low(PIN_A0);
output_high(PIN_C4);
}
}
Das Problem ist aber nun, dass mir die Ausgabe printf("%d",t); teilweise NEGATIVE Werte liefert

Ansonsten scheint es zu funktionieren, bei einer Impulsbreite von 988µsec ist d immer =19 was in etwa der Impulsbreite entspricht, aber warum liefert printf("%d",t); einen negativen Wert???
Vielen Dank für eure Hilfe
martin