0
Γεια σε ολους.Εχω τον pic16f877a στα 20mhz κρυσταλλο και 115200 baud rate.Πρεπει να διαβαζω απο το A/D αναλογικο σημα μεχρι 1κhz και να το δειχνω στον υπολογιστη.Το προβλημα μου τωρα ειναι οτι μεχρι τα 66hz δειχνω σωστο σημα.Αρα απο εκει και πανω εχω λιγοτερα δειγματα.Υποψιαζομαι οτι ειναι ο τροπος που στελνω τα δεδομενα.Αυτος ειναι ο κωδικας μου.Υπαρχει τροπος να γινει πιο γρηγορος?
Κώδικας:#fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7) void main() { long binary0=0; long binary1=0; long binary2=0; float value0=0; float value1=0; float value2=0; setup_adc_ports(AN0_AN1_AN2_AN3_AN4); setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); while(TRUE){ set_adc_channel(0); //kanw dygmatolipsia apo to kanali 0 binary0=read_adc(); //diavazw ta dedomena apo thn dygmatolypsia //value0=(binary0/1023)*5.04; //metatrepw ta dedomena mou se kinyths ypodiastolhs printf("1 %Lu \n\r",binary0); //stelnw ta dedomena sthn syriakh thyra set_adc_channel(1); binary1=read_adc(); printf ("2 %Lu \n\r ",binary1); set_adc_channel(2); binary2=read_adc(); printf("3 %Lu \n\r",binary2); } }