Part Number Hot Search : 
FT20120 A2717 AIDM50J NJU7018D FT20120 HD63B45P QBD56R0 SFH212
Product Description
Full Text Search
 

To Download R8C-3MT Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  application note rej05b0272-0200z/rev.2. 00 july 2004 page 1 of 21 r8c/tiny series sample program: 3-minute timer 1. abstract the 3-minute timer uses the following functions: ? timer x (timer mode) ? timer z (programmable wa veform generation mode) 2. introduction the example described in this application note is intended for use in the r8c/17 group of microcomputers. this program can also be used when operating ot her microcomputers within the r8c/tiny, provided they have the same sfr (special function register s) as the r8c/17 microcompu ters. however, since it is possible that some functions of the r8c/tiny series will have been altered for functional enhancements, etc., please be sure to obtain the sfr header file from the renesas web site shown below. http://www.renesas.com/en/r8ctiny operation (1) the 3-minute timer has two separate modes: ? standby mode ? 3-minute timer mode (2) after reset, the microcomp uter goes to standby mode. (3) if sw4 (int0) is pressed during standby mode, the microcomputer goes to 3-minute timer mode. (4) in 3-minute timer mode, the microcomputer executes a 3-minute count operation. (5) when the microcomputer has finished co unting 3 minutes, it sounds a buzzer two times and goes to standby mode. (buzzer operation will be detailed later.) (6) if sw1 (cntr0) is pressed during 3-mi nute timer mode, the microcomputer goes to standby mode. (7) key input is sampled at 10 ms intervals, and is confirmed to have been entered when sampled low three times consecutively. (chattering elimination) (8) the key inputs sw4 (int0) and sw1 (cnt r0) are active-low. (when low, the key is pressed; when high, not pressed.) (9) during 3-minute timer mode, the status is in dicated by leds according to the passage of time, as shown below. led indications for the passage of time: led1 (red) led2 (green) led3 (green) led4 (green) 2 minutes or more rema ining time off off on on 1 minute or more remaining time off off flashes every 500 ms flashes every 500 ms 10 seconds or more remaining time off off flashes every 500 ms off 10 seconds or less remaining time off off flashes every 250 ms off 0 second remaining time (buzzer sounded) on off off off after reset standby mode 3-minute timer mode sw4(int0) key depressed sw1(cntr0) key depressed
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 2 of 21 (10) during standby mode, the status is indicated by leds, as shown below. led indications during standby mode: led1 (red) led2 (green) led3 (green) led4 (green) during standby mode on off off off (11) the led1, led2, led3 and led4 are ac tive-low. (when low, the led lights; when high, the led goes out.) (12) the buzzer on/off signal is output from p13 (tzout) using timer-z programmable waveform mode. (13) the buzzer is output with 1 khz (50% duty cycle), repeatedly turned on and off twice at 200 ms intervals, and at the end of the sequence, turned off again for another 200 ms. buzzer output timing sequence: sequence no. 1 2 3 4 buzzer status on (output) off (stop) on (output) off (stop) output and stop time 200 ms 200 ms 200 ms 400 ms 3. about the program 3.1 timer x (timer mode) the timer x (timer mode) is used to maintain a constant main loop period. the set value of the timer x is shown below. when the respective registers are set up as shown above, the timer x interrupt request bit is cyclically set at 10 ms intervals. before the main processing, the program checks the timer x interrupt request bit to see if 10 ms has elapsed. if 10 ms has elapsed, the program clears the timer x interrupt request bit and executes the main processing. if 10 ms has not elapsed yet, the program waits until the timer x interrupt request bit is set. 0 0 0 1 0 0 0 1 settings of the timer count source setup register b7 b0 timer count source setup register [address 008e 16 ] tcss timer x count source set 01: 1/8 reserved bit. set to ?0?. timer z count source set 01: 1/8 reserved bit. set to ?0?. 0 0 0 0 1 0 0 0 settings of the timer x mode register b7 b0 timer x mode register [address 008b 16 ] txmr selects timer mode set to ?0? in timer mode other than pulse period measurement mode set to ?0? in timer mode timer x count start flag set to ?1? when count starts int1/cntr0 polarity select bit prescaler x set value = (250 ? 1) timer x set value = ( 100 ? 1 ) 1/8 20mhz main loop, 10 ms 100
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 3 of 21 3.2 timer z (programmable waveform generation mode) the timer z (programmable wa veform generation mode) is used to sound a buzzer. waveform generation with 1 khz (50% duty cycle) is accomplished by setting up the registers as shown below. the output level is set by using the timer z output level latch (tzopl) in the timer z waveform output control register (pum). setting the timer z ou tput level latch (tzopl) to ?0? causes the device to output a high during the primary period, a low during the secondary period, and a low when the timer is inactive. when the timer z starts counting, the device outputs a high during the primary period and a low during the secondary period from p13 (tzout), and when the timer z stops counting, the device outputs a low. the timer z set values are shown below. prescaler z set value = ( 25 ? 1 ) timer z primary set value = ( 50 ? 1 ) 1/8 20mhz buzzer output = high, 500 s 10 s 0 0 0 1 0 0 0 1 settings of the timer count source setup register b7 b0 timer count source setup register [address 008e 16 ] tcss timer x count source set 01: 1/8 timer z count source set 01: 1/8 reserved bit. set to ?0?. 0 1 0 1 0 0 0 0 settings of the timer z mode register b7 b0 timer z mode register [address 0080 16 ] tzmr reserved bit. set to ?0?. 01: programmable waveform generation mode set to ?1? in programmable waveform generation mode. timer z count start flag 0 0 0 0 0 0 0 0 settings of the timer z waveform output control register b7 b0 timer z waveform output control register [address 0084 16 ] pum reserved bit. set to ?0?. int0 p in one-shot tri gg er control bit int0 pin one-shot trigger polarity select bit timer z output level latch high during primary period, low during secondary period, and low when the timer is inactive reserved bit. set to ?0?.
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 4 of 21 3.3 chattering elimination to protect the key input against chattering noise, sw 1 and sw4 are read multiple times to confirm that the detected input levels are the same. for the 3-minut e timer, key input is sampled at 10 ms intervals, and is confirmed to have been entered wh en sampled low three times consecutively.
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 5 of 21 4. flowchart 4.1 initial settings and main loop ; disables interrupts ; removes protection of the system control registers ; xin-xout pin ; selects xin-xout drive capability; set to high ; main clock oscillation ; main clock not divided ; enables main clock division cm16, cm17 ; wait until stabilizes ; wait until stabilizes ; wait until stabilizes ; wait until stabilizes ; selects the main clock ; protects the system control registers ; initializes the sfr (port initialization and timer setup) ; enables interrupts ; wait for timer x request ; clears the timer x request flag ; refreshes the port direction register ; sets the port for output (led and buzzer) ; sets the port for input (key input processing) ; soft timer (10 ms based timer value subtraction) reset no yes initialize sfr sfr_initial main period elapsed (10 ms) ? reset sfr sfr_ref asm ( "fclr i" ); p rcr = 1 ; ocd2 = 0 ; cm15 = 1 ; asm ( "no p " ); asm ( "no p " ); cm06 = 0 ; p rcr = 0 ; ir txic = 0 ; port intput port_in port output port_out soft timer processing stimer asm ( "fset i" ); cm13 = 1 ; cm05 = 0 ; cm17 = 0 ; cm16 = 0 ; asm ( "no p " ); asm ( "no p " );
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 6 of 21 4.2 sfr initialization 4.3 sfr refresh ; initializes port p1 ; initializes port p4 ; timer x = divided-by-8, timer z = divided-by-8 ; prescaler x = 250 ?1 ; timer x = 100 ? 1 ; timer x starts counting ; prescaler z = 25 ? 1 ; timer z secondary register = 50 ? 1 ; timer z primary register = 50 ? 1 ; timer z mode = programmable waveform generation mode ; timer z waveform output control register = 0 ; timer z stops counting ; refreshes the sfr ; initializes/refreshes the port p1 direction register ; initializes/refreshes the port p4 direction register sfr _ re f pd1 = 0x1e; pd4 = 0; rts sfr _ init p1 = 0x16; p4 = 0; tcss = 0x11; prex = 250-1 tx = 100-1; txs = 1; prez = 25-1; tzsc = 50-1; tzpr = 50-1; tzmr = 0x50; pum = 0; tzs = 0; rts refresh sfr sfr_ref
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 7 of 21 4.4 port output p ort _ out no mode = 1 yes no tm_ledon <= 0 yes no cnt3min > 1000 yes no led_on = 0 yes no led_on = 1 yes no cnt3min > 6000 yes tm_ledon = 50; tm_ledon = 25; led_on = 1; led_on = 0; p 1 = 0x12 ; p 1 = 0x10 ; p 1 = 0x06 ; no cnt3min > 0 yes no cnt3min = 0 yes p 1 = 0x16 ; p 1 = 0x06 ; p 1 = 0x06 ; tzs = 0 ; rts 1 ; turns onl y the red led on ; turns buzzer off ; sets led-on time ; switches over led on/off ; led turn-on p rocessin g b y time ; led turn-off p rocessin g ; buzzer output currently on cnt3min > 12000 yes led_on = 1; no
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 8 of 21 no cnt3min = 0 & mode = 1 yes 1 tm_buzzer = 20; rts no tm_buzzer <= 0 yes no md_buzzer = 0 yes md_buzzer + 1; rts tzs = 1 ; no md buzzer = 1 yes md_buzzer + 1; rts tzs = 0 ; no md_buzzer = 2 yes no md_buzzer = 3 yes no md_buzzer = 4 yes mode = 0 ; rts md_buzzer = 0; ; buzzer out p ut currentl y on or turned off ; determines buzzer out p ut ; timer z starts countin g ; sets buzzer mode ; timer z sto p s countin g ; sets buzzer mode ; initializes buzzer mode ; mode = standb y mode tm_buzzer = 20;
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 9 of 21 4.5 port input ; valid data = hi g h no sw4 = sw_on yes no sw4 _ bit = 0 | sw4 _ bit = 7 yes yes sw4 _ bit = 0 no no mode = 0 yes p ort _ in i = 1 ; i = 0 ; sw4_bit & 7; sw4_bit | i; sw4_bit << 1; f ixsw4 = 0 ; mode = 1 ; led_on = 0; cnt3min = 18000; f ixsw4 = 1 ; no sw1 = sw_on yes i = 1 ; i = 0 ; sw1_bit & 7; sw1_bit | i; sw1_bit << 1; 2 ; reserves stora g e in which to save the in p ut data ; saves the in p ut data ; deletes 5 hi g h-order bits ; reserves stora g e in which to save the in p ut data ; saves the in p ut data ; deletes 5 hi g h-order bits ; valid data = low ; chan g es modes ; sets 3 -minute time ; starts from led off
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 10 of 21 ; valid data = high 2 no sw1 _ bit = 0 | sw1 _ bit = 7 yes no sw1 _ bit = 0 yes no mode = 1 yes f ixsw1 = 0 ; cnt3min = 0; mode = 0 ; f ixsw1 = 1 ; rts ; va lid d a t a = l o w
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 11 of 21 4.6 soft timer processing stime r no mode = 1 yes cnt3min - 1; no cnt3min != 0 yes tm_ledon - 1; no tm_ledon != 0 yes tm_buzzer - 1; no tm_buzzer != 0 yes rts ; mode = 3 -minute timer mode ; checks for underflow ; subtracts 3 -minute measurement timer ; checks for underflow ; subtracts led -on time ; checks for underflow ; subtracts buzzer-on time
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 12 of 21 5. sample program /************************************************************************************ * * * file name : 3min_timer.h * * contents : definition of r8c/17 group sfr * * copyright, 2004 renesas technology corporation * * and renesas solutions corporation * * version : 1.00 * * note : * * * ************************************************************************************/ /* definition of ram area */ char mode = 0; /* mode number */ char sw1_bit = 0; /* input sw1 data */ char fixsw1 = 1; /* input sw1 settlement data */ char sw4_bit = 0; /* input sw4 data */ char fixsw4 = 1; /* input sw4 settlement data */ char md_buzzer; /* buzzer control mode */ char led_on; /* display on-off */ unsigned int tm_ledon; /* led control timer */ unsigned int tm_buzzer; /* buzzer control timer */ unsigned long int cnt3min; /* counting area in the 3 minute timer */ /* declaration of function prototype */ extern void sfr_init(void); /* initial setting of sfr registers */ extern void sfr_ref(void); /* refresh of sfr registers */ extern void port_out(void); /* port output */ extern void port_in(void); /* port input */ extern void stimer(void); /* software timer */ /* definition of base section */ #define sw_on 0 #define sw_off 1 #define low 0 #define high 1 /* definition of port */ #define green_led2 p1_1 #define green_led1 p1_2 #define green_led0 p1_3 #define red_led p1_4 #define sw1 p1_7 #define sw4 p4_5 #define buzzer p1_3
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 13 of 21 /************************************************************************************ * * * file name : main.c * * contents : definition of r8c/17 group sfr * * copyright, 2004 renesas technology corporation * * and renesas solutions corporation * * version : 1.00 * * note : * * * ************************************************************************************/ #include "sfr_r817.h" /* definition of the r8c/17 sfr */ #include "3min_timer.h" /* definition of processing for 3 minutes timer */ main(){ asm("fclr i"); /* interrupt disable */ prcr = 1; /* protect off */ cm13 = 1; /* x-in x-out */ cm15 = 1; /* xcin-xcout drive capacity select bit : high */ cm05 = 0; /* x-in on */ cm16 = 0; /* main clock = no division mode */ cm17 = 0; cm06 = 0; /* cm16 and cm17 enable */ asm("nop"); asm("nop"); asm("nop"); asm("nop"); ocd2 = 0; /* main clock change */ prcr = 0; /* protect on */ sfr_init(); /* initial setting of sfr registers */ while(1){ /* main processing */ asm("fset i"); /* interrupt enable */ while(ir_txic == 0){} /* main cycle 10ms */ ir_txic = 0; sfr_ref(); /* refreshment of sfr registers */ port_out(); /* port output */ port_in(); /* port input */ stimer(); /* software timer */ } }
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 14 of 21 /************************************************************************************ name: sfr_init parameters: none returns: none description: initial setting of sfr registers ************************************************************************************/ void sfr_init(void){ /* setting port registers */ p1 = 0x16; /* p14,12,11 = h(led 4.-.2.1) p13 = l(buzzer) */ p4 = 0; tcss = 0x11; /* division = x:1/8,z:1/8 */ /* setting main cycle timer */ /* 20mhz* 1/8 * 250 * 100 =10ms */ prex = 250 - 1; /* setting prescaler x register */ tx = 100 - 1; /* setting timer x register */ txs = 1; /* timer x count start flag = start */ /* setting buzzer output timer */ /* the period of timer z primary = 20mhz* 1/8 * 25 * 50 = 0.5ms */ /* the period of timer z secondary = 20mhz* 1/8 * 25 * 50 = 0.5ms */ prez = 25 - 1; /* setting prescaler z register */ tzsc = 50 - 1; /* setting timer z secondary register */ tzpr = 50 - 1; /* setting timer z primary register */ tzmr = 0x50; /* timer z mode = programmable waveform generation mode */ pum = 0; /* timer z waveform output control register */ tzs = 0; /* timer z count start flag = stop */ sfr_ref(); /* refreshment of sfr registers */ } /************************************************************************************ name: sfr_ref parameters: none returns: none description: refresh of sfr registers ************************************************************************************/ void sfr_ref(void){ /* setting port direction registers */ pd1 = 0x1e; pd4 = 0x0; }
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 15 of 21 /************************************************************************************ name: port_out parameters: none returns: none description: port output ************************************************************************************/ void port_out(void){ if (mode == 1){ /* led output processing */ if (tm_ledon <= 0){ if (cnt3min > 12000){ /* the remainder time is more than 2 minutes */ led_on = 1; }else{ if (cnt3min > 1000){ /* change of led control timer */ tm_ledon = 50; /* display during 500ms */ }else{ tm_ledon = 25; /* display during 250ms */ } if (led_on == 0){ /* change of display on-off */ led_on = 1; /* display start */ }else{ led_on = 0; /* display stoppage */ } } } if (led_on == 1){ if (cnt3min > 6000){ /* the remainder time is more than 1 minutes */ p1 = 0x10; }else if (cnt3min > 0){ /* the remainder time is less than 1 minutes */ p1 = 0x12; }else{ /* the remainder time is nothing */ p1 = 0x06; } }else{ if (cnt3min == 0){ /* counting end */ p1 = 0x06; }else{ p1 = 0x16; /* led turn-off */ } } /* buzzer output processing */ if (cnt3min == 0 && mode == 1){ if (tm_buzzer <= 0){ tm_buzzer = 20; /* buzzer control timer = 200ms */ switch (md_buzzer){ case 0: case 2: tzs = 1; /* counting start of timer z */ md_buzzer = md_buzzer + 1; break;
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 16 of 21 case 1: case 3: case 4: tzs = 0; /* counting stoppage of timer z */ md_buzzer = md_buzzer + 1; break; default: mode = 0; /* move to the standby mode */ md_buzzer = 0; } } }else{ tm_buzzer = 20; /* buzzer output of 200ms */ } }else{ p1 = 0x06; tzs = 0; /* timer z stops counting */ } }
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 17 of 21 /************************************************************************************ name: port_in parameters: none returns: none description: port input ************************************************************************************/ void port_in(void){ unsigned char i; /* determination of input level sw4 */ i = 1; if (sw4 == sw_on)i = 0; /* now determination sw4 */ sw4_bit = sw4_bit << 1; /* check pulses matching a trigger input level 3 times */ sw4_bit = sw4_bit | i; sw4_bit = sw4_bit & 7; if (sw4_bit == 0 || sw4_bit == 7){ /* determinate input sw4 */ if (sw4_bit == 0){ fixsw4 = 0; /* input on */ /* counting start of the 3 minutes timer */ if (mode == 0){ mode = 1; /* setting the 3 minute timer mode */ cnt3min = 18000; /* initialization of the 3 minutes timer */ led_on = 0; /* display start */ } }else{ fixsw4 = 1; /* input off */ } } /* determination of input level sw1 */ i = 1; if (sw1 == sw_on)i = 0; /* now determination sw1 */ sw1_bit = sw1_bit << 1; /* check pulses matching a trigger input level 3 times */ sw1_bit = sw1_bit | i; sw1_bit = sw1_bit & 7; if (sw1_bit == 0 || sw1_bit == 7){ /* determinate input sw1 */ if (sw1_bit == 0){ fixsw1 = 0; /* input on */ if (mode == 1){ mode = 0; /* setting the standby mode */ cnt3min = 0; } }else{ fixsw1 = 1; /* input off */ } } }
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 18 of 21 /************************************************************************************ name: stimer parameters: none returns: none description: software timer ************************************************************************************/ void stimer(void){ /* countdown of 3 minutes timer */ if (mode == 1){ if (cnt3min != 0){ cnt3min = cnt3min - 1; } } /* countdown of led control timer */ if (tm_ledon != 0){ tm_ledon = tm_ledon - 1; } /* countdown of buzzer control timer */ if (tm_buzzer != 0){ tm_buzzer = tm_buzzer - 1; } }
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 19 of 21 6. reference documents datasheet r8c/tiny series datasheet (for the most current version, please visit renesas technology home page ) hardware manual r8c/tiny series hardware manual (for the most current version, please visit renesas technology home page) 7. home page and support information window renesas technology home page http://www.renesas.com/ m16c family mcu technical support information window support_apl@renesas.com
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 20 of 21 revision history description rev. date page summary 1.00 sep 09, 2003 - first edition issued 1.10 nov 10, 2003 all for r8c/11 group 2.00 jul 1, 2004 all for r8c/tiny series
r8c/tiny series sample program: 3-minute timer rej05b0272-0200z/rev.2. 00 july 2004 page 21 of 21 keep safety first in your circuit designs! notes regarding these materials 1. these materials are intended as a reference to assist our customers in the selection of the renesas technology corporation product best suited to the customer's application; they do not convey any license under any intellectual property rights, or any other rights, belonging to renesas technology corporation or a third party. 2. renesas technology corporation assumes no responsibility for any damage, or infringement of any third-party's rights, originating in the use of any product data, diagrams, charts, programs, algorithms, or circuit application examples contained in these materials. 3. all information contained in these materials, including product data, diagrams, charts, programs and algorithms represents information on products at the time of publication of these materials, and are subject to change by renesas technology corporation without notice due to product improvements or other reasons. it is therefore recommended that customers contact renesas technology corporation or an authorized renesas technology corporation product distributor for the latest product information before purchasing a product listed herein. the information described here may contain technical inaccuracies or typographical errors. renesas technology corporation assumes no responsibility for any damage, liability, or other loss rising from these inaccuracies or errors. please also pay attention to information published by renesas technology corporation by various means, including the renesas technology corporation semiconductor home page (http://www.renesas.com). 4. when using any or all of the information contained in these materials, including product data, diagrams, charts, programs, and algorithms, please be sure to evaluate all information as a total system before making a final decision on the applicability of the information and products. renesas technology corporation assumes no responsibility for any damage, liability or other loss resulting from the information contained herein. 5. renesas technology corporation semiconductors are not designed or manufactured for use in a device or system that is used under circumstances in which human life is potentially at stake. please contact renesas technology corporation or an authorized renesas technology corporation product distributor when considering the use of a product contained herein for any specific purposes, such as apparatus or systems for transportation, vehicular, medical, aerospace, nuclear, or undersea repeater use. 6. the prior written approval of renesas technology corporation is necessary to reprint or reproduce in whole or in part these materials. 7. if these products or technologies are subject to the japanese export control restrictions, they must be exported under a license from the japanese government and cannot be imported into a country other than the approved destination. any diversion or reexport contrary to the export control laws and regulations of japan and/or the country of destination is prohibited. 8. please contact renesas technology corporation for further details on these materials or the products contained therein. 1. renesas technology corporation puts the maximum effort into making semiconductor products better and more reliable, but there is always the possibility that trouble may occur with them. trouble with semiconductors may lead to personal injury, fire or property damage. remember to give due consideration to safety when making your circuit designs, with appropriate measures such as (i) placement of substitutive, auxiliary circuits, (ii) use of nonflammable material or (iii) prevention against any malfunction or mishap. keep safety first in your circuit designs! notes regarding these materials


▲Up To Search▲   

 
Price & Availability of R8C-3MT

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X