Elektronika.lt
 2025 m. gruodžio 25 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 2025 12 25, 00:54. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Plonybės su PIC'ais
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 22
Pereiti prie Atgal  1, 2
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Plonybės su PIC'ais
PranešimasParašytas: 2012 05 18, 14:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Saugos_kodas rašo:
Ačiū paaiškinimus dėl IF sąlygos.

Šiek tiek apie jūsų siūlomą kodą.

Kad aiškiau būtų interpretuoti, tai numečiau puslapį. Čia matosi numeruotos eilutės. Taigi, 11 kodo eilutėje deaktyvuoju pertraukčių bitus tam, kad neįvyktų pertrauktis ją aptarnaujant. Kaip ir pastebėjote, išeidamas iš pertraukties 23 eil. juos vėl įjungiu. Kodėl siūlote to nedaryti?

14 eil. komentare užduodate klausimą. Taigi, atsakymas: kad UART'u išsiųsti binary vertę, naudoju puslapyje nurodytais trumpiniais. Na, sakykim, kad išsiųsti, 15 = 0x0F reikia klaviaturoje spausti {CTRL+O}, kad siųsti 31 = 0x1F reikia spausti {CTRL+_}, tai laikyčiau kad ZODIS perduodu binary formate.

Ar kartias sizeoff() funkcija negražina rezervuoto bitų kiekio? Kalbu apie 21 eil. Man kažkodėl atrodo, jei unsigned char arr[8], tai sizeoff{arr} = 16. Tas pats 39 eil. Ar aš šioje vietoje klystu?

Kaip ten bebūtų, mikrovaldiklis nereaguoja į aktyvių kanalų pokyčius.

sizeof() grazina masyvo apimti baitais !
sizeof(unsigned char) yra 1
sizeof(unsigned char arr[8]) yra 8
jei gauni ne taip, reiskia pas tave ne char, o pvz short, kuris gali buti tiek 8bitu tiek 16bitu tiek 32bitu, priklausomai nuo cpu tipo !

numeruojant kanalus 1..n atrandame galimybe 0 pazymeti masyvo pabaiga, bet zymeti reikia tik tada, kai kanalu prirenki maziau nei masyvo dydis, kad zodis=255 atveju netektu arr[p]=0, kai p reikesme tuo metu jau bus 9 ir ivyks neteisingas atminties perrasymas

del pertraukciu, tai ju isvis nera prasmes drausti, jei kodas korektiskas ir reikia tik tuos drausti, kurie gali sutrikdyti darba, bet tai retas ir atskiras klausimas, tuo tarpu bandai uzdrausti viska ir visiskai bereikalingai.

CTRL+kombinacija gerai, bet nepatogi
yra ALT+kodas mazojoje klavoje
taciau ir tai nera patogu
geriau yra padaryti perduodamu skaitmenu dorokle
jei sutinki '0'..'9' -
Kodas:

c=USART_Read();
if ((c>='0')&&(c<='9')) sk=sk*10+c-'0';
else
    {
        // dorojam sk
        sk=0;
    }
 Plonybės su PIC'ais
PranešimasParašytas: 2012 05 19, 18:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Saugos_kodas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Dėl sixeof() aišku. Dėkoju kad pataisėte. Su pertrauktimis irgi paaiškėjo. Palikau tik pertraukties flag'o išvalymą pertraukties pabaigoje.

Vistik neaišku kodėl mikrovaldiklis neišsiunčia reikšmių. Skripte klaidos kaip ir nematau, bet matyt kažką pražiūriu.

Dabar galvoju, kad reikia plačiau apibūdinti sistemą. Tada bus lengviau paaiškinti kodėl reikia vieno ar kito programinio dalykėlio. Reikalas tas, kad projektuojuosi bevielio ryšio sistemėlę, su keletu nutolusių jutiklių. Tinklo koordinatorius jungiamas prie kompiuterio per (USB -RS232), nutolę duomenų fiksavimo moduliai (jutikliai) jam siunčia informaciją. Koordinatorius perduoda jutikliams veikimo komanda, kanalu veikimo "zodi" ir dvi laiko vertes. Laiko vertės ne didesnės nei 100 ms, taigi vėl telpu į vieną baitą kiekvienai laiko vertei. Šiuos 4 B info koordinatorius gauna iš kompiuterio. Kodas parodo mano įsivaizduojamą modulio veikimo algoritmuką. Visgi negaliu gauti norimo rezultato. Nelabai suprantu kodėl, bet nesuveikia norimi kanalai.

{EDITED...} Sugalvojau kad darysiu tik 4 adc įėjimo kanalus. Ir nevargsiu su pastangomis iš vieno B info dekoduoti aktyviųjų kanalų reikšmes. Uartu nusiųsiu visų jų numerius ir tiek. Bus paprasčiau. Bet kokiu atveju, įdėja lieka atvira, tad jei kokių minčių atsiras dėl pirminės užduoties -prašom pasidalinti.
 Plonybės su PIC'ais
PranešimasParašytas: 2012 05 19, 21:12 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pertrauktyje tai ten susvaigai kap turi but Very Happy

