Перейти к содержанию

MihaNN52

Members
  • Постов

    101
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Нижний Новгород

Электроника

  • Стаж в электронике
    1-2 года
  • Сфера радиоэлектроники
    МК

Посетители профиля

1 051 просмотр профиля

Достижения MihaNN52

Стажер

Стажер (3/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

2

Репутация

  1. Я поражен вашей манерой общения и искрометным юмором. К сожалению, к теме это отношения не имеет, но если вы будите настаивать то я начну обсуждать вас, а не шину. Не далее как пару часов назад, я дал понять что с вами конкретно обсуждать мне нечего, но вы зачем то это удалили.
  2. Нет они не держат. Неисправность появляется если HAL ждет ответа, а его нет. Самое простое это отключить SCL во время работы и получите тоже самое - HAL_BUSY . Если отключать SDA то будет просто HAL_TIMEOUT. После повторного подключения работа продолжается. Но если выдало HAL_BUSY и шины линии висят в 1 т.е все как положено, МК считает что шина занята.
  3. Вы можете подключить любое i2c устройство с с вашим самым правильным кодом и во время работы отключить физически SCL и получите HAL_BUSY и попробуйте после этого вернуть шину в работу.
  4. Часы 3231 конечно. Ни кто в реальные проекты всякое говно не покупает. Неисправность по часам появлялась и ранее во время разработки устройства, а это было почти 8 месяцев. И микросхемы часов стояли минимум три разных. Читал там есть пример как перезапустить шину регистрами но у меня так и не получилось это сделать на f103. Возможно из нас кто то делал подобное?
  5. Да пришлось отключить часы и использовать внутренний RTC контроллера. Сейчас проблема не появляется. Вопрос как вернуть шину в работу без перезагрузки МК.
  6. Не без часов, а без шины i2c которая лежит плашмя и на которой несколько устройств.
  7. У меня он тоже не часто появлялся. Но тут похоже микросхема часов дает сбой. Перезапуск чтения не помогает. Линия SDA висит а нуле. Перезагрузка так же не помогает, но с этим вроде как разобрался. А как продолжить чтение нет. Понятно что в идеале все должно работать без сбоев. Но наверное не правильно чтоб устройство вставало без реализованных попыток работать дальше.
  8. HAL_I2C_Master_Read и HAL_I2C_Mem_Read В любом случае если подчиненный не дает ответ приходит BUSSY и че дальше с ним делать не понимаю. Как его сбросить? Командой или по таймауту?
  9. Привет всем. Ни как не могу побороть HAL BUSY На F103; Может есть у кого решение? Происходит в случае не получения ответа от слейва и все встает колом. С меня что угодно, я чет уже замучился совсем.
  10. в обработчике ни каких задержек не надо, быстро сделали и дальше
  11. @Darth_Vader я дописал выше свой вариант.
  12. @Darth_Vader мая так и сделал. Но есть же захват. Мы ведь учимся. Суть в том что если я в обработчике ставлю запуск таймера у меня на этом этапе программа падает. Как не странно но таймер 1 запускается таким образом но он считает другое. А так приходится крутить таймер без дела. Что то тут не так) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) // обработчик внешних прерываний { if (GPIO_Pin == ECHO_Pin) {// если это пин echo:) if(!attachecho){ // Если Rising count = __HAL_TIM_GET_COUNTER(&htim4);// чтение таймер4 значения attachecho = true; //переключаем для второго захода } else { count = __HAL_TIM_GET_COUNTER(&htim4) - count;// чтение таймер4 значения printf("%d\n",count); attachecho = false; //переключаем для повтора } } }
  13. @MasterElectric я же сказал что регистры для меня темное пятно)) да f103
  14. Друзья так ка же замерить время с перехода с 0-1 и потом с 1-0. С функцией захвата разобрался она мне не поможет она ловит или от поднятия до поднятия или от падения до падения. А мне надо от поднятия до падения.
×
×
  • Создать...