Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1025 / 1320
(#) watt válasza Poostmaster hozzászólására (») Szept 20, 2011 /
 
Hibás a kapcsolásod. De mi lenne, ha nem offolnál tovább?
(#) trudnai válasza Poostmaster hozzászólására (») Szept 20, 2011 /
 
Idézet:
„Hogy még a LED-eket is párba kell válogatni...”


Ugye nem kotottel ket LED-et parhuzamosan 'kozos' ellenallassal?

Amugy igaza van watt mesternek, kellene kapcsolasi rajz, de nem ebben a forumban, hanem pl a PIC kezdokben...
(#) watt válasza trudnai hozzászólására (») Szept 21, 2011 /
 
Az igazság kedvéért megjegyzem, hogy egy multiplexelt kapcsolásnál minden sort nem szoktunk egy időben bekapcsolni és csodálkozni rajta, hogy nem ég minden LED! Ezért is komolytalan ez az egész itt...
(#) icserny válasza Poostmaster hozzászólására (») Szept 21, 2011 / 1
 
Idézet:
„Az oszlopok bemenetére 1-1 db 180 Ωos ellenállás van kapcsolva”
Pedig nem oszloponként, hanem ledenként kellett volna! Így egy oszlop felkapcsolásakor 4 db LED párhuzamosan kapcsolódik. De ez az Elektronika kezdő-ben is gyenge kérdés...

Mellesleg az is nonszensz, hogy amikor minden bitet '1'-be kapcsolsz, akkor a sorokat ugyan tranzisztorral húzod le, az oszlopoknál viszont egy kimenetre 4 ledet is rákapcsolsz párhuzamosan. Szerinted ott nem ugyanaz az áram folyik ki, amit az alsó oldalon a tranzisztorok elnyelnek?
(#) Stefan válasza Poostmaster hozzászólására (») Szept 21, 2011 /
 
Tipp 1: Kicsit olvass utána egy témának mielőtt nekiugrasz. A LED nél nem a feszültséget változtatjuk, hanem a kitöltési tényezőt, ezzel az áram középértékét.
Tipp 2: Még a tapasztaltabbak se esnek neki semminek "mint tót az anyjának" rajzolás nélkül.
Tipp 3: Ha viszont ennek ellenére segítséget vársz, nem várhatod el hogy szöveges formátumból kihámozzuk, azt, hogy mit kötöttél rossz helyre.
(#) Poostmaster hozzászólása Szept 21, 2011 /
 
Első pillanatban az jutott eszembe, hogy itt mindenki ledorongolt. Aztán végiggondoltam, és rájöttem, hogy most itt ebből a pár hozzászólásból nagyon sokat tanultam.
Bocsássatok meg az offolásért, ígérem ez az utolsó.
A magyarázat az, hogy igazság szerint én a PIC programozását tanulom, nem az építést. Ám az általam írt programok kipróbálásához "hevenyésztem" össze egy kis panelt, ami többféle célú algoritmus kipróbálását teszi lehetővé. Természetesen ebben a mátrixban sosem fog egyszerre világítani minden, csak az építés után úgy gondoltam, a leggyorsabb, és legegyszerűbb módja a kipróbálásnak, ha mindet egyszerre kapcsolom be. Belátom, tévedtem. Viszont megtudtam a magyarázatát az általam érdekesnek talált jelenségnek.
Ez az oka annak is, hogy ide került a kérdés. Tehettem volna a PIC kezdőbe is, de annál azért többnek gondolom a tudásom. (bár ez nagyon szubjektív.)

Köszönöm.
(#) trudnai válasza Poostmaster hozzászólására (») Szept 21, 2011 /
 
Segiteni probalunk, megha neha kicsit ravezetos modszerrel is

Amugy ezt irtad korabban (mivel nem a Valasz gombra kattintgatsz, ezert ezt is nehez volt vissza kovetni...)
Idézet:
„Nincs rajz, mert fejből csináltam.
Ezért nem is fogok neki rajzolni.”


Ez rendben van, hogy neked nem kell, de nekunk kellene, hogy lassuk mit csinaltal meg fejbol, es azzal mik az esetleges problemak

pl:
Idézet:
„Az oszlopok bemenetére 1-1 db 180 Ωos ellenállás van kapcsolva,”

Hogy vannak bekotve a LED-ek? Hogy akar ez mukodni? Az oszlopot kivalasztod (magasra emeled), majd a sorokat egyesevel aktiv magasbol aktiv alacsonyra huzod ahol a LED-nek vilagitania kell? Magyaran az egesz matrixot multiplexalod? Vagy a sorok parhzamosan lennenek vezerelbe es csak az oszlopok vannak multiplexalva?

Idézet:
„a bázisra pedig 4,7k-n keresztül jut. Több alkatrész nincs. A PORT a C, vagy D. Esetleg kevés az áram? Egyébként nagy fényerejű fehér LED-ek. A portok jók.”


Itt is megint csak kellene latni mirol beszelsz -- 1 kep feler 1000 szoval... es nem egy nagy ordongosseg ezeket lerajzolni, es akkor mar reg tullennenk az egesz ugyon, mar vigan mukodne a kijelzod
(#) watt válasza Poostmaster hozzászólására (») Szept 21, 2011 /
 
Idézet:
„igazság szerint én a PIC programozását tanulom, nem az építést.”

Ez kizáró ellentét és ide vezet ahová jutottál. Javaslom még is a kezdők topicját, mert ha nem tudod hogyan kell vezérelni egy mátrixot, akkor oda valóak a kérdéseid. Nem is beszélve arról, hogy ha nem vagy hajlandó elektronikával foglalkozni, akkor ez nem fog menni.
(#) Poostmaster hozzászólása Szept 21, 2011 /
 
Sziasztok újra.
Itt egy kódrészlet az LCD kezeléséből. Valahonnan letöltöttem, de van amit nem értek belőle. A leírás szerint a PORTE vezérli, a PORTD pedig az adatbusz.

org 0
;===============================
; Port beállítás
;
clrf PORTD
clrf PORTE
Start
bcf STATUS,RP1
bsf STATUS,RP0 ; bank1 kiválasztás
movlw D'14'
movwf ANSEL ; RA0 analóg bemenet
movlw B'11111111' ; PORTA bemenet
movwf TRISA
clrf TRISD ; PORTD kimenet
clrf TRISE ; PORTE kimenet
bcf STATUS,RP0 ; bank0 kiválasztás
;----
; LCD kijelző inicializálása
;
call Kesl
bcf PORTE,RS ; LCD parancs következik
movlw D'56' ; 38h, 8 bit interface set
call Write
call Kesl ; Busy flag olvasását "helyettesíti"
movlw D'56'
call Write
movlw D'6' ; 06h, Entry mode set: increment
call Write
movlw D'13' ; 0dh, Display on, cursor/blink on
call Write
movlw D'16' ; 10h, Display/cursor shift: cursor
call Write
movlw D'1' ; 01h, Display clear
call Write
call Kesl2 ; Busy flag olvasását "helyettesíti"
;------------

A kérdések:
1. Feltétlen szükséges a PORTA beállítása, és ha igen, miért kell a 0-nak analógnak lenni?
2. A kijelző inicializálása részben kétszer küldi ki az D'56'-ot, nem tudom miért.
(#) watt válasza Poostmaster hozzászólására (») Szept 21, 2011 /
 
Ha valaki haladó, akkor nem letölti az LCD vezérlő programot, hanem megírja maga, miután ez egy egyszerű dolog, főleg egy haladónak!
(#) ciw hozzászólása Szept 22, 2011 /
 
Üdv !

A következő problémára várnék segítséget:

A microchip féle webserverrel akadt problémám, mégpedig egy weblapról szerettem volna egy mezőbe beírt értéket feldolgozni a pic-ben.

Ez addig nagyon jól működik, míg a HTML-be be nem teszem a következőt:

  1. <div><label>Remote Port:</label>
  2. <td><input type="text" name="rip" value="~remote_ip~"></div>


A pic ben ez a rutin dolgozza fel a kérést:

  1. static HTTP_IO_RESULT HTTPPostConfig2(void)
  2. {
  3.  
  4.         BYTE *ptr;
  5.         BYTE i;
  6.  
  7.         if(curHTTP.byteCount > TCPIsGetReady(sktHTTP) + TCPGetRxFIFOFree(sktHTTP))
  8.                 goto ConfigFailure;
  9.         // Ensure that all data is waiting to be parsed.  If not, keep waiting for
  10.         // all of it to arrive.
  11.         if(TCPIsGetReady(sktHTTP) < curHTTP.byteCount)
  12.                 return HTTP_IO_NEED_DATA;
  13.         // Start out assuming that DHCP is disabled.  This is necessary since the
  14.         // browser doesn't submit this field if it is unchecked (meaning zero).  
  15.         // However, if it is checked, this will be overridden since it will be
  16.         // submitted.
  17.  
  18.         // Read all browser POST data
  19.         while(curHTTP.byteCount)
  20.         {
  21.                 // Read a form field name
  22.                 if(HTTPReadPostName(curHTTP.data, 6) != HTTP_READ_OK)
  23.                         goto ConfigFailure;
  24.                        
  25.                 // Read a form field value
  26.                 if(HTTPReadPostValue(curHTTP.data + 6, sizeof(curHTTP.data)-6-2) != HTTP_READ_OK)
  27.                         goto ConfigFailure;
  28.                        
  29.                 // Parse the value that was read
  30.                 if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"rip"))
  31.                 {// Read new static IP Address
  32.                 //      LED1_IO^=1;
  33.                         if(!StringToIPAddress(curHTTP.data+6, &LocalConfig.RemoteIP ))
  34.                                 goto ConfigFailure;
  35.                 }
  36.                 else if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"rport"))
  37.                 {// Read new static IP Address
  38. //                      if(!StringToIPAddress(curHTTP.data+6, &LocalConfig.RemotePort))
  39. //                              goto ConfigFailure;
  40.                         LED1_IO^=1;
  41.                 }              
  42.         }
  43.  
  44.         // All parsing complete!  Save new settings and force a reboot
  45. //      LED1_IO^=1;
  46.     XEEBeginWrite(sizeof(NVM_VALIDATION_STRUCT)+sizeof(AppConfig));
  47.         XEEWriteArray((BYTE*)&LocalConfig, sizeof(LOCALCONFIG));
  48.         strcpypgm2ram((char*)curHTTP.data, "/protect/conf2.htm");
  49.         curHTTP.httpStatus = HTTP_REDIRECT;            
  50.         curHTTP.httpStatus = HTTP_REDIRECT;    
  51.        
  52.         return HTTP_IO_DONE;
  53.  
  54. ConfigFailure:
  55.         lastFailure = TRUE;
  56.         strcpypgm2ram((char*)curHTTP.data, "/protect/index.htm");
  57.         curHTTP.httpStatus = HTTP_REDIRECT;            
  58. //LED1_IO^=1;
  59.         return HTTP_IO_DONE;
  60. }


Szóval egyszerűen ezt a kérést eldobja a pic és nem értem miért, a kód a ConfigFailure -re ugrik, ha az ominózus adat érkezik.
Ezt vagy a HTTPReadPostName, vagy a HTTPReadPostValue váltja ki szerintem, de nem tudom, hogy itt mi a hiba. Más adatokat is így dolgozok fel, pl RemoteIP és azt meg elfogadja.

Válaszokat előre is köszönöm.
(#) Moderátor hozzászólása Szept 22, 2011
 
A mai "szupermodern" világban, sokan azt gondolják, hogy előkapja az androidos okoskodóját, letölt rá egy két valamit, meg fog egynéhány kimustrált CD/DVD motort, egy webkamerát, némi "vasat", forraszt kettőt, s már kész is a távirányítású MSR-je (Mega Super Robot). Sajnos, a mai rohanó világban már mindent azonnal akarunk. Bemegyek a boltba, kötök egy TV előfizetést, kezembe nyomják az aktivált beltérit, a parabolaantennát. Hazamegyek, felszerelem, összedugom, s már nézem is a BL-t. Ha értek hozzá, különben várhatok 2-3 hetet, mire kijön a szerelő. Hát nem felháborító milyen sok idő? Kevesen emlékeznek már arra, hogy nem is oly régen, hónapokat kellett várni, hogy a megrendelt szuperkolor TV-t átvehessem az áruházban.

Egy szónak is száz a vége, ne rohanjunk ennyire. A tudást nem lehet megvásárolni. Lépésről lépésre, az alapoktól indulva lehet mindent elsajátítani. Ne várjuk a sült galambot. A tapasztaltabbak tanácsait pedig fogadjuk meg, ne kritizáljuk, ne durcáskodjunk. Nem csak itt a fórumon, de az életben sem fog ez jóra vezetni.

Köszönöm a megértést!
(#) trudnai válasza (») Szept 22, 2011 /
 
Idézet:
„Kevesen emlékeznek már arra, hogy nem is oly régen, hónapokat kellett várni, hogy a megrendelt szuperkolor TV-t átvehessem az áruházban.”


No meg eveket egy-egy telefon elofizetesre
(#) potyo válasza ciw hozzászólására (») Szept 22, 2011 /
 
Idézet:
  1. <div><label>Remote Port:</label>
  2. <td><input type="text" name="rip" value="~remote_ip~"></div>


Ezzel az a gond, hogy ez html szempontból nem megfelelő. Az a
ott nagyon nemjó helyen van. De ez inkább csak a böngésző számára jelent problémát.

A konkrét problémához: nincs debuggered? Ha nincs, tegyél pár ledet a pic lábaira, és mindegyik goto Configfailure előtt bekapcsolod az egyiket. Így legalább látod, hogy melyik gotora futott rá.
(#) ciw válasza potyo hozzászólására (») Szept 22, 2011 /
 
Az a baj, a debuggerem nem ott áll meg ahol kellene(néha csinálja, meg sokszor nem tud debug módba lépni).
Kipróbálom ledekkel, bár ha megvan, hogy hol vérzik el, akkor sem sokat érek vele, mert nem tudom, hogy mit csináljak.
Mert a többi mező ugyanígy működik és azok meg jók.
Gondolom a HTTPReadPostName-ben kellene lennie az "rport"-nak, a HTTPReadPostValue-ben meg a beírt értéknek?
(#) potyo válasza ciw hozzászólására (») Szept 22, 2011 /
 
Akkor előszöris derítsd ki, hogy miért nem megy a debugger rendesen.

Az régebben volt, hogy nem ott állt meg debuggoláskor, ahová a breakpointot tette az ember, hanem egy sorral lejjebb, de úgy vettem észre, hogy az újabb mplabokban ez javítva lett. De mindenesetre beszúrsz néhány Nop(); utasítást a BYTE i; sor után, ezekre teszel breakpointot, akkor utána léptetheted F8-al, hogy lásd, mibe megy bele és mibe nem. Valamint az optimalizálásokat kapcsold ki, mert egyes optimalizálások használatával az mplab nem tudja forráskódszinten követni, hogy hol tart épp a kontroller.
(#) ciw válasza potyo hozzászólására (») Szept 22, 2011 /
 
Ok, jó ötlet, az optimalizálásra nem is gondoltam, az be van kapcsolva. Hátha anélkül megy!
Közben próbálom a microchippel kicseréltetni a tönkrement ICD2-t.
A chipcad, ajánlotta a PICKIT3-at, állítólag ugyanazt meg tudom csinálni vele mint az ICD2-vel, még talán többet is és állítólag jobb is. Bár akkor nem értem, hogy miért az ICD2 a drágább. :nemtudom:
(#) trudnai válasza ciw hozzászólására (») Szept 22, 2011 /
 
Ez sajnos nem igaz - az ICD2 egy kifutott termek, ICD3 az igazi. A PicKit2 es 3 egyreszt nem produktiv termek (hobbi celokra lett kitalalva), masreszt ez abban is megnyilvanul, hogy nem tud az eszkozzel megbizhato modon konnektalni -- egy ICD3-am pl sokkal kevesebb gondod lehet, mint egy PicKit3-al. Ez utobbirol jot meg senkitol sem hallottam, csak panaszt, en szerintem kidobott penz... Ha nagyon nincs penzed akkor PicKit2-t vegyel, az is hobbi celokra van, de eleg kiforrott es nagyobb a tudasa, mint a Pk3-nak (kiveve az ujabb chipeket amiket lehet az mar nem ismer).
(#) ciw válasza trudnai hozzászólására (») Szept 22, 2011 /
 
Kösz a véleményt, gyanús is volt az árából, hogy valami nem stimmel vele. Meglátom mi lesz az ICD2-vel, leadtam a microchip-nek a hibajelentést.Addig használom az utángyártottat.
(#) potyo válasza ciw hozzászólására (») Szept 22, 2011 /
 
Erről majd számolj be, hogy mit válaszolnak.

Az a baj, hogy én is gondban vagyok az égetőkkel. Ugye van egy utángyártott ICD2-m, ami jó, viszont kifutott. Most vettem egy PIC32MX795F512L-t, amit már nem tudok vele használni. Pickit2 hivatalosan nem tudja kezelni (égetés még megoldható, ha jól emlékszem, icserny számolt be róla), de debuggolás nem. Emiatt marad ICD3/Pickit2. Előbbi drága, 50000Ft körül van a chipcadnél, ennyit nekem nem ér, mivel csak hobbi célra használom. Marad a Pickit3, 12500Ft körül, viszont ez meg ugye problémás...
(#) ciw válasza potyo hozzászólására (») Szept 22, 2011 /
 
Írom amint van valami válasz.

A debuggolás megy optimalizálás nélkül.
a curHTTP.data = "rpor"
ez kevés, de nem tudom, hogy hová tünik a többi, mert ezt elvileg a TCP csatornából nyeri közvetlen.
(#) ciw válasza trudnai hozzászólására (») Szept 22, 2011 /
 
Közben az rport-ot átneveztem remp-re a html-ben és a pic-ben is és így működik.

Pont az ilyen hibákat nem szeretem. mert nem tudom mi okozza és később is előjöhet.
(#) potyo válasza ciw hozzászólására (») Szept 22, 2011 /
 
Nem volt olyan véletlenül, hogy amikor rport-ra átírtad, akkor nem generáltattad újra a szükséges fájlokat? Nem emlékszem pontosan, de mintha valami ilyesmit kellene csinálni...
(#) ciw válasza potyo hozzászólására (») Szept 22, 2011 /
 
Nem már 2 monitoron folyamatosan nézem a fil-okat, ráadásul az új verziójú stack-ben már be lehet állítani, hogy hova tegye a printHTTP.h fájlt és az MPLAB azonnal rámozdul.

Leírásban nem találtam, hogy a HTTPReadPostName milyen hosszú lehet, mert az rport volt a leghosszabb NAME a html-ben a többi mind reövidebb.

OK. kipróbáltam ha a HTTPReadPostName hoszabb mint 4 byte akkor elszáll.

Mondjuk ha ez le lett volna írva egy kommentbe, vagy a help-ben akkor kb másfél hét szívást meg 3 honlap elkészítést megspóroltam volna. De lehet, hogy én nem voltam elég figyelmes és valahol tényleg leírták.
(az apróbetűs részben).

Köszönöm a segítségeteket és hogy időt szakítottatok a problémám megoldására!
(#) Attila86 hozzászólása Szept 23, 2011 /
 
Trudnai írta:
Idézet:
„mint egy PicKit3-al. Ez utobbirol jot meg senkitol sem hallottam, csak panaszt, en szerintem kidobott penz”

Potyo írta:
Idézet:
„Marad a Pickit3, 12500Ft körül, viszont ez meg ugye problémás...”

Mi a baj a PICkit3-al? Én tök jól elvagyok vele...
(#) Mezoas válasza Attila86 hozzászólására (») Szept 23, 2011 /
 
Pedig a PK2 után használgatva nekem egy ócskaságnak tűnik. Még jó, hogy csak egy klónt vettem, sokat nem fogom nyüstölni.
(#) watt válasza Attila86 hozzászólására (») Szept 23, 2011 /
 
Sokat írtunk erről korábban, keress rá, mert rengeteg indok van, még videó is van róla!
(#) Attila86 válasza watt hozzászólására (») Szept 23, 2011 /
 
Ja hogy a LED-eknek amik rajta vannak mások a funkciói, meg hogy minden mikrovezérlőtípus-váltáskor újraírja a PIC-et benne...
Hát nem tudom, én programozásra, debuggolásra használom, gyakorlatilag ugyan arra mint a PICkit2-t és eddig ugyan olyan jól használhatónak találtam. Mondjuk a 3 nem tud logikai analizátorként működni (még) de ezt a funkciót is csak egyszer próbáltam, akkor se működött a PICkit2-nél mert lefagyott a program egyfolytában.
Tudjátok miket készítettem eddig, azokra tapasztalatból állítom hogy ugyan olyan jó a PICkit3 mint a PICkit2. Sőt sokkal jobb, mert az újfajta típusokat is tudja kezelni.
(#) watt válasza Attila86 hozzászólására (») Szept 23, 2011 /
 
Nekem mindegy, még nem volt szükségem olyan típusra, amit a PK2 nem kezelt.
(#) Ideiglenes válasza watt hozzászólására (») Szept 23, 2011 /
 
Nekem azért tetszene, ha az MplabX használná a PICKIT2-t a 16F1938-as vezérlőhöz. Szerencsére csak egy ALT+TAB és parancssorból indítom a pk2cmd-t. De azért jobb lett volna ha csak egy gombnyomásra megy, mint ahogyan megszoktam a PIKlab esetében. Ha az SDCC és a gputils csomagok támogatnák rendesen ezt a vezérlőtípust, nem is váltottam volna az MplabX-re.

Más... és talán hasznos is lehet: Nagyjából egy napja szenvedek a analog rutinom áttételével, ami 16F690-esen meg 16F887-esen szépen működött, no meg még 16F1829-en is, de ezen a 16F1938-ason nem. Úgy néz ki, mintha az ADC menet közben megszűnne létezni. Leegyszerűsítettem a rutint csak az AN0 bemenetre fókuszálva, de így sem tökéletes:
  1. if( MASODPERC ) Tizedes_Pont ^= 0b00000001;
  2.         if( TIZEDSEC )
  3.         {
  4.             ADCON0 = 0;
  5.             ADCON1 = 0b00110000;
  6.             ADCON0 = 0b00000001;
  7.            
  8.             PIR1bits.ADIF = 0;
  9.             ADCON0bits.ADGO = 1;        
  10.         }
  11.  
  12.         if( PIR1bits.ADIF == 1 )
  13.         {
  14.             ADCON0 = 0;
  15.             Elso_Jegy = ADRESH ;
  16.             Masodik_Jegy =  ADRESH >> 4;
  17.             PIR1bits.ADIF = 0;
  18.         }

A módszer nagyjából az, hogy mielőtt elkezdeném az AD átalakítást, kikapcsolom az ADC-t. Logikus. Nem? Nem. De eddig ez a megoldás mutatkozik a legmegbízhatóbbnak számomra. A tizedespont villogtatása a "debug" funkció, ez mutatja, hogy a vezérlőprogram működik, csak az AD átalakítás nem hajlandó újabb friss eredményt adni.
Elolvastam az ERRATA-t, ami taglalja is a jelenséget. Rögtön meg is nyugodtam, hogy nem én vagyok a ludas a hibajelenségben, ami a leírás szerint 8MHz-es frekvencia felett jelentkezik, ha az ADC számára dedikált ( fenntartott, megépített ) RC oszcillátor üzemel ütemadóként az átalakításhoz. Ilyenkor előfordul, hogy az ADCON0 regiszter ADGO bitje nem törlődik, illetve a PIR1 regiszter ADIF bitje nem billen be és ad ADRES regiszterpár sem frissül. Ha ez bekövetkezik, akkor talán csak egy reset billenti helyre az ADC-t. ( Ezt nem próbálgattam. )
Az ERRATA-ban olvasható háromféle megoldás, mindhárom megmosolyogtatott:
1. Az átalakítás idejére vegyük vissza a rendszer órajelet.
2. Az átalakítás idejére altassuk el a vezérlőt. ( És mi van a többi funkcióval ilyenkor? )
3. A Tad lejárta előtt szoftverből töröljük az ADGO bitet, mielőtt az átalakítás túlmenne a 11xTad időn és 1/2 Tad idővel az automatikus befejezése előtt. ( Ez is nagyon esélyes, ha belső RC oszcillátort használsz 4xPLL-el. )
Szóval viccesek ezek a fiúk, de igazából elolvashattam volna a doksikat, mielőtt erre a vezérlőre esik a választásom.
Következő: »»   1025 / 1320
Bejelentkezés

Belépés

» Elfelejtett jelszó
» Regisztráció
Hirdetés
A használat feltételeiAdatvédelemGY.I.K., Használati útmutató és szabályokImpresszumElosztóHiba jelentése
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