Elektronika.lt
 2024 m. gruodžio 27 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 2024 12 27, 15:19. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Pulse Width Modulation - C kalba...
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 13
Pereiti prie 1, 2, 3  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 17:40 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kodas:
unsigned short int i = 0;
void PWM(unsigned short int pwp) //0/40=0% 10/30=25% 20/20=50% 30/10=75% 40/0=100% 25kHz PWM
{
  unsigned short int on = ceil((0,4*pwp));
  unsigned short int off = (40 - on);
  GPIO = 0xFF;
  Delay_us(on);
  GPIO = 0;
  Delay_us(off);
}
void main()
{
  TRISIO = 0;
  while(i < 100)
  {
    i++;
    PWM(i);
  }
}

užkniso tos visos PWM bibliotekos galvoju pats pasirašysiu vieną funkciją ir nebus problemų.. tai va bet problemų yra Smile
Delay_us reikalauja konstantos.. tai čia nelabai tinka, kaip dar galima užlaikymą padaryt?
radau tokią funkciją mikroC:
Citata:
Prototype void Delay_Cyc(unsigned Cycles_div_by_10);

Returns Nothing.

Description Creates a delay based on MCU clock. Delay lasts for 10 times the input parameter in MCU cycles.

Note that Delay_Cyc is library function rather than a built-in routine; it is presented in this topic for the sake of convenience.

Requires Nothing.

Example Delay_Cyc(10); /* Hundred MCU cycles pause */

bet nelabai supratau kiek laiko ji sustabdo?

Ir kas priklausuo nuo PWM dažnio? pvz 50hz 5khz 35khz ir pan..?
Ir dar koks yra vidinis PIC12F629 oscilatorius ar kaip ten jis? kiek Mhz 4 ar 8? Rolling Eyes
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 18:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
sunku suprasti tavo programa.

jai del uzdelsimo tai padaryk koki tuscia cikla.
pvz

for(n=0,n<time,n++){}

aisku uzdelsimas nenuspejamas. teks eksperimentuoti
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 19:13 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Taigi čia paprasčiausias PWM Rolling Eyes
tik vat man nepatinka, kad ceil((0,4*pwp)); funkcija užima 80% PIC'o atminties Surprised negi nėra kokių gudresnių suapvalinimo funkcijų? Confused
o kaip padaryt uždelsima 1ciklo t.y. 0,25us? jeigu uC sukasi 4Mhz greičiu...
nenaudojant for.. Smile
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 19:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
ka tas ceil daro?

siaip procesorius jun sveikais skaiciais skaiciuoja, taip kad nera ka ten apvalinti. ir nemanau kad tinka dauginti is 0.4 pries dauginat tai bus suapvalinta iki 0 arba 1

reikia pwp * 4 / 10, jokiu budu ne: pwp / 10 * 4

del uzdelsimo ant 4mhz minimalus uzdelsimas 1us
tai padarys komanda nop
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 19:41 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
ceil apvalina Very Happy mikroC gudrybės.. Smile
blin nežinojau, kad reik tik sveikus sk rašyt Smile

bet juk 1/4000000 = 0.25us
tai gaunas, kad NOP uždelsimas yra 4 ciklai..
ar aš kažką netaip supratau? Smile

beja kaip įterp asm?
for(int i=0,i<us,i++)
asm
{
NOP
}
gausis kas nors? Rolling Eyes
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 19:53 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
atsimink kad pic procesoriams reikia 4 taktu vienai komandai.
jie labai leti.

jei nori nesveikus skaicius naudoti reikia naudoti float tipa,
programos dydis momentaliai padides nuo 100 iki 500baitu. o jei dar daugyba dalyba panaudosi tai net nesitikek sutalpinti i 1 kb
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 21:57 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kodas:
int i;
void Delay(int us)
{
  for(i=0;i<us;i++)
  asm{
    NOP
  }
}
void main()
{
  TRISIO = 0;
  GPIO = 0xFF;
  for(i=0;i<10;i++)
  {
    GPIO = 0xFF;
    Delay_ms(100);
    GPIO = 0;
    Delay_ms(100);
  }
  while(1)
  {
    for(i=0;i<20000;i++)
    {
      GPIO = 0xFF;
      Delay(10);
      GPIO = 0;
      Delay(10);
    }
    Delay_ms(100);
    for(i=0;i<20000;i++)
    {
      GPIO = 0xFF;
      Delay(5);
      GPIO = 0;
      Delay(15);
    }
    Delay_ms(100);
    for(i=0;i<20000;i++)
    {
      GPIO = 0xFF;
      Delay_us(1);
      GPIO = 0;
      Delay_us(19);
    }
    Delay_ms(100);
    for(i=0;i<20000;i++)
    {
      GPIO = 0xFF;
      Delay_us(17);
      GPIO = 0;
      Delay_us(3);
    }
    Delay_ms(100);
    for(i=0;i<20000;i++)
    {
      GPIO = 0xFF;
      //Delay_us(0);
      GPIO = 0;
      Delay_us(20);
    }
    Delay_ms(100);
  }
}

kas gali čia būt negerai?
kodas biški kvailai atrodo bet px tvarkysiu tada kai veiks taip kaip reikia Smile
Ta Delay funkcija vietoj Delay_us bet nelabai veikia Rolling Eyes
Viskas pastringa kai pradeda suktis pirmas for ciklas esantis While(1) cikle.. pavargau jau aš čia su tuo PIC'u terliotis.. reikai daryt pertrauka Confused

čia 50kHz PWM'as pagal įdėją turėtų būt persijunginėjantis 50% 25% 5% 85% 0% ir vėl iš pradžių Smile

tai va rašykit kas negerai.. ačiū Rolling Eyes
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 22:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
o ka tu cia isvis darai, ar cai tokia myskle atsopeti ka daro tavo programa
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 07, 22:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Išpradžių pradeda mirgsėt LED kas 100ms kad žinot ar išviso šitas aparatas veikia..
poto pradeda suktis while ciklas ir įsijungia 50kHz PWM'as ir persijunginėja diodų ryškumas 50% 25% 5% 85% 0% ir t.t. su funkcija Delay_us veikia, bet kai įkišau Delay nebeveikia Confused
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 12:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
valdaz
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
o tam tavo pic'e taimeris kaip pwm neveikia? su softwariniu pwm geresniu rezultatu ir neverta tyketis tuo labiau ant 50khz, nuo daznio priklauso pulsaciju lygis po integratoriaus kadangi siuo atveju integruoja zmogaus akis tai i khz neverta lyst
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 12:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
mikroC kompiliatorius turi kažkokią PWM biblioteką, bet ant PIC12F629 nenori pasileist rašo "T2CON not found"...
O su timeriu nelabai įsivaizduoju kaip turėtų atrodyt.. gerai būtų, kad kas nors C pavyzdį kokį įmestų Confused
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 12:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
su taimeriu ne c kalba esme, o registrus nustatyti tinkamai.
kokie reigstrai as nezinau,
cia reikia konkretu datasheeta skaityti.
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 13:10 Pranešti apie taisyklių pažeidimą Atsakyti su citata
valdaz
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
t2con cia matyt timer 2 konfiguravimo registras, kuris kaip pwm veikia, kurio tavo pic'e ner.
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 13:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
edvintas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kodas:
char counter;
void interrupt()
{
  counter++;                // increment value of counter on every interrupt
  TMR0   = 96;
  INTCON = 0x20;             // set T0IE, claer T0IF
}
void main() {
  OPTION_REG = 0x84;          // assign prescaler to TMR0
  TRISIO     =   0;           // designate gpio as output
  GPIO       = 0xFF;          // initialize gpio
  counter     =   0;          // initialize counter
  TMR0       =  96;
  INTCON     = 0xA0;          // enable TMRO interrupt
  while(1)
  {
    if (counter > 222) GPIO  = 0;
    else GPIO  = 255;
  }
}

Pagaliau radau kažkokį pvz su timeriu...
iš jo lyg ir bus nesunku pwm pagamint.. su if (counter > 222) reguliuosis pulso plotis.. tik vat reikia išsiaiškint kaip pwm dažnis nusistato.. nes dabar tai truputį per lėtas.. apie 1Hz Rolling Eyes

tai va kaip pakeist dažnį?
 Pulse Width Modulation - C kalba...
PranešimasParašytas: 2006 07 08, 14:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
niekam netinka ta programa, ziauriai leta bus. Ir siaip net labai kvailai padaryta.

geriausia naudoti aparatrini PWM, nes kitaip nieko daugiau procesorius negales veikti.

ant atmega buna nuo vieno iki keliu tokiu isejimu, kaip del pic neaisku.
bet irgi turi tureti kazka panasaus.

is esmes ten labai lengva naudoti ta pwm, irasai i registra maksimalu taimerio laika, ir toliau tik belieka irasyti i dar viena registra koki skaiciu pasiekus isjungti arba ijungti isejimo porta.


jei nori programinio pwm, irgi galima. bet pertraukimu naudoti cia nelabai ises jei reikia grecio.

va kaip reikia pakeisti ta programa.
{
if (TMR0 > 222) GPIO = 0;
else GPIO = 255;
}

ir atjungti pertraukimus.
arba gaklima ir biski kitaip, bet cia sunku staigiai sugalvoti
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2, 3  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
VAT calculator
VAT number check, What is VAT, How much is VAT
LEGO
Mänguköök, mudelautod, nukuvanker
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
GTA 6 Weapons
GTA 6 Characters, GTA 6 Map, GTA 6 Vehicles
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama