Explorar el Código

📝 kHz => KHz

Scott Lahteine hace 3 años
padre
commit
02b29c0fec

+ 4
- 4
Marlin/Configuration_adv.h Ver fichero

561
  * FAST_PWM_FAN_FREQUENCY
561
  * FAST_PWM_FAN_FREQUENCY
562
  *   Set this to your desired frequency.
562
  *   Set this to your desired frequency.
563
  *   For AVR, if left undefined this defaults to F = F_CPU/(2*255*1)
563
  *   For AVR, if left undefined this defaults to F = F_CPU/(2*255*1)
564
- *            i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers.
564
+ *            i.e., F = 31.4KHz on 16MHz microcontrollers or F = 39.2KHz on 20MHz microcontrollers.
565
  *   For non AVR, if left undefined this defaults to F = 1Khz.
565
  *   For non AVR, if left undefined this defaults to F = 1Khz.
566
  *   This F value is only to protect the hardware from an absence of configuration
566
  *   This F value is only to protect the hardware from an absence of configuration
567
  *   and not to complete it when users are not aware that the frequency must be specifically set to support the target board.
567
  *   and not to complete it when users are not aware that the frequency must be specifically set to support the target board.
1179
 
1179
 
1180
 /**
1180
 /**
1181
  * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies
1181
  * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies
1182
- * below 1kHz (for AVR) or 10kHz (for ARM), where aliasing between axes in multi-axis moves causes audible
1182
+ * below 1KHz (for AVR) or 10KHz (for ARM), where aliasing between axes in multi-axis moves causes audible
1183
  * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the
1183
  * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the
1184
  * lowest stepping frequencies.
1184
  * lowest stepping frequencies.
1185
  */
1185
  */
3419
 
3419
 
3420
   /**
3420
   /**
3421
    * PHOTO_PULSES_US may need adjustment depending on board and camera model.
3421
    * PHOTO_PULSES_US may need adjustment depending on board and camera model.
3422
-   * Pin must be running at 48.4kHz.
3422
+   * Pin must be running at 48.4KHz.
3423
    * Be sure to use a PHOTOGRAPH_PIN which can rise and fall quick enough.
3423
    * Be sure to use a PHOTOGRAPH_PIN which can rise and fall quick enough.
3424
    * (e.g., MKS SBase temp sensor pin was too slow, so used P1.23 on J8.)
3424
    * (e.g., MKS SBase temp sensor pin was too slow, so used P1.23 on J8.)
3425
    *
3425
    *
3426
    *  Example pulse data for Nikon: https://bit.ly/2FKD0Aq
3426
    *  Example pulse data for Nikon: https://bit.ly/2FKD0Aq
3427
    *                     IR Wiring: https://git.io/JvJf7
3427
    *                     IR Wiring: https://git.io/JvJf7
3428
    */
3428
    */
3429
-  //#define PHOTO_PULSES_US { 2000, 27850, 400, 1580, 400, 3580, 400 }  // (µs) Durations for each 48.4kHz oscillation
3429
+  //#define PHOTO_PULSES_US { 2000, 27850, 400, 1580, 400, 3580, 400 }  // (µs) Durations for each 48.4KHz oscillation
3430
   #ifdef PHOTO_PULSES_US
3430
   #ifdef PHOTO_PULSES_US
3431
     #define PHOTO_PULSE_DELAY_US 13 // (µs) Approximate duration of each HIGH and LOW pulse in the oscillation
3431
     #define PHOTO_PULSE_DELAY_US 13 // (µs) Approximate duration of each HIGH and LOW pulse in the oscillation
3432
   #endif
3432
   #endif

+ 3
- 3
Marlin/src/HAL/DUE/HAL_SPI.cpp Ver fichero

491
    *  1 :  4 - 5 MHz
491
    *  1 :  4 - 5 MHz
492
    *  2 :  2 - 2.5 MHz
492
    *  2 :  2 - 2.5 MHz
493
    *  3 :  1 - 1.25 MHz
493
    *  3 :  1 - 1.25 MHz
