Index: ctrl/firmware/Main/CubeMX/Core/Src/freertos.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/freertos.c	(revision 82)
+++ ctrl/firmware/Main/CubeMX/Core/Src/freertos.c	(revision 83)
@@ -23,12 +23,15 @@
 #include "main.h"
 #include "cmsis_os.h"
+#include "queue.h"
 
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 
-#include "stdio.h"
+#include <stdio.h>
 
 #include "keys_task.h"
 #include "eth_task.h"
+#include "mb_slave_task.h"
+#include "beeper_task.h"
 
 /* USER CODE END Includes */
@@ -43,6 +46,8 @@
 /* USER CODE BEGIN PD */
 
-#define KEYS_TASK_STACK_DEPTH_WORDS				  (128U)
-#define ETH_TASK_STACK_DEPTH_WORDS				  (2048U)
+#define KEYS_TASK_STACK_DEPTH_WORDS					(128U)
+#define ETH_TASK_STACK_DEPTH_WORDS					(2048U)
+#define MB_SLAVE_TASK_STACK_DEPTH_WORDS				(1024U)
+#define BEEPER_TASK_STACK_DEPTH_WORDS				(128U)
 
 /* USER CODE END PD */
@@ -56,10 +61,22 @@
 /* USER CODE BEGIN Variables */
 
-static StackType_t keysTaskStackBuffer[KEYS_TASK_STACK_DEPTH_WORDS]				__attribute__((section(".DTCM_RAM")));
-static StackType_t ethTaskStackBuffer[ETH_TASK_STACK_DEPTH_WORDS]				__attribute__((section(".DTCM_RAM")));
+static StackType_t keysTaskStackBuffer[KEYS_TASK_STACK_DEPTH_WORDS]						__attribute__((section(".DTCM_RAM")));
+static StackType_t ethTaskStackBuffer[ETH_TASK_STACK_DEPTH_WORDS]						__attribute__((section(".DTCM_RAM")));
+static StackType_t mbSlaveTaskStackBuffer[MB_SLAVE_TASK_STACK_DEPTH_WORDS]				__attribute__((section(".DTCM_RAM")));
+static StackType_t beeperTaskStackBuffer[BEEPER_TASK_STACK_DEPTH_WORDS]					__attribute__((section(".DTCM_RAM")));
+static uint8_t beeperQueueStorageArea[BEEPER_QUEUE_SIZE * BEEPER_QUEUE_ITEM_SIZE]		__attribute__((section(".DTCM_RAM")));
+
 static StaticTask_t keysTaskBuffer;
 static StaticTask_t ethTaskBuffer;
+static StaticTask_t mbSlaveTaskBuffer;
+static StaticTask_t beeperTaskBuffer;
+static StaticQueue_t beeperQueueBuffer;
+
 static const char* const keysTaskName = "ScanKeysTask";
 static const char* const ethTaskName = "EthTask";
+static const char* const mbSlaveTaskName = "MBSlaveTask";
+static const char* const beeperTaskName = "BeeperTask";
+
+
 
 /* USER CODE END Variables */
@@ -133,5 +150,8 @@
 
   /* USER CODE BEGIN RTOS_QUEUES */
-  /* add queues, ... */
+
+  beeperQueue = xQueueCreateStatic(BEEPER_QUEUE_SIZE, BEEPER_QUEUE_ITEM_SIZE, beeperQueueStorageArea, &beeperQueueBuffer);
+  if (beeperQueue == NULL) printf("Cannot create Beeper Queue!\n");
+
   /* USER CODE END RTOS_QUEUES */
 
@@ -148,4 +168,10 @@
   r = xTaskCreateStatic(ethTaskStart, ethTaskName, ETH_TASK_STACK_DEPTH_WORDS, NULL, 25, ethTaskStackBuffer, &ethTaskBuffer);
   if (r == NULL) printf("Cannot create %s!\n", ethTaskName);
