atrel Опубликовано 5 апреля, 2015 Поделиться Опубликовано 5 апреля, 2015 Думаю проблему атомарных операций следует пока опустить. Ибо возник вопрос о прерываниях. Решил помигать диодом с определённой точностью void main() { //------------------------------------------------------- //Включаем тактирование //RCC AHB 0x40021000 //Порт C, APB2 0x018 value IOPCEN 0x10 //Таймер 6, APB1 0x01c value TIM6EN 0x10 *(unsigned long*)(0x40021018) |= 0x10; *(unsigned long*)(0x4002101c) |= 0x10; //------------------------------------------------------- //Настройка выхода Порт C 8, 9 //GPIOC 0x40011000 //CRH 0x04 // 8, 9 Пуш-пул 2 МГц value 0x22 *(unsigned long*)(0x40011004) = 0x22; //------------------------------------------------------- //Настройка таймера 6 //TIM6 0x40001000 //TIM6_PSC 0x28 Делитель на 24000 ( 0 - делим на единицу) //TIM6_ARR 0x2c Точка начала прерывания 1000 //TIM6_DIER 0x0c Разрешаем прерывание от таймера value UIE 0x01 //TIM6_CR1 0x00 Старт value CEN 0x01 *(unsigned long*)(0x40001028) = 0x9c3f; *(unsigned long*)(0x4000102с) = 0x3e8; *(unsigned long*)(0x4000100с) = 0x01; *(unsigned long*)(0x40001000) = 0x01; //------------------------------------------------------- while(1); } (Это копия данного кода) , но как определить случилось прерывание или нет. Где его искать? В оригинале легко и просто обращаются к обработчику. Однако, непонятно откуда у него ноги растут. Буду рад вашей помощи. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 5 апреля, 2015 Поделиться Опубликовано 5 апреля, 2015 Где его искать?Написать обработчик. Там, где будет он, и искать прерывание Странный какой-то вопрос, если честно... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
atrel Опубликовано 5 апреля, 2015 Поделиться Опубликовано 5 апреля, 2015 (изменено) Вопрос более конкретный. // Обработчик прерывания TIM6_DAC void TIM6_DAC_IRQHandler(void) { TIM6->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF GPIOC->ODR^=(GPIO_Pin_9 | GPIO_Pin_8); //Инвертируем состояние светодиодов } На что реагирует данный отрезок кода? здесь Конечно понятно, что на прерывание. (Я тоже Капитан Очевидночть). Но чем обусловленно оно: значением бита в регистре? (Каком?, может быть TIMx_SR ?) Изменено 5 апреля, 2015 пользователем atrel 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Alex Опубликовано 5 апреля, 2015 Поделиться Опубликовано 5 апреля, 2015 Но чем обусловленно оноСобытием, вызвавшим его.Если от таймера (как в Вашем случае), то по его совпадению с регистром компаратора. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 5 апреля, 2015 Поделиться Опубликовано 5 апреля, 2015 (изменено) механизм прерываний в STM несколько отличается от восьмибиток технически, но принцип тот же самый и вопросы весьма странные для человека с опытом флаги запроса прерываний генерятся блоками (по одному, или по несколько, в зависимости от блока), контроллер прерываний их собирает и обрабатывает в порядке разрешений и приоритета, определенного в этом самом контроллере. Каждое прерывание имеет свой собственный вектор, который записан в своей определенной (именованной!) ячейке памяти. Флаги прерываний находятся в регистрах контроллера прерываний. На то он и контроллер ) Вот эти самые имена прописаны в библиотечных хидерах, и их можно легко отыскать (там список) TIM6_DAC_IRQHandler это одно из таких имен. Они совершенно конкретные. В принципе изменив код библиотеки можно придумать и свое имя, если прям сильно охота. Но делать это совершенно бестолково Есть еще 4 пустых заглушки, которые привязаны к SysTimer и всегда обязаны быть. По крайней мере для того, чтобы выполнился пустой обработчик. Можно их перегрузить, если нужен свой обработчик, а можно просто найти в одном из файлов проекта (включается стандартно) и дописать код прямо в уже готовый скелет. И эти обработчики кстати нельзя запретить, как и запретить прерывания от SysTimer с помощью контроллера прерываний. все элементарно, но есть некоторые тонкости например, если будете писать на С++, надо обработчики прерываний обязательно делать extern "C"{}. Иначе они в пространстве имен не найдутся при сборке флаги прерываний сбрасываются автоматически при входе в процедуру прерывания. Не надо их сбрасывать еще мож чего вспомню Изменено 5 апреля, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Aid1992 Опубликовано 9 мая, 2015 Поделиться Опубликовано 9 мая, 2015 Устанавливаю GNU для CooCox v.2 beta (система Windows XP Professional SP3), выскакивает вот такая ошибка, и установка не может завершится. У кого какие предположения есть по этому поводу? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aid1992 Опубликовано 9 мая, 2015 Поделиться Опубликовано 9 мая, 2015 Проблему решил так: Качал архив тут: https://launchpad.net/gcc-arm-embedded файл gcc-arm-none-eabi-4_9-2015q1-20150306-win32.zip Кокос работает, Вин ХР.. В переменные среды, на всякий, прописал путь С:\GCCARM\bin 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 10 мая, 2015 Поделиться Опубликовано 10 мая, 2015 дык он в переменные среды вроде как сам пишет 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Aid1992 Опубликовано 10 мая, 2015 Поделиться Опубликовано 10 мая, 2015 Ну я на всякий случай сам прописал. А то мало ли... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 10 мая, 2015 Поделиться Опубликовано 10 мая, 2015 лишние опасения. Все и без переменных работает 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
apis1 Опубликовано 5 марта, 2016 Поделиться Опубликовано 5 марта, 2016 Подскажите пожалуйста, с какой версией CoIde работает плата STM32F429-DISCO? Спасибо 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 с любой будет работать 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
V2oD2o Опубликовано 25 октября, 2016 Поделиться Опубликовано 25 октября, 2016 Есть у кого нибудь дистрибутив кокоса? у них сайт не доступен 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aid1992 Опубликовано 22 марта, 2017 Поделиться Опубликовано 22 марта, 2017 В 25.10.2016 в 15:29, V2oD2o сказал: Есть у кого нибудь дистрибутив кокоса? у них сайт не доступен Если еще актуально, могу залить на облако. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.