Elektronika.lt
 2024 m. gruodžio 2 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 02, 14:49. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » pic16f84a ir pwm
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 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 16, 21:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
mariuse3
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki,
Esu pradedantysis programuotojas šioje srityje. ir noriu išmoksi kuo daugiau Smile
Tokius paprastus kodus kaip ledų mirgsėjimas, eilutės begiojimas ir panašiai rašyti jau moku ir jie veikia ant pic16f84a. Bet tačiau noriu išmoksti ir pwm funkcijų. tik niekur nerandu normalių pavyzdžių, kad tiktu mano picui.
Taigi, noriu paprašyti Jūsų pagalbos. Gal galėtumėte parašyti kokį paprastą pavyzdžiuką kaip tas pwm`as veikia?
Būčiau labai dėkingas.

Pagarbiai, Marijus V.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 16, 23:21 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sadivas
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kad ir pradedantis, geriau kokį naujesnį pasiimk. Bus ir pigesnis, ir geresnis, ir labiau pritaikytas C kalbai, kurios vis vien ateity reiks mokintis, jei norėsi tobulėti.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 16, 23:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
1-as budas:
Kodas:

//pataisytas ir isbandytas MicroC + simuliatorius

//PORTA - OUT, RA0 - PWM out
//PORTB - in, RB0..RB7 - duty cycle

unsigned short oldb;
unsigned short duty;

void interrupt()                 // Timer0_interrupt
{
    TMR0 = duty;                 //timer0 skaiciuos arba pradini duty
    duty ^= 0xFF;                //arba 256-duty likuti taktu
    PORTA.F0 ^= 0x01;            //invertuojam RA0
    INTCON.T0IF = 0;             //cia nepamenu, bet gali ir nereikti
}

void main()
{
    unsigned short temp;
    oldb = PORTB;                 //isimenam esama PORTB
    duty = oldb;                  //nustatom duty pagal isiminta PORTB
    TRISA &= 0xFE;                //RA0 - PWM out
    INTCON.GIE = 1;               //GlobalInterruptEnable
    OPTION_REG.T0CS = 0;          //Timer0 = mode timer
    INTCON.T0IE = 1;              //Timer0InterruptEnable
    while (1)
    {
        temp = PORTB;              //nuskaitom PORTB
        if (temp != oldb)          //jei pakito:
        {
            duty = temp;           //nustatom nauja duty
            oldb = temp;           //isimenam
         }
     }
}


dar galima pasirinkti prescaler arba ji uzdrausti.

2-as budas:
Kodas:

unsigned short duty[] = {51, 102, 153, 204};
unsigned short counter = 0;

void interrupt()
{
    counter++;
    if (duty[0] < counter) PORTA.F0 = 1;
        else PORTA.F0 = 0;
    if (duty[1] < counter) PORTA.F1 = 1;
        else PORTA.F1 = 0;
    if (duty[2] < counter) PORTA.F2 = 1;
        else PORTA.F2 = 0;
    if (duty[3] < counter) PORTA.F3 = 1;
        else PORTA.F3 = 0;
}

void main()
{
     unsigned short temp, oldb = PORTB;
     TRISA &= 0xF0;
     INTCON.GIE = 1;
     OPTION_REG.T0CS = 0;
     INTCON.T0IE = 1;
     TMR0 = 10;        //cia norimas greitis
     while (1)
     {
          temp = PORTB;
          if (oldb != temp)
          {
                oldb = temp;
                if ((temp & 0x01) == 0) duty[0]--;
                if ((temp & 0x02) == 0) duty[0]++;
                if ((temp & 0x04) == 0) duty[1]--;
                if ((temp & 0x08) == 0) duty[1]++;
                if ((temp & 0x10) == 0) duty[2]--;
                if ((temp & 0x20) == 0) duty[2]++;
                if ((temp & 0x40) == 0) duty[3]--;
                if ((temp & 0x80) == 0) duty[3]++;
           }
      }
}


Paskutinį kartą redagavo AlgisL, 2012 03 17, 14:06. Redaguota 3 kartus(ų)
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 09:02 Pranešti apie taisyklių pažeidimą Atsakyti su citata
mariuse3
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Dėkui, aš programuoju su C kalba, o dabar kai turiu jau PIC16f84a tai ką jau padarysi, ir pasimokinsiu ant šito. O dėl šitų pwm kodų kur davei, tai kompiliuojant errorus mėto Smile

Pagarbiai, Marijus V.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 13:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
biski pataisiu klaidas, nes rasiau is atminties ir netikrinau, juolab Microchip C18 nekompiliuoja 12/16 bitu picams.
MicroC as nenaudoju, tad teko parsigrusti ir isbandyti.
daiktas smagus, bet brangus, be to nevirskina praktiskai jokiu standartiniu c++ operatoriu Sad
netgi prie if !(temp & 0x01) duty[x]--; prisikabino Very Happy
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 14:55 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
AlgisL rašo:
netgi prie if !(temp & 0x01) duty[x]--; prisikabino Very Happy


Tai kad cia akivaizdi sintakses klaida Laughing
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 15:05 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
na, nevisi kompiliatoriai NOT reikalauja ikelti i skliaustu vidu.

taigis, siuo atveju veikia if (!(temp & 0x01)) duty[0]--;

be to, dar kabinejasi prie:
unsigned short oldb = PORTB;
jam matai tik konstanta gali taip aprasyt ir viskas, nors kad ir DevC++ virskina tai be trabliemu.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 18:36 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
AlgisL rašo:
na, nevisi kompiliatoriai NOT reikalauja ikelti i skliaustu vidu.

taigis, siuo atveju veikia if (!(temp & 0x01)) duty[0]--;

be to, dar kabinejasi prie:
unsigned short oldb = PORTB;
jam matai tik konstanta gali taip aprasyt ir viskas, nors kad ir DevC++ virskina tai be trabliemu.


Ka kiti kompileriai virskina, tai cia nebent ju kreivi fycersai, o gal labiau reiktu sakyt - bugai. GCC to nevirskina ir pagal standarta tai nera leidziama. Naturalu kad NORMALUS kompileriai neleidzia issi... Po to problema buna, kai su tais durnais kompileriais programeriai ismoksta dirbt, o kai reikia su normaliu sukompiliuot tai prasideda grybu karas iki plauku rovimo.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 19:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
na ir kokie gi cia tokie "fycersai" - isanksto inicializuotos atminties palaikymas, tai tik archainiai kompileriai to nesugeba, ta sugeba net priestvaninis assembleris Very Happy

o ir kokia prasme NOT operatoriu butinai apskliausti ? as nematau jokios prasmes, ypac kad jis turi aukstesni prioriteta pries visus kitus operatorius.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 17, 20:48 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
AlgisL rašo:
na ir kokie gi cia tokie "fycersai" - isanksto inicializuotos atminties palaikymas, tai tik archainiai kompileriai to nesugeba, ta sugeba net priestvaninis assembleris Very Happy


Tai vat butent tai ir yra nesamone, nes logiskai skaitant koda, susidaro dviguba nuomone: ar tu nori ta kintamaji priskirt tam registrui ir atsinaujinancioms jo reiksmems, ar tu nori priskirt ta reiksme tik inicializacijos metu.

AlgisL rašo:

o ir kokia prasme NOT operatoriu butinai apskliausti ? as nematau jokios prasmes, ypac kad jis turi aukstesni prioriteta pries visus kitus operatorius.


O tai kam tada isvis po salygu ir f-ju skliaustus det? gal del to, kad tokia ta c kalbos sintakse, nemanai? Smile
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 18, 10:06 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Socrates rašo:
AlgisL rašo:
na ir kokie gi cia tokie "fycersai" - isanksto inicializuotos atminties palaikymas, tai tik archainiai kompileriai to nesugeba, ta sugeba net priestvaninis assembleris Very Happy


Tai vat butent tai ir yra nesamone, nes logiskai skaitant koda, susidaro dviguba nuomone: ar tu nori ta kintamaji priskirt tam registrui ir atsinaujinancioms jo reiksmems, ar tu nori priskirt ta reiksme tik inicializacijos metu.

AlgisL rašo:

o ir kokia prasme NOT operatoriu butinai apskliausti ? as nematau jokios prasmes, ypac kad jis turi aukstesni prioriteta pries visus kitus operatorius.


O tai kam tada isvis po salygu ir f-ju skliaustus det? gal del to, kad tokia ta c kalbos sintakse, nemanai? Smile


susidaro vaizdelis, kad ponulis profesionalas maiso kintamuju deklaracija su veiksmu deklaracija. vienu atveju aprasyme dalyvauja kintamojo tipas ir paskui kintamuju isvardiijimas su galima pradine inicializacija,o kitu atveju naudojamas raktinis zodis #define

kas del apskliaudimo, tai suprantu kai sklaiustai keicia veiksmu seka ar atskiria funkcijas bei proceduras, taciau kai jau ir operstorius reikia isskirdineti skliaustais tai jau pypiec, gal tada absoliuciai visus operatorius pradedam reikalauti apskliausti, pvz:
vietoje a=PORTA, reikalaukim rasyti (a=PORTA) ir t.t. Very Happy
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 18, 16:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Nelabai matau prasmes toliau diskutuoti su nekompetetingu zmogum.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 19, 18:45 Pranešti apie taisyklių pažeidimą Atsakyti su citata
andriusa
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Socrates rašo:
Nelabai matau prasmes toliau diskutuoti su nekompetetingu zmogum.


Susitiko du C-istai Very Happy Autoriui - pavyzdys parašytas assembleriu netinka? Nedomina mašininės kalbos mokėjimas?
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 19, 19:43 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
galima ir asmu, bet kruskis ten su atminties bankais, pastoviai sek destination ir t.t.
aisku toks trumpas kodas nesudarytu sunkumu.
 pic16f84a ir pwm
PranešimasParašytas: 2012 03 19, 19:59 Pranešti apie taisyklių pažeidimą Atsakyti su citata
andriusa
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Bankai tėra du pas šį PIC. Perėjimas į kitą banką viena eilutė.
BSF STATUS,5 arba BCF STATUS,5

Kas per destination?
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  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

GENERAL FINANCING BANKAS

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
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