Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1211 / 1319
(#) pajti2 válasza Droot hozzászólására (») Feb 25, 2016 /
 
Filozok egy olyanon, hogy több flash kártyát rápakolni usb meghajtásra, és ott jó tudni, hogy valami 100 mA-t eszik-e, vagy csak 10-et. Ha tényleg lenyel 100-at, hagyom is a fenébe.

De amúgy kicsit furcsa. 3.3v-on a 100 mA már 1/3 watt azon a picike vacakon. Szét kellene égnie a fenébe egy fél órás nyüstölés után, de amikor kiveszek egy 16 gigás microsd kártyát a laptopomból egyhuzamos teleírás után (kb 35-40 percig tolja), az "hideg", pedig benne volt a nagyobb SD műanyag foglalatban, nem tudhatott az olyan gyorsan hűlni.

Az sqi csak azért vetődött fel, mert ha azzal kapcsoltatok flash kártyát, akkor tuti nagy sebességgel kezeltétek. Nyilván a kártya kevesebbet eszik, ha másodpercenként 1-2 szektort bizergálsz, mintha másodpercenként sokezrével írod / olvasod.
(#) Wezuv válasza pajti2 hozzászólására (») Feb 25, 2016 /
 
Kicsit off, de szeritnem attól is függ a fogyasztás, hogy milyen flash van benne (a gyorsabbak jobban melegednek, mily meglepő)). Van egy 16G-s és egy 32G-s pendriveom, a 32-es melegszik a 16-os nem, a 16-ost 5Megával lehet írni, a 32-est 16Megával...
(#) Wezuv hozzászólása Feb 25, 2016 /
 
Van egy rossz hírem SQI ügyben. Lehet, hogy nem fog menni SD 4 bites protokollal. De még keresgélek...
A hozzászólás módosítva: Feb 25, 2016
(#) Droot válasza Wezuv hozzászólására (») Feb 25, 2016 /
 
Miért nem fog menni?

Esetleg nem tudsz valahol, egy jó library-t a PIC32MZ I2C buszhoz, hogy ne kelljen teljesen az elejéről megírnom?
(#) Wezuv válasza Droot hozzászólására (») Feb 25, 2016 /
 
Mert nem tudom, hogy lehet-e címzés nélkül használni, nem értem még az adatlapot. Itt minden adatvonal kétirányú, azaz azt is meg kell mondani az SQI-nek, hogy adásra, vagy vételre váltson. Az SD protokoll se teljesen tiszta még. Ilyet nem csináltam még és ami problémás, hogy nem is találok erről semmilyen infót, vagy példát a neten...

Sajna nem, de az MX-hez készült is jónak kéne lenni, az meg talán van a Harmony-ban (de lehet, hogy MZ-hez is van, mintha láttam volna). Ha találok valamit, jelzem (igaz, most elfoglalt vagyok, mert az MZ-hez XC32 kell, ami nekem eddig nem volt fenn, nem ismerem és küzdök vele...)
A hozzászólás módosítva: Feb 25, 2016
(#) Droot válasza Wezuv hozzászólására (») Feb 25, 2016 /
 
Én ugyan csak futólag néztem át de úgy láttam, hogy menne a dolog.

Harmony az fel van telepítve. Ezzel projektet lehet létrehozni, vagy valahol megtalálom a h és c fájlokat?
Apps/peripheral/i2c könyvtárban vagy merre keressem?
(#) killbill válasza Wezuv hozzászólására (») Feb 25, 2016 /
 
Ahogy igy atfutottam az SQI leirasat, gyanitom, hogy ezzel SD kartyat 4 bites modban nem lehet hasznalni. Ott ugyanis van meg egy ketiranyu CMD jel is, amit ez a modul nem allit elo. Marpedig az SD-nel az egy igen fontos jel, mert ezen keresztul mennek a parancsok, es ezen is jonnek vissza a valaszok. A 4 DAT labon csak az adat maga jon-megy. Egesz mas protokoll az SD, mint a soros FLASH-ek.
(#) Wezuv válasza killbill hozzászólására (») Feb 25, 2016 /
 
Nézegetem... Úgy nem menne, hogy beállítok egy tetszőleges lábat Command/Response vezérlésére és a modult akkor használom adat továbbításra, vagy vételre, ha már beállítottam a vonalak irányát? A PMP is így megy... Ami homály, az maga az SQI belső felépítése és a sok regiszterét még nem volt időm átrágni...
(#) Wezuv válasza Droot hozzászólására (») Feb 25, 2016 /
 
Nem néztem tüzetesen, de láttam a perifériákat. Készíts egy harmony projectet és állítsd be az I2C-t. Biztosan meg lehet találni az ide vonatkozó rutinokat, bár amit tudnak ezek művelni, az elég kemény!
(#) Droot válasza Wezuv hozzászólására (») Feb 25, 2016 /
 
Igen, azért kérdeztem!
(#) pajti2 válasza killbill hozzászólására (») Feb 26, 2016 /
 
Azt a cmd vonalat hogyan használja az sd protocol? Amit neten fellelni tudtam, mind csak egyszerűsített sd leírások, és ott semmi időzítési adat vagy leírás nincs a cmd használatáról. Az a cmd vonal jellegében igényli, hogy az órajellel együtt fusson 1 bit / clock pulse átviteli sebességgel, vagy csak valami jelző bit arra, hogy a data0..3 vonalak mire vannak aktuálisan használva?
(#) Wezuv válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
Nézd meg ebben: SDSpec.pdf
A cmd lábat a leírásban Command/Response funkcióval jelölik. Egyszerűen az adavonalak irányát állítja be. Minden bizonnyal a beállítás után szükséges valamennyi idő az adatforgalom megkezdése előtt, amit kísérletezéssel is ki lehet találni, de valami 6 és 14nsec körüli értékeket olvastam a CLK-hoz képest. De nem a vonalak beállására való várakozás fog lassúságot okozni, mert az irányváltások aránya időben sokkal kisebb, mint az adatoké, feltéve, ha nem egyesével összevissza címekről olvasol.
(#) killbill válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Idézet:
„Egyszerűen az adavonalak irányát állítja be.”
Ezt mibol gondolod? Azon megy a parancs es azon jon vissza a valasz. Ott vanbenne abban a leirasban, amit linkeltel. 4-1 fejezet.
(#) killbill válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
A CMD/RESP egy ketiranyu adatvezetek, a CLK-val egyutt kell hasznalni, mint a DAT labakat is. Ez mar a multimedia kartyaknal is igy volt (MC), csak azoknal 1 DAT volt, nem 4. Ezen kuldod be a parancsokat a kartyanak es itt kuldi vissza a kartya az olvasott regiszterk erteket, itt kuldi vissza a hibakodokat. Sosem gondolkodtam azon, hogy lehet-e software-bol hasznalni, mert ertelmet veszit az egesz dolog, mert lassu lesz. Akkor mar inkabb SPI-n hasznalnam az SD kartyat.
(#) Wezuv válasza killbill hozzászólására (») Feb 26, 2016 /
 
Bevallom, így tűnt logikusnak, de hogy írod, már kezd világosodni.
Azt mondod szoftverből kezelni a CMD-t lassú. Szerintem olyan kis szeletet tesz ki ez a rész, hogy elhanyagolható. Jelen esetben az is javíthat az időkön, hogy 200MHz-es PIC-el használunk.

Az viszont macerás lehet, hogy ugyanazt az órajelet kell használnia a szoftveres és a SQI vonalnak is (ha jól értem). Talán az se túl időigényes, hogy át kell konfigurálni a lábat. Az lehet esetleg probléma, ha a válasz vétele közben már adat is jönne ugyanazon órajelen. Nem sokat értettem még meg az adatlapokból időre van szükség, ami kevés van...
(#) Wezuv válasza killbill hozzászólására (») Feb 26, 2016 /
 
Igazad lesz, ezt nem lehet SQI-vel, ahogy az elején megéreztem, most már szinte biztos vagyok, hogy nem érdemes, illetve nem lehet összefésülni a kettőt. Az adatlap szerint, ha jól értelmeztem, az adatok már akkor elindulnak, amikor még a CMD vonalon javában jön vissza a válasz. Nem találtam még olyan szinkron pontot, ahol át lehetne váltani SQI-re, majd vissza. Szomorú vagyok...
(#) Wezuv válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Esetleg, ha láttok rést a falon szívesen venném! Arra gondolok, hogy szoftveresen kiadom a CMD-re a parancsokat, majd átváltok SQI-re és küldöm, vagy fogadom az adatokat, utána vissza CMD-re és lezárom a kommunkációt. Azt megtenném úgy is, hogy esetleg egy-egy response elvész. Nem tudom...
A gondom az, hogy az SPI-vel elérhető 3,125 MB/sec nagyon karcsú egy TFT-hez.
A hozzászólás módosítva: Feb 26, 2016
(#) pajti2 válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Sajnálatos eset, de szerintem sem fog menni. Ránéztem a doksira én is - több szem többet lát alapon - és ezt találtam "A command is transferred serially on the CMD line". Nem csak szimpla jelző bitnek tűnik nekem.

Azt se felejtsd el, hogy az sd reakció idői nagyon viccesek tudnak lenni. Néha jön azonnal a cucc, néha meg 100 millisec (!) késleltetés is ott van még egy class 10 kártya esetében is. Amikor a háttérben a wear leveling vacakol valamit, azt pont visszaolvasásnál teszi, nem írásnál. Az sd kártyákat nem real-time eszköznek találták ki. Ahol használják, mindenütt memória buffereken keresztül kezelik. Egy pic esetében jellemzően nincsen annyi memória, ami multimédiás adatok teljesítmény alapú kezeléséhez elég tudna lenni buffereléshez. (A pic 32mz/da családban éppen olyasmit ígértek, hogy 32 megabyte ddr ram beépítve a pic tokjába, azt azért is hajtottam annyira, hogy mi a rák van vele, de csak annyi derült ki, hogy bármi is van vele, az ebben az évben még nem fog megtörténni.)

Ha bármilyen vékony szalmaszálba hajlandó vagy belekapaszkodni, van egy 32mz-n nem kevés spi port. Használhatsz több kártyát párhuzamos üzemben, és úgy össze lehet adni az spi-k sebességét. De akkor nem egy nagy, hanem sok kicsi kártyára lesz szükséged, és ott meg elektronikai oldalon fog furcsán kinézni a történet.
(#) Wezuv válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
Köszi, hogy foglalkoztál vele! Még egy lehetőség lenne, valami interface.
(#) Droot válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Wezuv!

Beszéltünk anno az RA7785-ös controller-ről, hogy lassabb, mint az SSD. Most kipróbáltam és így van, grafikai megjelenítésekben lassabb. DMA nélkül 16 bites PMP-vel, a WAIT lábat poll-ozva egy 640x480-as képet lemértem a timer-el és kereken 3600ms alatt rajzol fel, ez 3s.

Viszont a beépített grafikai funkciói nagyon jók. Úgy láttam az ssd-ben nincsenek ilyenek. Vonal rajzoláshoz a kezdő és vég koordinátákat kell megadnom, háromszöghöz is 3 koordinátát, tud még ellipszist, kört, négyzetet és lekerekített sarkú négyzetet rajzolni, itt a rádiuszt meg lehet adni.
Ezek a grafikai elemek nagyon gyorsak.
(#) Wezuv válasza Droot hozzászólására (») Feb 26, 2016 /
 
Szerintem ez a sebesség indokolatlanul alacsony. A két vezérlő között, max kétszeres a különbség, ami azt jelenti, hogy ami nálam 2tized (MX-el!), az nálad 4 tized. Nem 3,6sec! De javaslom menjünk át az LCD-be!
A hozzászólás módosítva: Feb 26, 2016
(#) pajti2 válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
A pic32mz/ec doksi szerint tud az mz ebi-t, meg sqi-t. Lévén az ec a legújabb család, egyenlőre nincsen pic-nek sd supportja hardveresen. Az spi a leggyorsabb lehetőség.

Ami más lehetőség lenne - természetesen van - azzal még több a macera, mint a sok flash kártyás megoldással. Kell egy fpga - cpld-ben simán csak nincs elég logikai erőforrás ilyesmihez - és felhasználni azt az sd kártyával kommunikálni. Szerintem sd-hez van support xilinxéknél. Az fpga-hoz a kliens perifériát persze meg kell írni, kiképezni a kommunikációhoz a regisztereket, viszont lévén az arra van kitalálva, használni lehet tetszés szerinti pic perifériát az átvitelhez. Ami a nehéz része ennek az útnak, hogy az fpga-k többsége bga tokos, nem amatőr környezetbe való azt forrasztgatni. Még a tqg-144 lábas tokot ha egyáltalán lehetséges is felforrasztani (0.5 mm-es lábtávolság), kell hozzá egy biztos kéz, és ha mégis elrontod, temérdek sok ónpocsékolás (+ célirányos ic kiforrasztó fej) azt utána levenni a panelről úgy, hogy nem téped fel a nyákot. Ha üzleti célra készülne egy ilyesmi, és megfinanszírozható előregyártott hardver, akkor érdemes ilyesmivel pepecselni, egyébként veszett ügy.
(#) Wezuv válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
Elvileg (de ezt megint csak emlékeim szerint írom), már van SQI-s flash (utána kell nézzek, kapható-e). Ezzel lehetne a sebességet és a tárhelyet TFT (800x480) szintre emelni, hogy pár kép beférjen legalább. Létezik SDIO konverter, ami 16bites buszra illeszt, de nem kapható, még a farnellnél sem. A xilinx vonalat hanyagolom, belefáradtam...
Mekkora gáz, hogy bárhol kapsz egy SDHC olvasót gyök kettőért, de a benne lévő IC-t nem lehet megkapni. Ma szétkapom az otthonit, megnézem mi van benne!
(#) pajti2 válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
Sajnos tényleg az megy. Lassan egybeintegrálják a flasht is meg az usb asicot is, hogy a panelen csak egy fekete pacát látsz, amiből csak annyi kivezetés van, ami közvetlenül az usb csatlakozóhoz megy, és az egészet fillérekért kapod meg. De annak az a kisbetűs tartozéka, hogy csak úgy és csak arra a célra használhatod fel, amihez és ahogyan azt kitalálták. Esetleg áttérhetsz valami android boardra. Androidéknál van flash is, meg színes kijelző is. Szólok előre, kisbetűs rész ott is lesz, de az egyéni preferencia kérdése.
(#) Droot válasza Wezuv hozzászólására (») Feb 26, 2016 /
 
(#) Wezuv válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
Van ilyenem, nem játszik hardver közeliben, nekem az is kell, ezért PIC32MZ. Szép az élet...
Találtam SDIO101A-t, de nem kapni sehol, és BGA, de még a szolidabb. Alibabán mintha lenne, de nem írnak semmit, csak hogy 10dolcsi. Látatlanba nem merném, meg egyébként se jó bizonytalan forrásra építeni.
(#) Droot hozzászólása Feb 26, 2016 /
 
Valamiért a PIC32MZ2048EFH100-omon nem jól jár az egyik Timer. 1000x leellenőriztem, kiszámoltam mindent és jónak tűnik. De most lemértem 1 percet és valójában kb. 1,5 perc.

Ezek a config bitek:
  1. // DEVCFG3
  2. // USERID = No Setting
  3. #pragma config FMIIEN = ON              // Ethernet RMII/MII Enable (MII Enabled)
  4. #pragma config FETHIO = ON              // Ethernet I/O Pin Select (Default Ethernet I/O)
  5. #pragma config PGL1WAY = ON             // Permission Group Lock One Way Configuration (Allow only one reconfiguration)
  6. #pragma config PMDL1WAY = ON            // Peripheral Module Disable Configuration (Allow only one reconfiguration)
  7. #pragma config IOL1WAY = ON             // Peripheral Pin Select Configuration (Allow only one reconfiguration)
  8. #pragma config FUSBIDIO = ON            // USB USBID Selection (Controlled by the USB Module)
  9.  
  10. // DEVCFG2
  11. #pragma config FPLLIDIV = DIV_3         // System PLL Input Divider (3x Divider)
  12. #pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (5-10 MHz Input)
  13. #pragma config FPLLICLK = PLL_POSC      // System PLL Input Clock Selection (POSC is input to the System PLL)
  14. #pragma config FPLLMULT = MUL_50        // System PLL Multiplier (PLL Multiply by 50)
  15. #pragma config FPLLODIV = DIV_2         // System PLL Output Clock Divider (2x Divider)
  16. #pragma config UPLLFSEL = FREQ_24MHZ    // USB PLL Input Frequency Selection (USB PLL input is 24 MHz)
  17.  
  18. // DEVCFG1
  19. #pragma config FNOSC = SPLL             // Oscillator Selection Bits (System PLL)
  20. #pragma config DMTINTV = WIN_127_128    // DMT Count Window Interval (Window/Interval value is 127/128 counter value)
  21. #pragma config FSOSCEN = OFF            // Secondary Oscillator Enable (Disable SOSC)
  22. #pragma config IESO = ON                // Internal/External Switch Over (Enabled)
  23. #pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
  24. #pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)
  25. #pragma config FCKSM = CSECME           // Clock Switching and Monitor Selection (Clock Switch Enabled, FSCM Enabled)
  26. #pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
  27. #pragma config WDTSPGM = STOP           // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)
  28. #pragma config WINDIS = NORMAL          // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)
  29. #pragma config FWDTEN = OFF              // Watchdog Timer Enable (WDT Disabled)
  30. #pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window size is 25%)
  31. #pragma config DMTCNT = DMT31           // Deadman Timer Count Selection (2^31 (2147483648))
  32. #pragma config FDMTEN = ON              // Deadman Timer Enable (Deadman Timer is enabled)
  33.  
  34. // DEVCFG0
  35. #pragma config DEBUG = OFF              // Background Debugger Enable (Debugger is disabled)
  36. #pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
  37. #pragma config ICESEL = ICS_PGx1        // ICE/ICD Comm Channel Select (Communicate on PGEC1/PGED1)
  38. #pragma config TRCEN = ON               // Trace Enable (Trace features in the CPU are enabled)
  39. #pragma config BOOTISA = MIPS32         // Boot ISA Selection (Boot code and Exception code is MIPS32)
  40. #pragma config FECCCON = OFF_UNLOCKED   // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))
  41. #pragma config FSLEEP = OFF             // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)
  42. #pragma config DBGPER = ALLOW_PG2       // Debug Mode CPU Access Permission (Allow CPU access to Permission Group 2 permission regions)
  43. #pragma config SMCLR = MCLR_NORM        // Soft Master Clear Enable bit (MCLR pin generates a normal system Reset)
  44. #pragma config SOSCGAIN = GAIN_2X       // Secondary Oscillator Gain Control bits (2x gain setting)
  45. #pragma config SOSCBOOST = ON           // Secondary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
  46. #pragma config POSCGAIN = GAIN_2X       // Primary Oscillator Gain Control bits (2x gain setting)
  47. #pragma config POSCBOOST = ON           // Primary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
  48. #pragma config EJTAGBEN = NORMAL        // EJTAG Boot (Normal EJTAG functionality)
  49.  
  50. // DEVCP0
  51. #pragma config CP = OFF                 // Code Protect (Protection Disabled)
  52.  
  53. // SEQ3


Ez pedig a timer beállításai:
  1. //PB3SCK 32-es prescaler
  2.     PB3DIVbits.PBDIV = 31;
  3.     PB3DIVbits.ON = 1;
  4.     SLEWCON = 0x00000000;
  5.     //Timer 2 initialize for interrupt every 1ms
  6.     T2CON = 0;
  7.     T2CONbits.T32 = 0;
  8.     T2CONbits.TCS = 0;      //Fp as clock source
  9.     T2CONbits.TON = 1;      
  10.     T2CONbits.TCKPS0 = 1;   //2 prescaler
  11.     T2CONbits.TCKPS1 = 0;
  12.     T2CONbits.TCKPS2 = 0;
  13.     IFS0bits.T2IF = 0;      //Clear interrupt flag
  14.     IPC2bits.T2IP = 6;      //Interrupt priority 6
  15.     IPC2bits.T2IS = 2;      //Interrupt sub priority 2
  16.     TMR2 = 0;
  17.     PR2 = 3125;
  18.     T2CONbits.ON = 1;

A megszakítás:
  1. volatile int cnt = 0;
  2. volatile unsigned long s = 0, ms = 0;
  3.  
  4. //1ms Interrupt for delays
  5. void __ISR(_TIMER_2_VECTOR, IPL6AUTO) t23ISR()
  6. {
  7.     cnt++;
  8.     if(cnt == 65530)
  9.     {
  10.         cnt = 0;
  11.     }
  12.    
  13.     ms++;
  14.     if(ms == 100000)
  15.     {
  16.         ms = 0;
  17.     }
  18.    
  19.     IFS0bits.T2IF = 0;
  20. }


Ahogy teszteltem:
  1. init_clock();
  2.     init_io();
  3.     init_timer2();
  4.     enable_interrupts();
  5.    
  6.     tft_init();
  7.     tft_set_backlight(255);
  8.     //init_touch();
  9.  
  10.     ms=0;
  11.         tft_text_set_position(700,30);
  12.         tft_text_write("start");
  13.     while(ms <= 60000);
  14.         tft_text_set_position(700,60);
  15.         tft_text_write("stop ");

A start felirat megjelenésekor, vagyis táp ráadása után elindítottam a stoppert, majd a stop felirat kb. 1 perc 30 másodperc múlva jelent meg.
(#) pajti2 válasza Droot hozzászólására (») Feb 26, 2016 /
 
Ha az a gyanú, hogy alapvető beállításokkal van a baj, nem kellene túl sok tényezőt belekeverni a történetbe. MX-nél van a cpu0,9 regiszter (32 bites), ami fixen a rendszer órajel felével számolja az ütemeket. Elvileg MZ alatt is megvan.

Kinullázni:
  1. _CP0_SET_COUNT(0);


Értéket kiolvasni:
  1. unsigned i1= _CP0_GET_COUNT();


Csinálni egy ciklust, ami csak arra vár, mikor éri el mondjuk a 100 milliót, és felvillant egy ledet, vagy kioltja. Ha annak alapján kb stimmel az órajel időre (beállítani a villogást mondjuk 1 sec-re), akkor legalább az órajel rendben van. Ha nem, még az órajel beállítások sem stimmelnek, kár addig a timert hibáztatni.
(#) Wezuv hozzászólása Feb 26, 2016 /
 
Én meg szívok itt az MX után. Próbálom átültetni a kódokat, amik jól működnek, ekkor derül ki, hogy az MZ-re még nem implementálták a periféria headereket (nem működnek a helpben leírt dolgok, pl. opentimer2 stb.). Nagyon úgy tűnik nem is fogják, mert a Harmony van helyette, ami egy nagy kalap katyvasz. Végre hozzászoktam a kényelemhez, most mindent lehet regiszterenként. Örvendek.
(#) Droot válasza pajti2 hozzászólására (») Feb 26, 2016 /
 
Tehát a végtelenciklus előtt kinullázom, a végtelenciklusban folyamatosan figyelem, hogy nagyobb-e mint 100 millió?
A 100 millió az 1 másodperc ugye?
Xc32 alatt is működnek ezek a függvények amiket írtál?
Következő: »»   1211 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem