EdgeAligned 53 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба А отладчик то есть? В режиме отладки посмотреть состояние битов в регистрах. Как у нас раньше говорили, "местные телепаты в отпуске, а мы не ясновидящие" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 (изменено) · Жалоба Есть, но судя по воспоминаниям от I2C, иное "шевеление" приводит к изменению флагов и тщетности попыток. Надежда только на вошебный светодиод. (= P.S. Может я ошибаюсь, или у меня отладчик "не той системы" (gdb + openocd + st-link-v2 из поднебесной) Изменено 15 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 1 час назад, ozforester сказал: Вот так выглядит, напрмер настройка прерывания от ноги INT pcf8574 (на ней кнопка) к PA3. NVIC_ISER0 |= (1 << 6) ; // enable exti2_3 Может всё-таки стоит прочитать мануал на процессор? И писать правильно: NVIC_ISER0 = 1 << 6; // enable exti2_3 То же самое касается и остального табуна '|=' и '&='. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба Да я даже больше скажу - в стандартной поставке CMSIS уже прописаны функции-обертки для вкл/выкл прерываний: NVIC_EnableIRQ(EXTI2_IRQn); // разрешение первыаний Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 (изменено) · Жалоба Да, это здесь не принципиально, но за предупреждение спасибо, буду внимательнее впредь. (= Так то ничего кроме мануалов и не читал, все по ним родимым, сначала даже не ассемблере пробовал, но с кортексом это уже умомительное занятие. Spoiler С осциллографом окзалось, что отправляется два пакета почти одновременно, первый включает светодиод, а второй выключает. На gpio при этом светодиод светится секунду. "Шифт регистр", - подумал Штирлиц. Надо покопаться с I2C, тем более припоминаю что-то там такое с отправкой единственного байта.. Списибо за помощь, коллеги. Изменено 15 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба А во-вторых, сама по себе PCF8574 использует выход INT только для информирования МК о том, что ВХОДНЫЕ сигналы изменились и нужно прочитать их, запросив через I2C. А когда микросхема работает на выход, тогда INT не имеет значения. По картинке из мануала там написано: "Запись 0 не дает эффекта" (то есть, не запрещает прерывание. Следовательно, сдвоенную операцию |= (чтение регистра и логическое ИЛИ и его содержимым) можно заменить на прямую запись в регистр = Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 10 minutes ago, EdgeAligned said: CMSIS Это все немного позже. Мысленно и по наставлениям CMSIS первый в очереди, но я же не виндоз - или сегодня изучаю stm32, или cmsis. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба Далее, в этих случаях RCC_AHBENR |= (1<<17) принято писать не цифрами, а текстом. Номера битов навряд ли кто из нас так уж и помнит наизусть. А вот текстом RCC_AHBENR_GPIOAEN - сразу понятно. Писать номера битов, а не текстовые их обозначения иногда учат некоторые преподы старой формации, выросшие еще на перфокартах... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 5 minutes ago, EdgeAligned said: PCF8574 Про особенности INT знаю, там достаточно много оговорок, которые влияют на предсказуемую работу схемы. У меня их несколько штук, поэтому и использую INT, чтобы не дергаться лишний раз. На PCF будет кнопочная матрица редкотыкаемая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба CMSIS - это не что-то отдельное, а стандарт описания битов и регистров ARM-ядерных микроконтроллеров. Cortex Microcontroller Software Interface Standard поэтому учиться надобно сразу правильно. Хотя, то, что начали не на ассемблере, а на Си - это уже огромный шаг вперед 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 11 minutes ago, EdgeAligned said: не дает эффекта Картинка в том смысле, что чтение регистра не дает и отрицательного эффекта, лишь несколько лишних тактов. Опечатка не шибко злая. Которые с эффектом, те быстро обнаруживаются. (= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 2 часа назад, ozforester сказал: void pcf8574_int( void ){ RCC_AHBENR |= (1<<17); // clock port A GPIOA_MODER &= ~(0b11 << 6) ; // PA3 input mode Так тоже делать не стоит. У вас записываемое слово только отправилось в RCC_AHBENR, но ещё возможно, что не записалось. Так как в CPU может быть буфер записи. А вы уже делаете чтение регистра, тактирование которого возможно ещё не включено. После записи в любой регистр тактирования (записи, включающей какой-то из его битов), следует выполнить синхронизацию. Или обратным чтением этого регистра или вставить инструкцию типа DMB или DSB. PS: И в каком это МК тактирование GPIO включается в AHBENR? В STM32F103 оно вроде находится в APB2ENR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 18 minutes ago, EdgeAligned said: RCC_AHBENR_GPIOAEN С cmsis понятное дело удобнее сивольная записть, а сейчас что я там в хидере понапишу все равно нужно лезть и проверять. Мне же самому и лезть. Время экономлю же ж. (= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 15 октября, 2023 Опубликовано 15 октября, 2023 (изменено) · Жалоба 20 minutes ago, jcxz said: И в каком это МК Верно, где-то выше был момент , когда с f103 заработало и произошло переключение на f030. Про особенности записи в конкретный регистр обычно замечаю предупреждения. Может с RCC регистрами что-то пропустил, перечитаю более внимательно. Если ткнете пальцем в страницу референса, сильно облегчите задачу. Очень внимательно отношусь к подобным мелочам, так как это базовые знания. Изменено 15 октября, 2023 пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 октября, 2023 Опубликовано 15 октября, 2023 · Жалоба 1 минуту назад, ozforester сказал: Про особенности записи в конкретный регистр обычно замечаю предупреждения. Может с RCC регистрами что-то пропустил, перечитаю более внимательно. Если ткнете пальцем в страницу референса, сильно облегчите задачу. Это про любой регистр справедливо. Это не "особенность записи в конкретный регистр". Если что-то записываете в регистры управления, что потом влияет на последующие операции, то нужно всегда учитывать это. Включение тактирования - это одна из таких вещей. Справедливо для любого ARM с матрицей шин и буферами записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться