PIC16F15323 / ADC / sleep
Jan Waclawek
konfera na efton.sk
Pondělí Srpen 12 16:00:25 CEST 2019
[preposielam]
Ahoj,
ked som dnes uz zabil den hw-listom, tak by som Vam pan Vicek rad dal
do pozornosti nasledujucu pasaz z Vasho kodu:
procedure Interrupt;
begin
if (PIR1.ADIF = 1) then
//if (PIR9.TMR6IF = 1) then
begin
SetBit(LATC,5);
Inc(poc);
rv_an0 := ADRESH shl 8 + ADRESL;
rv_an0_flt := ADFLTRH shl 8 + ADFLTRL;
rv_an0_acc := ADACCH shl 8 + ADACCL;
SendRS_word(poc);UART1_Write_Text('....');
SendRS_byte(ADCNT);UART1_Write_Text('....');
SendRS_word(rv_an0);UART1_Write_Text('....');
SendRS_word(rv_an0_acc);UART1_Write_Text('....');
SendRS_word(rv_an0_flt);UART1_Write_Text('....');
Uart1_CRLF;
ClearBit(LATC,5);
//Delay_ms(25);
ClearBit(PIR1, ADIF);
//ClearBit(PIR9,TMR6IF);
end;
end;
Ako prve je velmi dobrym programatorskym zvykom zavesit do
periodickeho IRQ rutiny vypisu premennych na seriovy port a funkciu
Delay()... Ja viem, poviete, ze 1sec... Ale takto sa to skratka
nerobi.
Ako druhe ja som mal na mysli interrupt takyto:
if(tmr2if == 1)
tmr2if = 0;
GODONE=1;
blinkLED1();
return;
if(adif== 1)
adif=0;
ADC_read_registers();
blinkLED2();
return;
A pokial toto nebude fungovat, tak dalsie ani neskusajte... Tie ledky
musia blikat v poradi LED1, LED2... Takto to chodi na klasickom
hw_16874. Najprv si rozchodte na tom vasom hw tuto sekvenciu a potom
mozeme riesit hardwarove featury 18...k42. A nezabudnite si najprv
nastavit 250us a tim2. To urobite v grafickom klikatku MCC na par
klikov... A samozrejme osciloskop...
A.
Další informace o konferenci Hw-list