Selaa lähdekoodia

Partially success.

Vladimir N. Shilov 2 vuotta sitten
vanhempi
commit
5b293cfb28
4 muutettua tiedostoa jossa 17 lisäystä ja 7 poistoa
  1. 8 0
      ReadMe.txt
  2. 3 1
      src/board.c
  3. 3 3
      src/i2c.c
  4. 3 3
      src/main.c

+ 8 - 0
ReadMe.txt

@@ -65,3 +65,11 @@ Display Ctrl	HT1632C (устаревшая, не лучший выбор)
 Небольшой затык...
 Небольшой затык...
 Нашёл причину "наложения" включенных светодиодов...
 Нашёл причину "наложения" включенных светодиодов...
 Пока(?) не работает чтение I2C.
 Пока(?) не работает чтение I2C.
+---
+2022.09.14
+
+Максимальная частота пищалки - 1980 Гц (ARR = 504).
+
+Внутренняя подтяжка OD выходов для I2C всё таки нужна.
+
+Прерывания от часов идут с частотой 1024 Гц, кажется я такое уже видел...

+ 3 - 1
src/board.c

@@ -155,6 +155,8 @@ static void GPIO_Init(void)
   // Pull-Up
   // Pull-Up
   GPIOA->PUPDR = (GPIOA->PUPDR & ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR15)) \
   GPIOA->PUPDR = (GPIOA->PUPDR & ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR15)) \
                 | (GPIO_PUPDR_PUPDR8_1 | GPIO_PUPDR_PUPDR15_0);
                 | (GPIO_PUPDR_PUPDR8_1 | GPIO_PUPDR_PUPDR15_0);
+  GPIOB->PUPDR = (GPIOA->PUPDR & ~(GPIO_PUPDR_PUPDR6 | GPIO_PUPDR_PUPDR7)) \
+                | (GPIO_PUPDR_PUPDR6_0 | GPIO_PUPDR_PUPDR7_0);
   // High Speed
   // High Speed
   GPIOA->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR8|GPIO_OSPEEDR_OSPEEDR15);
   GPIOA->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR8|GPIO_OSPEEDR_OSPEEDR15);
   GPIOB->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR3|GPIO_OSPEEDR_OSPEEDR5 \
   GPIOB->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR3|GPIO_OSPEEDR_OSPEEDR5 \
@@ -179,7 +181,7 @@ static void GPIO_Init(void)
   */
   */
   GPIOA->PUPDR |= (GPIO_PUPDR_PUPDR0_0|GPIO_PUPDR_PUPDR1_0|GPIO_PUPDR_PUPDR2_0 \
   GPIOA->PUPDR |= (GPIO_PUPDR_PUPDR0_0|GPIO_PUPDR_PUPDR1_0|GPIO_PUPDR_PUPDR2_0 \
                 |GPIO_PUPDR_PUPDR3_0|GPIO_PUPDR_PUPDR4_0|GPIO_PUPDR_PUPDR5_0 \
                 |GPIO_PUPDR_PUPDR3_0|GPIO_PUPDR_PUPDR4_0|GPIO_PUPDR_PUPDR5_0 \
-                |GPIO_PUPDR_PUPDR6_0|GPIO_PUPDR_PUPDR7_0|GPIO_PUPDR_PUPDR12_0);
+                |GPIO_PUPDR_PUPDR6_0|GPIO_PUPDR_PUPDR7_0);
 }
 }
 
 
 /**
 /**

+ 3 - 3
src/i2c.c

@@ -47,15 +47,15 @@ i2c_status_t i2c_check_err(void) {
  * @retval I2C return code
  * @retval I2C return code
  */
  */
 i2c_status_t user_i2c_read(const uint8_t id, const uint8_t reg_addr, uint8_t *data, const uint16_t len) {
 i2c_status_t user_i2c_read(const uint8_t id, const uint8_t reg_addr, uint8_t *data, const uint16_t len) {
+  /* wait for i2c */
+  while ( I2C1->ISR & I2C_ISR_BUSY ) { __NOP(); };
+
   st_Read = I2C_Ret_OK;
   st_Read = I2C_Ret_OK;
 
 
   Flag.I2C_RX_End = 0;
   Flag.I2C_RX_End = 0;
   Flag.I2C_RX_Err = 0;
   Flag.I2C_RX_Err = 0;
   Flag.I2C_TX_Err = 0;
   Flag.I2C_TX_Err = 0;
 
 
-  /* wait for i2c */
-  while ( I2C1->ISR & I2C_ISR_BUSY ) { __NOP(); };
-
   /* prepare i2c for sending reg addr */
   /* prepare i2c for sending reg addr */
   I2C1->CR2 &= ~(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RD_WRN);
   I2C1->CR2 &= ~(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RD_WRN);
   I2C1->CR2 |= (id | 1 << I2C_CR2_NBYTES_Pos);
   I2C1->CR2 |= (id | 1 << I2C_CR2_NBYTES_Pos);

+ 3 - 3
src/main.c

@@ -37,10 +37,10 @@ int main(void)
 
 
   /* Initialize Scheduler */
   /* Initialize Scheduler */
   RTOS_Init();
   RTOS_Init();
-//  RTOS_SetTask(Show_MMSS, 1000, 1000);
+
   buzer_On();
   buzer_On();
-  //tdelay_ms(500);
-  //buzer_Off();
+  tdelay_ms(100);
+  buzer_Off();
 
 
   /* Real-Time clock */
   /* Real-Time clock */
   RTC_Init();
   RTC_Init();