 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 12 19, 03:48. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » PWM PIC ir Micro C
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 2 iš 2 Pereiti prie Atgal 1, 2 |
|
 |
PWM PIC ir Micro C |
Parašytas: 2015 11 22, 20:53 |
|
|
|
|
| sopkls rašo: |
| Negaliu niekuo daugiau padėti. Paaiškinau kaip tas softwarinis pwm veikia, veikimo algoritmą apibūdinau. Tas septynias eilutes software pwm veikimui teks parašyti pačiam. |
Suprantu kodėl... Ačiu ir už tai. Viską ant lėkštutės gauti ir nenoriu. Šį tą sugalvojau, papiešiu kodą paeksperimentuosiu ir pranešiu kas gavosi...  |
|
|
|
|
|
 |
 |
PWM PIC ir Micro C |
Parašytas: 2015 12 01, 12:54 |
|
|
|
|
Kiek apsiprates su hardwariniu PWM nutariau iš naujo imtis software PWM ant 629 , dabar viskas atrodo daug paprasčiau
Ant virtualaus osciloskopo matosi, kad kartu keičiasi ir amplitudė, ko nepastebėjau žaisdamas su hardwariniu PWM...
//PIC12F629 software PWM
// CONFIG : $2007 : 0x31D4
unsigned int i, PWM_fade=200;
sbit Led1 at GP2_bit;
void Delay(int num){ // The delay function
// OPTION_REG = 0b00000000 ;
CMCON = 7; // Comparator OFF
TRISIO = 0b00111001 ;
while(num>0)
num--;
}
void main() {
while(1){
for (i = 0; i <= PWM_fade; i++){ //Led1 fade in; Led2 fade out;
Led1 = 1;
Led2 = 0;
Delay(PWM_fade - i);
Led1 = 0;
Led2 = 1;
Delay(i);
}
for (i = 0; i <= PWM_fade; i++){ //Led2 fade in; Led1 fade out;
Led1 = 0;
Led2 = 1;
Delay(PWM_fade - i);
Led1 = 1;
Led2 = 0;
Delay(i);
}
}
}
edit
kitas pwm fade variantas, generatorius dirba pagal fuse nustaytu dažniu
//PIC12F629 software pwm fade
// CONFIG : $2007 : 0x31D4
int i,t;
sbit Led at GP2_bit;
void main(){
CMCON = 7; // Comparator OFF
TRISIO = 0b00111011 ;
while(1) {
for(i=0;i<255;i++)
{
led=1;
delay_cyc(i);
led=0;
delay_cyc(t--);
}
t=0;
for(i=255;i>=0;i--)
{
led=1;
delay_cyc(i);
led=0;
delay_cyc(t++);
}
}
}
Galėtumėt pagelbėti dėl sintaksės...
Kaip reikėtu rašyti, kad pakeisti generatoriaus dažnį, nekeičiant fuse ?
jeigu rašau t=500; tai dažnis nesikeičia... |
|
|
|
|
|
 |
 |
PWM PIC ir Micro C |
Parašytas: 2015 12 05, 20:24 |
|
|
|
|
Ateičiai jeigu kam bus įdomu paeksperimentuoti papiešiau variable hardware PWM ant PIC12F683 microC
//CONFIG : $2007 : 0x0FD4
unsigned short new_DC, current_DC ;
sbit UP at GP4_bit;
sbit DOWN at GP5_bit;
sbit M1 at GP3_bit;
sbit M2 at GP1_bit;
char state;
void debounce(){
Delay_ms(20);
}
void main() {
ADCON0 = 0; // all pins digital
ANSEL = 0; // all pins digital
CMCON0 = 7; // Comparators off.
OPTION_REG = 0b00000000 ; //pull up on exept gp3
TRISIO = 0b00111011 ;
PWM1_Init(5000); // PWM module initialization (5KHz)
new_DC = 0; // Initial value of variable Duty Cycle
current_DC = 0;
PWM1_Start(); // Start PWM1 module with Zero DC
PWM1_Set_Duty(current_DC);
do {
if (!UP){
debounce();
if (new_DC < 255)
new_DC = new_DC + 15 ; // didinam po 15
}
if (!DOWN) {
debounce();
if (new_DC !=0)
new_DC= new_DC - 15 ; // mazinam po 15
}
if (!M2) { //fiksuotos reikšmės
debounce();
switch( state ){
case 1: new_DC=50; break;
case 2: new_DC=100; break;
case 3: new_DC=150; break;
case 4: new_DC=200; break;
case 5: new_DC=255; break;
case 0: new_DC=0; break;
}
if( state<5 ) state++; else state=0;
delay_ms(10);
}
if (!M1) { //reset
debounce();
new_DC = 0 , state =0;
}
if (current_DC != new_DC) {
current_DC = new_DC ;
PWM1_Set_Duty(current_DC); // Change the current DC to new value
}
} while(1);
} // END main() |
|
|
|
|
|
 |
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |