STM 32 вопрос
- Войдите на сайт для отправки комментариев
Пнд, 11/06/2018 - 02:33
Здравствуйте.
Как преобразовать это для stm32 ?
ISR (TIMER1_OVF_vect) { static uint8_t n=0; OCR1A = OCR1B= sine_wave[n]; n++; }
ISR (TIMER1_OVF_vect) { static uint8_t n=0; OCR1A = OCR1B= sine_wave[n]; n++; }
Без программы инициализации таймера сказать ничего нельзя. Непонятно в каком режиме работает таймер.
Это не поможет. В СТМе совсем другие регистры.
Это поможет. Разобраться бы зачем это надо. Две ноги выдают два разных PWM. Длительность определяется массивом размером 256 точек. Не соображу в чём разность выдаваемых сигналов. Неначем сейчас проверить.
http://catethysis.ru/stm32-tim-dma-pwm-sin/
Как я понимаю здесь именно то что надо для STM. Процессоры разные, поэтому прямо переделать нельзя.
Точно режимы уже не помню, лезть в даташит - лениво. Сильно похоже что это режим счета таймера1 по регистру ICR до 512, с делителем на 4 или сколько-то там и настройкой двух ног на выдачу противофазного сигнала по массиву данных, возможно "синус".
В STM32 вроде как есть специальный режим для такой выдачи. Тупо надо залезть в даташит, посмотреть что за режим и на какой частоте пашет и подсунуть аналогичные настройки в СТМ-ку. Делов на 3 рубля. Но "этот" код - не подойдет, всяко. Да и среду разработки поменять тоже стоит.
Arhat109-2, это он фрагмент моего скетча привёл. Почему сразу нельзя дать ссылку на пост с полной программой и её описанием, а вынуждать людей гадать по вырванным кускам что это за хрень -непонятно.
Надеюсь, по памяти правильно его понял? :)
Arhat109-2, ну да всё правильно. делитель правда /1.
nik182
Спасибо за линк, сохранил и проверю.
gal, Тут железная привязка к архитектуре М.К. AVR, переделать можно только под другие 8-битные AVR. Для СТМ нужно всё писать с "чистого листа".
Dimax
А Вы можете перевести на русский язык что написано в строчках #4 - # 15 ?
Сообщение #2
Вот нашел - изучаю
https://arduino-info.wikispaces.com/Timers-Arduino
gal, в первых двух строчках в регистрах TCCR1A и TCCR1B устанавливаются в единицу нужные разряды, а в строчках 4 и 5 - херня какая-то. Не знаю, будет ли это компилироваться (а почему бы и нет?), но выполняться точно не будет.
gal, по моему вам стоит начать изучение СИ с самого начала. - битовых операций (операции сдвига, поразрядные И/ИЛИ/исключающее ИЛИ)
Да, это и делаю, вот здесь получше видно.
http://sculland.com/ATmega168/Interrupts-And-Timers/16-Bit-Timer-Setup/
Которая строчка определяет частоту синуса ?
Строка 4 и 15 из второго сообщения.
Правильно ли я разобрался ?
Нашёл только один выход.