494
-   *  4 :  500 - 625 kHz
495
-   *  5 :  250 - 312 kHz
496
-   *  6 :  125 - 156 kHz
494
+   *  4 :  500 - 625 KHz
495
+   *  5 :  250 - 312 KHz
496
+   *  6 :  125 - 156 KHz
497
    */
497
    */
498
   void spiInit(uint8_t spiRate) {
498
   void spiInit(uint8_t spiRate) {
499
     switch (spiRate) {
499
     switch (spiRate) {

+ 1
- 1
Marlin/src/HAL/DUE/timers.cpp Ver fichero

62
   Timer_clock1: Prescaler 2 -> 42MHz
62
   Timer_clock1: Prescaler 2 -> 42MHz
63
   Timer_clock2: Prescaler 8 -> 10.5MHz
63
   Timer_clock2: Prescaler 8 -> 10.5MHz
64
   Timer_clock3: Prescaler 32 -> 2.625MHz
64
   Timer_clock3: Prescaler 32 -> 2.625MHz
65
-  Timer_clock4: Prescaler 128 -> 656.25kHz
65
+  Timer_clock4: Prescaler 128 -> 656.25KHz
66
 */
66
 */
67
 
67
 
68
 void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
68
 void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {

+ 3
- 3
Marlin/src/HAL/DUE/usb/genclk.h Ver fichero

74
 //@{
74
 //@{
75
 
75
 
76
 enum genclk_source {
76
 enum genclk_source {
77
-	GENCLK_PCK_SRC_SLCK_RC       = 0, //!< Internal 32kHz RC oscillator as PCK source clock
78
-	GENCLK_PCK_SRC_SLCK_XTAL     = 1, //!< External 32kHz crystal oscillator as PCK source clock
79
-	GENCLK_PCK_SRC_SLCK_BYPASS   = 2, //!< External 32kHz bypass oscillator as PCK source clock
77
+	GENCLK_PCK_SRC_SLCK_RC       = 0, //!< Internal 32KHz RC oscillator as PCK source clock
78
+	GENCLK_PCK_SRC_SLCK_XTAL     = 1, //!< External 32KHz crystal oscillator as PCK source clock
79
+	GENCLK_PCK_SRC_SLCK_BYPASS   = 2, //!< External 32KHz bypass oscillator as PCK source clock
80
 	GENCLK_PCK_SRC_MAINCK_4M_RC  = 3, //!< Internal 4MHz RC oscillator as PCK source clock
80
 	GENCLK_PCK_SRC_MAINCK_4M_RC  = 3, //!< Internal 4MHz RC oscillator as PCK source clock
81
 	GENCLK_PCK_SRC_MAINCK_8M_RC  = 4, //!< Internal 8MHz RC oscillator as PCK source clock
81
 	GENCLK_PCK_SRC_MAINCK_8M_RC  = 4, //!< Internal 8MHz RC oscillator as PCK source clock
82
 	GENCLK_PCK_SRC_MAINCK_12M_RC = 5, //!< Internal 12MHz RC oscillator as PCK source clock
82
 	GENCLK_PCK_SRC_MAINCK_12M_RC = 5, //!< Internal 12MHz RC oscillator as PCK source clock

+ 6
- 6
Marlin/src/HAL/DUE/usb/osc.h Ver fichero

93
 
93
 
94
 //! \name Oscillator identifiers
94
 //! \name Oscillator identifiers
95
 //@{
95
 //@{
96
-#define OSC_SLCK_32K_RC             0    //!< Internal 32kHz RC oscillator.
97
-#define OSC_SLCK_32K_XTAL           1    //!< External 32kHz crystal oscillator.
98
-#define OSC_SLCK_32K_BYPASS         2    //!< External 32kHz bypass oscillator.
96
+#define OSC_SLCK_32K_RC             0    //!< Internal 32KHz RC oscillator.
97
+#define OSC_SLCK_32K_XTAL           1    //!< External 32KHz crystal oscillator.
98
+#define OSC_SLCK_32K_BYPASS         2    //!< External 32KHz bypass oscillator.
99
 #define OSC_MAINCK_4M_RC            3    //!< Internal 4MHz RC oscillator.
99
 #define OSC_MAINCK_4M_RC            3    //!< Internal 4MHz RC oscillator.
100
 #define OSC_MAINCK_8M_RC            4    //!< Internal 8MHz RC oscillator.
100
 #define OSC_MAINCK_8M_RC            4    //!< Internal 8MHz RC oscillator.
101
 #define OSC_MAINCK_12M_RC           5    //!< Internal 12MHz RC oscillator.
101
 #define OSC_MAINCK_12M_RC           5    //!< Internal 12MHz RC oscillator.
105
 
105
 
106
 //! \name Oscillator clock speed in hertz
106
 //! \name Oscillator clock speed in hertz
107
 //@{
107
 //@{
108
-#define OSC_SLCK_32K_RC_HZ          CHIP_FREQ_SLCK_RC               //!< Internal 32kHz RC oscillator.
109
-#define OSC_SLCK_32K_XTAL_HZ        BOARD_FREQ_SLCK_XTAL            //!< External 32kHz crystal oscillator.
110
-#define OSC_SLCK_32K_BYPASS_HZ      BOARD_FREQ_SLCK_BYPASS          //!< External 32kHz bypass oscillator.
108
+#define OSC_SLCK_32K_RC_HZ          CHIP_FREQ_SLCK_RC               //!< Internal 32KHz RC oscillator.
109
+#define OSC_SLCK_32K_XTAL_HZ        BOARD_FREQ_SLCK_XTAL            //!< External 32KHz crystal oscillator.
110
+#define OSC_SLCK_32K_BYPASS_HZ      BOARD_FREQ_SLCK_BYPASS          //!< External 32KHz bypass oscillator.
111
 #define OSC_MAINCK_4M_RC_HZ         CHIP_FREQ_MAINCK_RC_4MHZ        //!< Internal 4MHz RC oscillator.
111
 #define OSC_MAINCK_4M_RC_HZ         CHIP_FREQ_MAINCK_RC_4MHZ        //!< Internal 4MHz RC oscillator.
112
 #define OSC_MAINCK_8M_RC_HZ         CHIP_FREQ_MAINCK_RC_8MHZ        //!< Internal 8MHz RC oscillator.
112
 #define OSC_MAINCK_8M_RC_HZ         CHIP_FREQ_MAINCK_RC_8MHZ        //!< Internal 8MHz RC oscillator.
113
 #define OSC_MAINCK_12M_RC_HZ        CHIP_FREQ_MAINCK_RC_12MHZ       //!< Internal 12MHz RC oscillator.
113
 #define OSC_MAINCK_12M_RC_HZ        CHIP_FREQ_MAINCK_RC_12MHZ       //!< Internal 12MHz RC oscillator.

+ 3
- 3
Marlin/src/HAL/DUE/usb/sysclk.h Ver fichero

156
 
156
 
157
 //! \name Master Clock Sources (MCK)
157
 //! \name Master Clock Sources (MCK)
158
 //@{
158
 //@{
159
-#define SYSCLK_SRC_SLCK_RC              0       //!< Internal 32kHz RC oscillator as master source clock
160
-#define SYSCLK_SRC_SLCK_XTAL            1       //!< External 32kHz crystal oscillator as master source clock
161
-#define SYSCLK_SRC_SLCK_BYPASS          2       //!< External 32kHz bypass oscillator as master source clock
159
+#define SYSCLK_SRC_SLCK_RC              0       //!< Internal 32KHz RC oscillator as master source clock
160
+#define SYSCLK_SRC_SLCK_XTAL            1       //!< External 32KHz crystal oscillator as master source clock
161
+#define SYSCLK_SRC_SLCK_BYPASS          2       //!< External 32KHz bypass oscillator as master source clock
162
 #define SYSCLK_SRC_MAINCK_4M_RC         3       //!< Internal 4MHz RC oscillator as master source clock
162
 #define SYSCLK_SRC_MAINCK_4M_RC         3       //!< Internal 4MHz RC oscillator as master source clock
163
 #define SYSCLK_SRC_MAINCK_8M_RC         4       //!< Internal 8MHz RC oscillator as master source clock
163
 #define SYSCLK_SRC_MAINCK_8M_RC         4       //!< Internal 8MHz RC oscillator as master source clock
164
 #define SYSCLK_SRC_MAINCK_12M_RC        5       //!< Internal 12MHz RC oscillator as master source clock
164
 #define SYSCLK_SRC_MAINCK_12M_RC        5       //!< Internal 12MHz RC oscillator as master source clock

+ 1
- 1
Marlin/src/HAL/DUE/watchdog.cpp Ver fichero

39
     uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
39
     uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
40
 
40
 
41
     // Calculate timeout value in WDT counter ticks: This assumes
41
     // Calculate timeout value in WDT counter ticks: This assumes
42
-    // the slow clock is running at 32.768 kHz watchdog
42
+    // the slow clock is running at 32.768 KHz watchdog
43
     // frequency is therefore 32768 / 128 = 256 Hz
43
     // frequency is therefore 32768 / 128 = 256 Hz
44
     timeout = (timeout << 8) / 1000;
44
     timeout = (timeout << 8) / 1000;
45
     if (timeout == 0)
45
     if (timeout == 0)

+ 1
- 1
Marlin/src/HAL/ESP32/i2s.cpp Ver fichero

176
    *
176
    *
177
    *   fwclk = fbclk / 32
177
    *   fwclk = fbclk / 32
178
    *
178
    *
179
-   *   for fwclk = 250kHz (4µS pulse time)
179
+   *   for fwclk = 250KHz (4µS pulse time)
180
    *      N = 10
180
    *      N = 10
181
    *      M = 20
181
    *      M = 20
182
    */
182
    */

+ 1
- 1
Marlin/src/HAL/LPC1768/u8g/LCD_pin_routines.c Ver fichero

26
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
26
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
27
  *
27
  *
28
  * Couldn't just call exact copies because the overhead killed the LCD update speed
28
  * Couldn't just call exact copies because the overhead killed the LCD update speed
29
- * With an intermediate level the softspi was running in the 10-20kHz range which
29
+ * With an intermediate level the softspi was running in the 10-20KHz range which
30
  * resulted in using about about 25% of the CPU's time.
30
  * resulted in using about about 25% of the CPU's time.
31
  */
31
  */
32
 
32
 

+ 1
- 1
Marlin/src/HAL/LPC1768/u8g/LCD_pin_routines.h Ver fichero

27
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
27
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
28
  *
28
  *
29
  * Couldn't just call exact copies because the overhead killed the LCD update speed
29
  * Couldn't just call exact copies because the overhead killed the LCD update speed
30
- * With an intermediate level the softspi was running in the 10-20kHz range which
30
+ * With an intermediate level the softspi was running in the 10-20KHz range which
31
  * resulted in using about about 25% of the CPU's time.
31
  * resulted in using about about 25% of the CPU's time.
32
  */
32
  */
33
 
33
 

+ 1
- 1
Marlin/src/HAL/NATIVE_SIM/u8g/LCD_pin_routines.cpp Ver fichero

26
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
26
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
27
  *
27
  *
28
  * Couldn't just call exact copies because the overhead killed the LCD update speed
28
  * Couldn't just call exact copies because the overhead killed the LCD update speed
29
- * With an intermediate level the softspi was running in the 10-20kHz range which
29
+ * With an intermediate level the softspi was running in the 10-20KHz range which
30
  * resulted in using about about 25% of the CPU's time.
30
  * resulted in using about about 25% of the CPU's time.
31
  */
31
  */
32
 
32
 

+ 1
- 1
Marlin/src/HAL/NATIVE_SIM/u8g/LCD_pin_routines.h Ver fichero

27
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
27
  * These are based on the LPC1768 pinMode, digitalRead & digitalWrite routines.
28
  *
28
  *
29
  * Couldn't just call exact copies because the overhead killed the LCD update speed
29
  * Couldn't just call exact copies because the overhead killed the LCD update speed
30
- * With an intermediate level the softspi was running in the 10-20kHz range which
30
+ * With an intermediate level the softspi was running in the 10-20KHz range which
31
  * resulted in using about about 25% of the CPU's time.
31
  * resulted in using about about 25% of the CPU's time.
32
  */
32
  */
33
 
33
 

+ 1
- 1
Marlin/src/HAL/STM32/timers.h Ver fichero

48
 #define TIMER_INDEX_(T) TIMER##T##_INDEX  // TIMER#_INDEX enums (timer_index_t) depend on TIM#_BASE defines.
48
 #define TIMER_INDEX_(T) TIMER##T##_INDEX  // TIMER#_INDEX enums (timer_index_t) depend on TIM#_BASE defines.
49
 #define TIMER_INDEX(T) TIMER_INDEX_(T)    // Convert Timer ID to HardwareTimer_Handle index.
49
 #define TIMER_INDEX(T) TIMER_INDEX_(T)    // Convert Timer ID to HardwareTimer_Handle index.
50
 
50
 
51
-#define TEMP_TIMER_FREQUENCY 1000   // Temperature::isr() is expected to be called at around 1kHz
51
+#define TEMP_TIMER_FREQUENCY 1000   // Temperature::isr() is expected to be called at around 1KHz
52
 
52
 
53
 // TODO: get rid of manual rate/prescale/ticks/cycles taken for procedures in stepper.cpp
53
 // TODO: get rid of manual rate/prescale/ticks/cycles taken for procedures in stepper.cpp
54
 #define STEPPER_TIMER_RATE 2000000 // 2 Mhz
54
 #define STEPPER_TIMER_RATE 2000000 // 2 Mhz

+ 1
- 1
Marlin/src/HAL/STM32F1/timers.cpp Ver fichero

40
  * Timer_clock1: Prescaler   2 ->  36    MHz
40
  * Timer_clock1: Prescaler   2 ->  36    MHz
41
  * Timer_clock2: Prescaler   8 ->   9    MHz
41
  * Timer_clock2: Prescaler   8 ->   9    MHz
42
  * Timer_clock3: Prescaler  32 ->   2.25 MHz
42
  * Timer_clock3: Prescaler  32 ->   2.25 MHz
43
- * Timer_clock4: Prescaler 128 -> 562.5  kHz
43
+ * Timer_clock4: Prescaler 128 -> 562.5  KHz
44
  */
44
  */
45
 
45
 
46
 /**
46
 /**

+ 1
- 1
Marlin/src/HAL/TEENSY31_32/timers.h Ver fichero

41
 #define FTM0_TIMER_PRESCALE_BITS 0b011
41
 #define FTM0_TIMER_PRESCALE_BITS 0b011
42
 #define FTM1_TIMER_PRESCALE_BITS 0b010
42
 #define FTM1_TIMER_PRESCALE_BITS 0b010
43
 
43
 
44
-#define FTM0_TIMER_RATE (F_BUS / (FTM0_TIMER_PRESCALE)) // 60MHz / 8 = 7500kHz
44
+#define FTM0_TIMER_RATE (F_BUS / (FTM0_TIMER_PRESCALE)) // 60MHz / 8 = 7500KHz
45
 #define FTM1_TIMER_RATE (F_BUS / (FTM1_TIMER_PRESCALE)) // 60MHz / 4 = 15MHz
45
 #define FTM1_TIMER_RATE (F_BUS / (FTM1_TIMER_PRESCALE)) // 60MHz / 4 = 15MHz
46
 
46
 
47
 #define HAL_TIMER_RATE         (FTM0_TIMER_RATE)
47
 #define HAL_TIMER_RATE         (FTM0_TIMER_RATE)

+ 1
- 1
Marlin/src/HAL/TEENSY35_36/timers.h Ver fichero

40
 #define FTM0_TIMER_PRESCALE_BITS 0b011
40
 #define FTM0_TIMER_PRESCALE_BITS 0b011
41
 #define FTM1_TIMER_PRESCALE_BITS 0b010
41
 #define FTM1_TIMER_PRESCALE_BITS 0b010
42
 
42
 
43
-#define FTM0_TIMER_RATE (F_BUS / FTM0_TIMER_PRESCALE) // 60MHz / 8 = 7500kHz
43
+#define FTM0_TIMER_RATE (F_BUS / FTM0_TIMER_PRESCALE) // 60MHz / 8 = 7500KHz
44
 #define FTM1_TIMER_RATE (F_BUS / FTM1_TIMER_PRESCALE) // 60MHz / 4 = 15MHz
44
 #define FTM1_TIMER_RATE (F_BUS / FTM1_TIMER_PRESCALE) // 60MHz / 4 = 15MHz
45
 
45
 
46
 #define HAL_TIMER_RATE         (FTM0_TIMER_RATE)
46
 #define HAL_TIMER_RATE         (FTM0_TIMER_RATE)

+ 3
- 3
Marlin/src/HAL/shared/HAL_SPI.h Ver fichero

38
  *  1 :  4 - 5 MHz
38
  *  1 :  4 - 5 MHz
39
  *  2 :  2 - 2.5 MHz
39
  *  2 :  2 - 2.5 MHz
40
  *  3 :  1 - 1.25 MHz
40
  *  3 :  1 - 1.25 MHz
41
- *  4 :  500 - 625 kHz
42
- *  5 :  250 - 312 kHz
43
- *  6 :  125 - 156 kHz
41
+ *  4 :  500 - 625 KHz
42
+ *  5 :  250 - 312 KHz
43
+ *  6 :  125 - 156 KHz
44
  *
44
  *
45
  *  On AVR, actual speed is F_CPU/2^(1 + index).
45
  *  On AVR, actual speed is F_CPU/2^(1 + index).
46
  *  On other platforms, speed should be in range given above where possible.
46
  *  On other platforms, speed should be in range given above where possible.

+ 1
- 1
Marlin/src/feature/digipot/digipot_mcp4451.cpp Ver fichero

82
 
82
 
83
 void DigipotI2C::init() {
83
 void DigipotI2C::init() {
84
   #if MB(MKS_SBASE)
84
   #if MB(MKS_SBASE)
85
-    configure_i2c(16); // Set clock_option to 16 ensure I2C is initialized at 400kHz
85
+    configure_i2c(16); // Set clock_option to 16 ensure I2C is initialized at 400KHz
86
   #else
86
   #else
87
     Wire.begin();
87
     Wire.begin();
88
   #endif
88
   #endif

+ 1
- 1
Marlin/src/module/planner.cpp Ver fichero

2495
         if (extruder_advance_K[active_extruder] * block->e_D_ratio * block->acceleration * 2 < SQRT(block->nominal_speed_sqr) * block->e_D_ratio)
2495
         if (extruder_advance_K[active_extruder] * block->e_D_ratio * block->acceleration * 2 < SQRT(block->nominal_speed_sqr) * block->e_D_ratio)
2496
           SERIAL_ECHOLNPGM("More than 2 steps per eISR loop executed.");
2496
           SERIAL_ECHOLNPGM("More than 2 steps per eISR loop executed.");
2497
         if (block->advance_speed < 200)
2497
         if (block->advance_speed < 200)
2498
-          SERIAL_ECHOLNPGM("eISR running at > 10kHz.");
2498
+          SERIAL_ECHOLNPGM("eISR running at > 10KHz.");
2499
       #endif
2499
       #endif
2500
     }
2500
     }
2501
   #endif
2501
   #endif

+ 1
- 1
Marlin/src/module/planner.h Ver fichero

883
     static void finish_and_disable();
883
     static void finish_and_disable();
884
 
884
 
885
     // Periodic handler to manage the cleaning buffer counter
885
     // Periodic handler to manage the cleaning buffer counter
886
-    // Called from the Temperature ISR at ~1kHz
886
+    // Called from the Temperature ISR at ~1KHz
887
     static void isr() { if (cleaning_buffer_counter) --cleaning_buffer_counter; }
887
     static void isr() { if (cleaning_buffer_counter) --cleaning_buffer_counter; }
888
 
888
 
889
     /**
889
     /**

Loading…
Cancelar
Guardar