+
+  r = xTaskCreateStatic(mbSlaveTaskStart, mbSlaveTaskName, MB_SLAVE_TASK_STACK_DEPTH_WORDS, NULL, 25, mbSlaveTaskStackBuffer, &mbSlaveTaskBuffer);
+  if (r == NULL) printf("Cannot create %s!\n", mbSlaveTaskName);
+
+  r = xTaskCreateStatic(beeperTaskStart, beeperTaskName, BEEPER_TASK_STACK_DEPTH_WORDS, NULL, 25, beeperTaskStackBuffer, &beeperTaskBuffer);
+  if (r == NULL) printf("Cannot create %s!\n", beeperTaskName);
 
   /* USER CODE END RTOS_THREADS */
@@ -167,4 +193,7 @@
 {
   /* USER CODE BEGIN mainTaskStart */
+
+  UNUSED(argument);
+
   /* Infinite loop */
   for(;;)
Index: ctrl/firmware/Main/CubeMX/Core/Src/main.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 82)
+++ ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 83)
@@ -125,5 +125,5 @@
   MX_GPIO_Init();
   MX_DMA_Init();
-  MX_MDMA_Init();
+  //MX_MDMA_Init();
   MX_RTC_Init();
   MX_SPI4_Init();
Index: ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c	(revision 82)
+++ ctrl/firmware/Main/CubeMX/Core/Src/sdmmc.c	(revision 83)
@@ -46,5 +46,5 @@
   hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B;
   hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_ENABLE;
-  hsd1.Init.ClockDiv = 1;
+  hsd1.Init.ClockDiv = 2;
   /* USER CODE BEGIN SDMMC1_Init 2 */
 
Index: ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 82)
+++ ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 83)
@@ -298,4 +298,8 @@
   /* USER CODE BEGIN USART2_IRQn 0 */
 
+  extern modbus_t lb_mbData;
+  MODBUS_UART_IRQHandler(&huart2, &lb_mbData);
+  return;
+
   /* USER CODE END USART2_IRQn 0 */
   HAL_UART_IRQHandler(&huart2);
@@ -395,8 +399,8 @@
 {
   /* USER CODE BEGIN USART10_IRQn 0 */
-  extern modbus_t lb_mbData;
-  MODBUS_UART_IRQHandler(&huart10, &lb_mbData);
-  return;
-
+
+  //extern modbus_t lb_mbData;
+  //MODBUS_UART_IRQHandler(&huart10, &lb_mbData);
+  //return;
 
   /* USER CODE END USART10_IRQn 0 */
Index: ctrl/firmware/Main/CubeMX/Core/Src/usart.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/usart.c	(revision 82)
+++ ctrl/firmware/Main/CubeMX/Core/Src/usart.c	(revision 83)
@@ -38,4 +38,6 @@
   /* USER CODE BEGIN USART2_Init 0 */
 
+  // This USART is responsible for Modbus Slave operations
+
   /* USER CODE END USART2_Init 0 */
 
Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 82)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 83)
@@ -348,5 +348,5 @@
 NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true\:false
 NVIC.TIM3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
-NVIC.TIM7_IRQn=true\:15\:0\:false\:false\:true\:false\:false\:true\:true
+NVIC.TIM7_IRQn=true\:15\:0\:true\:false\:true\:false\:false\:true\:true
 NVIC.TIM8_CC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
 NVIC.TimeBase=TIM7_IRQn
@@ -620,5 +620,5 @@
 RCC.I2C123Freq_Value=100000000
 RCC.I2C4Freq_Value=100000000
-RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
+RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL2_VCI_Range-AdvancedSettings,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
 RCC.LPTIM1Freq_Value=100000000
 RCC.LPTIM2Freq_Value=100000000
@@ -629,4 +629,5 @@
 RCC.MCO2PinFreq_Value=100000000
 RCC.PLL2FRACN=0
+RCC.PLL2_VCI_Range-AdvancedSettings=RCC_PLL2VCIRANGE_3
 RCC.PLLFRACN=0
 RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
