73,6 → 73,7 |
int8 perioda; |
int8 razeni; |
int8 uclanku; |
int16 ble; |
|
setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_1152MS); |
setup_timer_1(T1_DISABLED); |
114,11 → 115,11 |
// Precti trimry |
set_adc_channel(PWM); // Zjisteni nastaveni PWM |
delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku |
perioda=(read_adc()>>1)+40; // rozsah: 40 az 167 |
perioda=(read_adc()>>2)+40; // rozsah: 40 az 103 |
|
set_adc_channel(ROZJEZD); // Zjisteni nastaveni rozjezdu |
delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku |
razeni=read_adc()>>1; // rozsah: 0 az 127 |
razeni=read_adc()>>3; // rozsah: 0 az 31 |
|
// Rozjeti menice |
set_pwm1_duty(0); // Zastav PWM, aby slo nastavit jinou frekvenci |
131,65 → 132,34 |
// } while (input(SW1)); // Je zapnut servisni mod? SW1(OFF)=ANO |
// port_b_pullups(FALSE); // Vypni pullupy, aby se setrilo energii |
|
// Regulace nabíjení |
// zmereni napeti na clancich |
output_high(REFPWR); // Prepni AD na mereni napeti clanku |
set_adc_channel(NAPETI); // Prepni Zmer napeti clanku |
delay_us(50); // Pockej na prepnuti kanalu A/D prevodniku |
for(n=1;n<=10;n++) |
{ |
// Zmer napeti (aktualni zatizeni clanku) |
uclanku=read_adc(); |
// Uprav parametry menice |
if (uclanku>105) |
{ |
perioda++; |
} |
else |
{ |
perioda--; |
} |
set_pwm1_duty(0); // Zastav PWM, aby slo nastavit jinou frekvenci |
setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda |
set_pwm1_duty(DUTY2); // PWM pro zatizeni clanku pri jedne 500W zarovce |
delay_ms(100); |
} |
output_low(REFPWR); |
uclanku=read_adc(); |
output_low(REFPWR); // odpoj odpor pro mereni napeti |
|
// posli telemetrii |
sprintf(AXstring,"p=%u r=%u u=%u", perioda, razeni, uclanku); // Convert DATA to String. |
SendPacket(&AXstring[0]); |
|
delay_ms(13000); // Pockame 14s |
delay_ms(14000); // Pockame do 14.5s |
|
// rozjezd |
SSPSTAT = 0; // inicializace SPI jednotky |
SSPCON1 = 0x22; // SPI OSC/64 |
MotorPattern=0x02; // prvni data pro vyslani |
SSPBUF=MotorPattern; |
enable_interrupts(global); |
enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP |
// rozjezd |
for(ble=1;ble<=1000;ble++) |
{ |
for(n=0;n<=razeni;n++) |
{ |
output_high(MOTOR); |
delay_us(ble); |
output_low(MOTOR); |
delay_us(1000-ble); |
} |
} |
|
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu |
{ |
MotorPattern=Pattern[n]; |
delay_ms(razeni); // Pockej na dalsi razeni |
}; |
SSPSTAT = 0; |
SSPCON1 = 0; // SPI stop |
disable_interrupts(INT_SSP); // zastav preruseni od SSP |
|
// jedem co to da |
output_high(MOTOR); |
|
/* |
if (TRUE) // Venkovni jizda? |
{ |
delay_ms(5000); // Venku muzeme jet 5s |
set_pwm1_duty(0); // Zastav menic |
// output_low(MOTOR); // Zastav motor |
while(TRUE) restart_wdt(); // Cekej porad |
}; |
delay_ms(3000); |
*/ |
delay_ms(1300); // Nemeli bysme jet dele nez 1,3s :-) |
output_low(MOTOR); // Zastav motor |
// Menic je stale zapnut a zatezuje clanky |