Написал небольшое Android приложение для AVR разработчиков. Оно позволяет рассчитывать значения регистров некоторых аппаратных модулей AVR микроконтроллеров, необходимых для задания их конфигурации.
С помощью этого приложения можно:
- рассчитывать значения TCNT и OCR регистров таймеров для заданного периода/частоты
- рассчитывать значения UBRR регистра для USART/UART модуля
- рассчитывать значение TWBR регистра для TWI модуля
- преобразовывать аналоговое напряжение в цифровое значение ADC
- конвертировать бинарные, десятичные и шестнадцатеричные цифры.
Приложение интуитивно понятное и не требует каких-либо инструкций по применению, если вы работаете с AVR и понимаете о каких регистрах идет речь.
Если расчетное значение меньше нуля, то в поле результата отображается прочерк «-».
Если расчетные значение больше допустимого, то в поле результата отображается надпись «overflow», то есть переполнение. При длительном нажатии на поле ввода «Baud rate» отображается окно со списком всех возможных скоростей.
Приложение бесплатное, без рекламы.
AVR Calculator
16/06/2016 - 15:30
Pavel Bobkov
Tagged under
Comments
С возвращением!!!
Ждем новых статей!!!
Какие планы? STM? ПЛИС?
Может на всякий случай куда нибудь выложить бэкап сайта. Много полезных материалов тут собрано.
Калькулятор -- это хорошо. Но, может быть, не стОит, чтобы баннер мозолил глаза, находясь в верхней части? Попытка заработать не осуждается, но разумный автор программы не станет делать так, чтобы его приложение сносили из-за того, что "прямо в глазу" торчит мелькающий баннер, а не то, что тебе нужно.
Маленький совет...
Спасибо за понимание!
UBRRH = ((unsigned)(F_CPU / (8.0 * BAUDRATE) - 0.5) >> 8) & 0x0F; UBRRL = ((unsigned)(F_CPU / (8.0 * BAUDRATE) - 0.5) >> 0) & 0xFF;
И пусть компилятор считает сам. И если мне понадобится изменить скорость или частоту работы таймера - я изменю соответствующий #define вместо того, чтобы искать калькулятор, а потом искать в программе все места, куда нужно вставить магические цифры из этого калькулятора.Попробовал использовать ваш калькулятор.
Задача: получить меандр 1 kHz на выходе OC2 МК Atmega32
На выходе вместо 1 kHz всего 127 Hz.
Частота МК 8 Mhz
Фьюзы H:99, L:E4
Я что-то не так делаю?
Code:
#include <avr/io.h>
int main(void)
{
PORTD = 0;
DDRD = _BV(PD7); // настраиваем PD7 как вывод OC таймера Т2
TCNT2 = 225;
OCR2 = 30;
TCCR2 = _BV(WGM21)|_BV(WGM20)| // Fast PWM
_BV(COM21)| // настраиваем вывод OC2
_BV(CS22)|_BV(CS21); // предделитель 256
}
https://www.dropbox.com/s/0hlredj4vby1jdl/Screenshot_2016-11-20-15-39-08.png?dl=0
Code:
OCR2 = 15;
TCCR2 = _BV(WGM21)|_BV(COM20)|_BV(CS22)|_BV(CS21);
В режиме Fast PWM таймер считает от 0 до максимального значения TCNT2. Получить в таком режиме меандр произвольной частоты не получится.
Хочу отметить, что при использовании внутреннего RC-генератора на выходе было 1040 Гц. С использованием внешнего кварца частота стала идеально точной.
RSS feed for comments to this post