소스 검색

Partially success.

Vladimir N. Shilov 2 년 전
부모
커밋
5b293cfb28
4개의 변경된 파일17개의 추가작업 그리고 7개의 파일을 삭제
  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.
+---
+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
   GPIOA->PUPDR = (GPIOA->PUPDR & ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR15)) \
                 | (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
   GPIOA->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR8|GPIO_OSPEEDR_OSPEEDR15);
   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 \
                 |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
  */
 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;
 
   Flag.I2C_RX_End = 0;
   Flag.I2C_RX_Err = 0;
   Flag.I2C_TX_Err = 0;
 
-  /* wait for i2c */
-  while ( I2C1->ISR & I2C_ISR_BUSY ) { __NOP(); };
-
   /* prepare i2c for sending reg addr */
   I2C1->CR2 &= ~(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RD_WRN);
   I2C1->CR2 |= (id | 1 << I2C_CR2_NBYTES_Pos);

+ 3 - 3
src/main.c

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