atmink, niekada nestabdyk cpu pertrauktyje ir nevesk laukti kazkokiu duomenu, kuriu jis gali ir negauti niekada;
Kodas:

register unsigned char i=0;
unsigned char rx[4];

void interupt(void)
{
    if (PIR1.RCIF)
    {
        if (i>=sizeof(rx)) i=0; // apsisaugom masyvo perpildymo
        if ((rx[i++]=UART1_Read())==124)
        {
            if (i==4) // 124 turi buti 4 baitas
            {
                //  tolesni veiksmai su rx[0..3]
                i=0;
            }
        }
        PIR1.RCIF=0;
    }
}


siaip, teisybes delei, pas tave labai grubi sinchronizacija, todel karts nuo karto tau teks siusti 124,124,124,124 ir juos eliminuoti is apdorojimo arba skaiciuoti rx_time_out.
normaliai dirbant reikia sinchro_byte arba packet_start, packet_data, CRC
jei duomenu kiekis kintamas - pries packet_data eina packet_len
visi simboliai packet_len, packet_data, CRC dazniausiai perduodami hex simboliniam formate, kad nesutaptu su synchro ar packet_start simboliais
sudetingesnis paketas tiesiog butinas, jei zadi naudoti negarantuota transporta, pvz bevieli rysi !

suprask, realaus laiko sistemos - ne sestoku informatikos pamokele, kur gali svaigt kiek tik panorejes ir vistiek atsiskaitysi, pramoneje dazniausiai daroma rimtai, kad veiktu ir galvos neskaudetu.
 Plonybės su PIC'ais
PranešimasParašytas: 2012 05 19, 22:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Saugos_kodas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ačiū dėl išsakytų pastebėjimų. Išties aš nežinau tokios esminės valdiklių abėcėlės, tad dėl tos pertraukties, kai jau pasakėte, pasidaro akivaizdu, kad taip netinka daryti, kaip kad mano kode.

Būtų labai puiku jei tuos pramonėje taikomus sprendimus "kurie veikia ir galvos neskauda" ypač dėl realaus laiko ryšio sistemų pakaišiotumėt dažniau. Duomenis žadu apdoroti real-time arba kiek įmanoma sparčiau (na keletas ms ne bėda) ir atvaizduoti ekrane. Python programavimo kalba rašausi GUI, kuriuo valdyčiau jutiklių tinklą. Tikrumos dėlei, jutikliuose bevielio ryšio perdavimo chip'as su mikrovaldikliu kalbėsis per SPI, bet čia testavimui dabar krapštausi su RS232, todėl, kad tinklo koordinatorius bus jungiamas per šią sąsają ir priims iš PC valdymo komandas, kurias siųs jutikliams, bei perdavinės PC'iukui iš jų gautus ADC duomenis.
Kiek plačiau apie bevielio ryšio modulius. Tai ZigBee protokolo IEEE802.15.4 standarto versija - MiWi moduliukai iš MicroChip. Atsiradus poreikiui, pakomentuočiau plačiau apie juos.

Jie turi tam tikrą Stack'ą, ir numatytas siunčiamų žinučių rūšis. Na, konkrečiau, tai yra 4žinutės (MAC komandos, Data, Acknowledgement, Beacon) Visose šiose žinutėse yra kadrai, apibūdinantys jūsų išsakytus baitus. Kalbu apie (sinchro, packet ir etc.) Principas toks, kad programiniame kode jutikliui bus SPI sąsajos generuojama pertrauktis, kai priima info iš koordinatoriau. Koordinatoriuje veiks SPI ir UART'o pertrauktis. SPI pertrauktį koordinatoriuje generuos atėję duomenys iš jutiklių, UART'o pertrauktį generuos PC, kai koordinatoriui bus perduodamos valdymo komandos. Šiuo metu noriu atidirbti valdymo komandu perdavimo būdą, todėl ir knisuosi su tuo kanalų valdymo žodžiu.
 Plonybės su PIC'ais
PranešimasParašytas: 2012 05 20, 00:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
tai kad naudoji zigbee ir SPI - teisingas poziuris, nes daug ka atlieka jau pati aparatura, tad protokoline dali gali mazinti iki minimumo.

siaip pamasciau, o kam tau isvis per ta arr[8] kazka daryt ?

gauni byte(channels) arba ERROR
zigbee programinini kad interrupta duotu tik kai atlikta operacija (priimtas paketas, issiustas paketas, klaida)

pertrauktyje pasitikrini kas per ivykis ir gauni iskarto visa paketa arba atsizymi statusa

toliau:
Kodas:

unsigned char channels=0, n=0,i,t;
unsigned char/*arba int*/ rez[8];//cia pagal kanalu poreiki ir reikiama tiksluma

if (t=channels) {
    for (i=0; (t); t>>1,i++)
      if (t&1) rez[n++]=getADC(i);
}
if (n) {
    spi_SendPacket((char *)&rez, n*sizeof(rez[0])); //su galimais protokolo apreminimais
    n=0;
}


kazko labiau padeti daba neitin galiu, nes pats turiu skubiu projektu
nebent pakonsultuotum ant smugio NETBEANS+ANDROID
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2
 
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“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

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
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
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama