Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   346 / 840
(#) TavIR-AVR válasza zombee hozzászólására (») Júl 31, 2011 /
 
MAX3002 : Ret-nél, farnellnél van....

És működik is a programozó ISP, TPI és PDI segítségével is....
(#) zombee válasza TavIR-AVR hozzászólására (») Júl 31, 2011 /
 
Ja azt nem mondtam hogy TPI-n és PDI-n ne működne, bár eddig az ISP mellett csak a TPI-t(6 lábú ATTiny-k)
mellett próbáltam, illetve egy vásárlóm szólt hogy PDI-n(ATXMega) is kiválóan működik.
TPI, ATTiny10: Persze mindjárt egy olyan programot kellett írnom ahol a RESET láb is kellett volna, és persze hogy rossz volt a program így újra kellett (volna) programozni. RESET láb letiltva, de semmi gond, ezzel a programozóval nagyfeszezni is lehet! Csak egy optocsatoló és egy 12V-os táp kell!
(#) mario1111 hozzászólása Aug 2, 2011 /
 
Üdv!

Egy elég súlyos problémával küzdök és a szakik tanácsára szorulok. Adott egy beágyazott rendszer. Elég komplex( kb 13000 sor). Egy ATMEGA128-as proci van benne, amihez i2c-n kapcsolódik egy qt60160-as kapacitív billentyű ic és egy eeprom. A gond az,h a cucc pár óránként lefagy. Gondolkodok ,h hogyan valósítsam meg benne a watchdogot, de vannak benne hosszabban futó dolgok és nehéz lenne felmérni a futás időt... Viszont azt vettem észre, hogy lefagyáskor a billentyűre nem reagál és SCL láb 0 V volt az SDA meg 5V. Arra gondoltam,h valószínű az i2c kommunikációban történik valami gebasz és ott a kódban tényleg van while. Lehetséges-e az hogy a kommunikációban valami véletlen folytán előáll egy olyan dolog,h a billentyű IC és a proci is a másikra vár és ez miatt lesz fagyás? Egy vezetékkel egy pillanatra lehúztam az SDA lábat, amitől újra működni kezdett a cucc. Valami megoldást tudtok javasolni?

Márió
(#) zolee1209 válasza mario1111 hozzászólására (») Aug 2, 2011 /
 
Ilyen nekem is előfordult, csak I2C-s hőmérő esetén. Vagy akkor fagyott ki, ha valami zavar rákerült a buszra, vagy pedig lehúztam a szenzort. Visszatéve nem működött tovább. Sajnos nem tudtam jó hibakezelést csinálni... Ha lehetséges, próbáld meg csökkenteni a zavarlehetőségeket, esetleg valahogy árnyékolni a buszt, vagy a felhúzóellenállásokat csökkenteni.
(#) mario1111 válasza zolee1209 hozzászólására (») Aug 2, 2011 /
 
Én olyasmire gondoltam, hogy átírom valahogy az I2C-s függvényt és ahol while-al vár egy regiszter bitjére ott berakok vm timeoutot. Számol valami relatív nagy számig, ami alatt tuti meg kellene jönnie a jelzésnek. Ha nem jön, akkor meg magától kiugrik. Max kis helytelen működés és megy tovább. Most megvárom míg még egyszer elhalálozik, aztán újra tesztelem ezt a "lehúzom az SDA" módszert és ha megy, akkor belenyúlok a szoftverbe.
(#) zombee válasza mario1111 hozzászólására (») Aug 2, 2011 /
 
Hello!

Ahol a while részek vannak, oda kell beletenni egy timeout-számolós részt. Most nem szúrnám be a könyvtárat amit saját magam írtam, de a lényeg hogy Atmel esetében 3 műveletnél kell várakozni a megfelelő flag átkapcsolására: START, WRITE, READ. Csak a STOP esetében nem kell semmire sem várni. DE! START esetén meg kell várni az előző STOP befejeződését ha még tart. Erre is lehet timeout. Így néz ki az én START függvényem:
  1. byte i2c_start()
  2. {
  3.         //megvárja az előző "STOP condition" végrehajtását!
  4.         for(byte i=0; (TWCR & (1<<TWSTO))&& (i<I2C_TIMEOUT); i++) _delay_us(1);
  5.         //adatátvitel indul!
  6.         TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
  7.         for(byte i=0; (!(TWCR & (1<<TWINT)))&& (i<I2C_TIMEOUT); i++) _delay_us(1);
  8.         return TWSR & 0xF8;             //'TW_START'
  9. }
(#) merlingerin hozzászólása Aug 2, 2011 /
 
Sziasztok!

90s2313 helyett betehetek mindenféle sw módosítás nélkül ATTINY2313-at?

erről a kapcsolásról lenne szó:
Bővebben: Link

Köszönöm!
(#) zombee válasza merlingerin hozzászólására (») Aug 2, 2011 /
 
Elvileg igen. A kódot azért nem árt újrafordítani.
(#) TavIR-AVR válasza zombee hozzászólására (») Aug 3, 2011 /
 
1:1 csereszabatos. A kód is mehet rá, nem kell újrafordítani.
A biztosítékbiteknél van némi eltérés:
- ATTIny2313 esetén órajelforrást beállítani.


Kész
(#) zsezse444 válasza sikolymester hozzászólására (») Aug 3, 2011 /
 
Sziasztok! Talán emlékszik még valaki az atmega168 kizárás (#1032133 - #1032487). Megpróbáltam a debugWIRE-on keresztül beférkőzni, mert HVPP-n csatlakozva úgy tűnt a reset lábat átkapcsoltam debugWIRE-ra. Viszont teljesen össze-vissza olvasta ki a device id-t, kb 10-20× kellett olvasni mire a megfelelőt olvasta ki. Mindegy, ugyanígy legalább 10-20× megpróbáltam átírni a FUSE biteket a megfelelőre. Mindíg OK volt az írás de a verify failed. A végén ott is hagytam. Közben megérkezett egy STK500 "klón", ki akartam próbálni és persze az idegkárosodott Atmega168 volt kéznél még mindíg a boncasztalon. Megpróbáltam SPI-n elérni és SIKERÜLT!!! Olvassa, írja minden csitti-pató!!! Lehet, hogy HVPP-nél nem működik rendesen az ellenőrzés? De miért olvasott össze-vissza adatokat? Ellenőriztem minden csatlakozás rendben van. Ma még teszek egy próbát HVPP-vel amíg be van kötve. A vicces az egészben, hogy most már tuti nem teszem vissza a panelbe és ráment vagy 10-15 órám. De hát ez a szenvedély nem?
(#) mario1111 válasza zombee hozzászólására (») Aug 3, 2011 /
 
Tegnap még áthekkeltem a kódot hasonlóan. Reggelre nem úgy fagyott le, ahogy eddig, mert nem akadt meg a programfutás és futott a cucc, csak az i2c volt kihalva(2 példány ugyanúgy fagyott). A képernyőm nem az a szöveg volt ami a külső eepromban, hanem valami krix-krax és a billentyű se ment. Viszont amikor lehúztam vezetékkel az i2c vezetékeit megint életre kelt. Lehet meg kellene hívnom néha az i2c_init-et és az helyre csapná...
(#) TavIR-AVR válasza zsezse444 hozzászólására (») Aug 3, 2011 /
 
Nálam akkor okozott ilyen hülye jelenséget:
- 100nF kerámia hidegítőkondi kimaradt (vagy 100nF helyett 1µF lett berakva)
- hidegítőkondi helyett 10k 1206-os ellenállás
- zajos táp
- VCCA és GNDA lebeg.


Ezek helyrerakva: minden OK
(#) merlingerin válasza TavIR-AVR hozzászólására (») Aug 3, 2011 /
 
Köszi!
(#) freechat hozzászólása Aug 5, 2011 /
 
Egy napelemet szeretnék figyelni ATTiny45-el (vagy más is jó, csak ez van itthon most).

A lényeg, hogy max 20V feszültséget ad le maximum 140mA-el.
A cél az, hogy a napsütés "erejét" szeretném vele mérni és regisztrálni. A tárolt adatokat EEPROM-ba fogom írni tömörített formában, ezzel a részével nincs problémám.
Azt viszont nem tudom hogyan kössem rá a napelemet az analóg bemenetre.
(Másik project pedig két helység páratartalom különbségének mérése )
Előre is köszönöm a segítséget.
(#) mario1111 válasza mario1111 hozzászólására (») Aug 5, 2011 /
 
Úgy néz ki sikerült megoldani az i2c-s gondot. Átírtam úgy, hogy ne tudjon beakadni az i2c és néha inicializálom. Ez még kevés volt, mert így is kifagyogatott, ezért a reset lábát egy elenállással PG4-re kötöttem (utolsó szabad IO) és bizonyos időközönként megpróbálok az i2c-s eepromból olvasni, ami szintén elromlik, ha i2c-s gond van. Előre ismert tartalmat olvasok ki belőle és ha nem stimmel, akkor az azt jelenti,h lefagyott az i2c és kimenetnek kapcsolom a PG4-et, ami reseteli így a cuccot. Raktam bele még egy indítási számlálót, így láttam, hogy hányszor halt meg. 2 nap alatt 4-szer.

Márió
(#) sikolymester válasza freechat hozzászólására (») Aug 5, 2011 /
 
Páratartalomra gondolom cél IC kell. Ami a napelemet illeti: Ellenállásosztóval kötöd a feszültséget a bemenetre, hogy a 20V max annyi legyen amin fut a uC-d. Áramot pedig legegyszerűbb egy sorba kötött ellenálláson eső feszültséggel mérni. I = U/R és kész is.

Megjegyzem, hogy léteznek olyan IC-k, amivel úgy mérhetsz áramot, hogy nem kell sorba kötni ellenállást. Eggyel konkrétan találkoztam, ami a hall effektussal mérte az áramot és I2C adta ki az infót.

Valami ilyesmi, csak kis smd tokban volt: Bővebben: Link
(#) sikolymester válasza mario1111 hozzászólására (») Aug 5, 2011 /
 
Jó hír, hogy megoldódott a gondod.

Érdemes lenne utánajárni, hogy mi lehet az okozója a lefagyásoknak. Én a helyedben átvizsgálnám a NYÁK tervet, hogy minden IC aszerint van-e bekötve, ahogyan az az adatlapojaik ajánlják. Gondolok itt a megfelelő lábakra javasolt kondikra, illetve méretükre, továbbá, hogy ha azt mondta, hogy minél közelebb legyen az IC-hez, akkor nem a sarokba került-e mégis véletlen.

Habár ha ezek után korrektül megy, akkor persze nem muszáj, csak a jövőben számodra érdekesnek bizonyulhat, hogyha esetleg a hiba forrását is netán sikerül felderítened. Legkésőbb az egész dolog következő revíziójánál pl, ha lesz ilyen.
(#) suhanc hozzászólása Aug 6, 2011 /
 
Sziasztok.
Két problémám is lenne .
Az első megépítettem egy minipov 3 -at és a neten találtam egy szenzoros változatot (program és fel is töltöttem) de túl lassú a szinkronizálás vagyis a megfelelő sebsebégre állás ha növelem a kódba akkor meg nem teljesen pontos. A másik kérdésem hogyan tudom megoldani h változón a "kép" vagyis pl. időnként váltózón mintha mozgó kép lenne remélem elég érthető voltam .
  1. #include <avr/io.h>             // this contains all the IO port definitions
  2. #include <avr/interrupt.h>
  3. #include <avr/signal.h>
  4. #include <avr/pgmspace.h>
  5. #include <util/delay.h>
  6.  
  7. #define TIMER1_PRESCALE_1 1
  8. #define TIMER1_PRESCALE_8 2
  9. #define TIMER1_PRESCALE_64 3
  10. #define TIMER1_PRESCALE_256 4
  11. #define TIMER1_PRESCALE_1024 5
  12. #define SENSOR 3
  13.  
  14. #define HEX__(n) 0x##n##UL
  15.  
  16. #define B8__(x) ((x&0x0000000FLU)?1:0)  \
  17.                +((x&0x000000F0LU)?2:0)  \
  18.                +((x&0x00000F00LU)?4:0)  \
  19.                +((x&0x0000F000LU)?8:0)  \
  20.                +((x&0x000F0000LU)?16:0) \
  21.                +((x&0x00F00000LU)?32:0) \
  22.                +((x&0x0F000000LU)?64:0) \
  23.                +((x&0xF0000000LU)?128:0)
  24.  
  25. #define B8(d) ((unsigned char)B8__(HEX__(d)))
  26.  
  27. void ioinit (void);
  28. // used to count how many blinks are done in a single rotation
  29. uint8_t blink_count = 5;
  30.  
  31. // blinkrate, starts out at 10000
  32. uint16_t blinkrate = 10000;
  33.  
  34. // store all the image data in program memory (ROM)
  35. // instead of RAM (the default)(
  36. const uint8_t large_image[] PROGMEM = {
  37.  
  38.  
  39. B8(11000011),
  40. B8(10100101),
  41. B8(10011001),
  42. B8(10011001),
  43. B8(10100101),
  44. B8(11000011),
  45. B8(11000011),
  46. B8(10100101),
  47. B8(10011001),
  48. B8(10011001),
  49. B8(10100101),
  50. B8(11000011),
  51. };
  52.  
  53. // special pointer for reading from ROM memory
  54. PGM_P largeimage_p PROGMEM = large_image;
  55.  
  56. #define NUM_ELEM(x) (sizeof (x) / sizeof (*(x)))
  57. int imagesize = NUM_ELEM (large_image);
  58.  
  59.  
  60. // this function is called when timer1 compare matches OCR1A
  61. uint8_t j = 0;
  62. SIGNAL (SIG_TIMER1_COMPA)
  63. {
  64.   if (j >= imagesize)
  65.     j = 0;
  66.  
  67.   // read the image data from ROM
  68.   PORTB = pgm_read_byte (largeimage_p + j);
  69.   j++;
  70.  
  71.   // add to the blink count.  we max at 200 so we don't get an overflow.  
  72.   if (blink_count < 300) {
  73.      blink_count++;
  74.   }
  75. }
  76.  
  77. int
  78. main (void)
  79. {
  80.  
  81.   DDRB = 0xFF;                  // set all 8 pins on port B to outputs
  82.   DDRD = 0xFB;                  // one input on pin D2, this pin read the hall sensor
  83.   PORTD = 0x04;                 // turn on pullup on pin D2
  84.  
  85.   ioinit ();
  86.   sei ();                       // Set Enable Interrupts
  87.   while (1)
  88.     {
  89.     }
  90. }
  91.  
  92. SIGNAL (SIG_INT0)
  93. {
  94.   // Start the image back a pixel 1 when we see the sensor
  95.   j = 0;
  96.   TCNT0 = 0;
  97.  
  98.   // if blink_count is less than imagesize then the blinks are lasting too long and need to be shortened
  99.   // I only change the rate in increments of 100.  This means it my take a few revolutions to finally
  100.   // get the right rate.  Sometimes the sensor misses the magnet and in those cases I don't wont the rate to change drastically
  101.   // I probably need to adjust where the sensor and magnet or posistioned.
  102.   if (blink_count < imagesize )
  103.     {
  104.           // I made an arbitrary minimum rate
  105.           if ( blinkrate > 4000) {
  106.              blinkrate = blinkrate - 200;
  107.           }
  108.     }  else {
  109.           // I made an arbitrary maximum rate
  110.           if ( blinkrate < 10000) {
  111.              blinkrate = blinkrate + 200;
  112.           }
  113.     }
  114.   TCCR1B = (1 << WGM12) | TIMER1_PRESCALE_1;
  115.   OCR1A = blinkrate;
  116.   TIMSK |= 1 << OCIE1A;
  117.   blink_count = 0;
  118.   sei ();                       // Set Enable Interrupts
  119. }
  120.  
  121. void ioinit (void)
  122. {
  123.   // interrupt on INT1 pin falling edge (sensor triggered) and
  124.   PCMSK |= (1 << PIND2);
  125.   // turn on interrupts!  Set the interrupt to only trigger when the sensor goes back low
  126.   MCUCR = (1<<ISC01) | (1<<ISC00);
  127.   GIMSK |= (1 << INT0);
  128.  
  129.   TCCR1B = (1 << WGM12) | TIMER1_PRESCALE_1;
  130.   OCR1A = blinkrate;
  131.   TIMSK |= 1 << OCIE1A;
  132. }

Segítséget köszönöm előre is:
Suhanc
ui.: Képen a jelenlegi kinézet kicsit gyengén világít.. De már megoldottam.
(#) sikolymester válasza suhanc hozzászólására (») Aug 6, 2011 /
 
A szinkronizálást nehéz megmondani, ha nem haragszol nem folyok bele nagyon.
A kép változása ennél a sornál van:
  1. PORTB = pgm_read_byte (largeimage_p + j);


Ehelyett kell más és mást megadnod neki (a largeimage_p helyett ugye) pl ha már 500-szor beolvasta ezt, akkor mast olvasson be...

Ugyanakkor gyenge C skilleket érzek a kérdésedben, főleg ami a képváltozásra vonatkozik. Ha adhatok egy tanácsot, akkor kezdj el magadtól programokat írni és máris triviális lesz egy-egy ilyen dolog.
(#) Robi98 válasza Ricsi89 hozzászólására (») Aug 7, 2011 /
 
Köszönöm! Most már értem.Csak annyit kérdeznék,hogy miként tudnám megváltoztatni az órajelet anélkül,hogy kitörölném a mikrovezérlőt és újra beleégetném csak már 1 Mhz-s órajellel?
(#) zombee válasza sikolymester hozzászólására (») Aug 7, 2011 /
 
FUSE bitek...
(#) koncsik03 hozzászólása Aug 7, 2011 /
 
Helló!
Hogyha van egy programozott avr-em abba lehet új programot égetni?És ha igen akkor az alap programot le kell törölni vagy egyből átírja azt?
(#) zombee válasza koncsik03 hozzászólására (») Aug 7, 2011 /
 
igen-nem

1: mindig lehet írni bele amíg tönkre nem teszed
2: íráskor a régi program automatikusan törlődik/felülíródik.
(#) zolee1209 válasza zombee hozzászólására (») Aug 7, 2011 /
 
Utóbbi akkor is megtörténik, ha nincs bekapcsolva az írás előtti törlés opció? Ha ki volt kapcsolva, akkor nekem kifagyott a doper, az STK500-zal meg nem próbáltam még...
(#) csisy hozzászólása Aug 7, 2011 /
 
Üdv!

Olvasgattam az itteni AVR-es cikkeket, és gondoltam kipróbálom magam. A programozás nem ismeretlen számomra, bár eddig c++ban nyomultam, és c-t sosem tanultam (hát nem furcsa? ), így néhány dologra figyelnem kell (nincs például refi, meg bool visszatérési érték metódusnál, stb., de szerencsére mindent meg lehet oldani pointerrel és egyéb dolgokkal)

A problémám a következő lenne:
Az itteni AVR 8 lábon leckéit már átnéztem párszor, és akár a 2 ledes villogót, akár a jelzőlámpásat csináltam meg, az időzítés nem stimmel.
Beállítottam a projektnél hogy 8.000.000 Hz (nyilván pont nélkül), megírtam a metódust is:
  1. void Delay(int val)
  2. {
  3.         while (val--)
  4.         {
  5.                 _delay_ms(1);
  6.         }
  7. }

De ha mondjuk így hívom meg:
  1. Delay(1000);

akkor ~24mp-et vár.

Esetleg a debugger / szimulátor miatt lehet? "AVR Simulator" van beállítva. Nincs még programozóm meg kísérleti nyákom sem (már meg van rendelve, előbb-utóbb meg is érkezik... )

Előre is köszi a válaszokat!
(#) csisy válasza csisy hozzászólására (») Aug 8, 2011 /
 
Érdekes megfigyelés:
Ha elindítom a debuggert, akkor bal oldalt azt írja, hogy a CPU frekije 4.0000 Mhz. A helyes időzítést pedig a következő képen értem el:
1024*1024 / 4 = 262144
És a 8000000 hz helyett 262144 hz-et írtam be, és voilá!
Viszont ennek nem így kéne működnie, tehát várom majd az ötleteket (vagy ne foglalkozzak vele, biztos jó lesz avr-be programozva, élesben?)
(#) trudnai válasza csisy hozzászólására (») Aug 8, 2011 /
 
Beallitasoknal allitsd be a CPU frekijet, es valoszinuleg be vanpipalva a CPU DIV 8 is... Az mar igy 16* lassabb mint amit szerettel volna, es lehet a tobbi keses abbol adodik, hogy optimalizacio ki van kapcsolva es ilyen sok idot vesz el maga a ciklusod.
(#) csisy válasza trudnai hozzászólására (») Aug 8, 2011 /
 
A CPU frekijét beállítottam a project -> configuration options-nél a device-t (attiny45), frekit (8000000 hz), és az optimalizálást -01re, ahogy a lecke is mondta.
(#) Hurka hozzászólása Aug 8, 2011 /
 
Hellosztok!

ATMEGA644-et programozok BASCOMban, és AVR-DOS-t használnék (kvarc:11,059200MHz). minden oké addig, amíg be van kapcsolva a 8-as divider, de ha kilövöm, elszáll... Az SPI szoftveres (a hardveres lábakon van, de az nem megy). Azt sejtem, hogy az SPI órajelfreki túl magas (az előző 8 szorosa ugyebár). Csatolom a kódot.
  1. $crystal = 11059200
  2. Config Pind.7 = Output
  3. Config PortC = Output
  4. Config Clock = Soft
  5. Config Timer1 = Timer , Prescale = 1
  6. Dim I As Byte
  7. Dim Filechk As String * 512
  8. Dim Adat As Byte
  9. Dim Btemp1 As Byte
  10. On Timer1 Olvas:
  11. Spiinit
  12. Wait 1
  13. $include "Config_MMC.bas"
  14. Gbdriveerror = Driveinit()
  15. If Gbdriveerror = 0 Then
  16.  For I = 1 To 3
  17.   Set Portd.7
  18.   Waitms 500
  19.   Reset Portd.7
  20.   Waitms 500
  21.  Next I
  22. Else
  23.  Reset Portd.7
  24. End If
  25. $include "Config_AVR-DOS.BAS"
  26.       Btemp1 = 131
  27.       Btemp1 = Initfilesystem(1)
  28. If Btemp1 = 0 Then
  29.  For I = 1 To 3
  30.   Set Portd.7
  31.   Waitms 500
  32.   Reset Portd.7
  33.   Waitms 500
  34.  Next I
  35. Else
  36.  Reset Portd.7
  37. End If
  38. Filechk = Dir( "1.wav")
  39. If Len(filechk) <> 0 Then
  40.  For I = 1 To 3
  41.   Set Portd.7
  42.   Waitms 500
  43.   Reset Portd.7
  44.   Waitms 500
  45.  Next I
  46. End If
  47. Open "text.txt" For Output As #1
  48. Print #1 , "HELLO"
  49. Close #1
  50. Wait 1
  51. Open "1.wav" For Binary As #1
  52. Waitms 200
  53. Get #1 , Adat
  54.  
  55. If Adat <> 0 Then
  56.  For I = 1 To 3
  57.   Set Portd.7
  58.   Waitms 500
  59.   Reset Portd.7
  60.   Waitms 500
  61.  Next I
  62. End If
  63.  
  64. Set Portd.7
  65. Wait 1
  66. Enable Interrupts
  67. Enable Timer1
  68. Do
  69. Waitus 1
  70. Loop
  71.  
  72.  
  73. Olvas:
  74.  
  75. Timer1 = 65035
  76. Toggle Portd.7
  77. Portc = Adat
  78. If Eof(#1) = 1 Then
  79. Close #1
  80. Disable Timer1
  81. End If
  82. Return
  83.  
  84.  
  85. End

Hogy tudom csökkenteni az spi órajelfrekit?
Segítségeteket előre is köszönöm!
Üdv.: Hurka
(#) zolee1209 válasza Hurka hozzászólására (») Aug 8, 2011 1 /
 
Minden rendben van?
Következő: »»   346 / 840
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