Уважаемые Коты! Для удобства расчета регистра скорости передачи данных USART своял небольшую программу. Выкладываю может кому пригодится. Проект в среде Visual Studio 2015 Community. Проект с открытым кодом, можно изменять, дополнять и прочее. Интерфейс простой думаю разобраться труда не составит. Для запуска открыть файл приложения \visual studio 2015\Projects\Расчет USART\Расчет USART\obj\Debug\Расчет USART. Так как студия новая работать будет в ОС Windows 7, 8, 10.
в стандартной поставке AVR Toolchain (и даже в WinAVR) имеется файлик setbaud.h, который решает все проблемы с расчетом значений регистров USART... всего-то надо ознакомиться с документацией на инструмент, и тогда не придется делать приспособление к молотку для закручивания шурупов.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Писать программу для компьютера, да еще на бейсике, да еще такого размера! Когда достаточно 1 строчки макроса... ну 2-5 если с проверками и присвоениями. #define UART_UBRR(baud) ((F_CPU/4/(baud)+1)/2) И все! При сильном желании можно хоть на лету менять скорость обмена (но лучше, конечно, вычислять в программе, а не макросе), при изменении частоты кварца не надо ничего пересчитывать. ARV, вы правы, конечно, есть такой файлик, но одну формулу можно и в код вставить.
ATrosh, всё это, конечно, похвально и т.п. А вы тестировали результаты своей программы? Насколько результаты соответствуют данным из даташитов? А-то, знаете-ли, в интернетах полно всякого.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
так файлик тот по сути и есть одна формула. зачем делать свою, если при этом есть шанс ошибиться (например, многие не понимают, зачем UL в конце числовых констант)? ну и если уж совсем честно, то там еще есть бит "удвоенной скорости", старший-младший байты... так что в итоге будет не одна формула, а чуток поболе...
я юзаю файлик
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
На счет рассудка надо подумать . Если у меня паранойя это не значит, что мне ничего не угрожает. Зачем это надо: - больше нравится писать на ассемблере, может там и есть какая нибудь фишка для расчетов - на графике без расчетов можно прикинуть какая частота больше подходит к нужной скорости передачи с наименьшей ошибкой, наверно не лишне - то что на бейсике так это в новой студии не имеет значения, дело в привычке. А мне для тренировки. - формула расчета как раз из описания ATTiny2313
напишите #include <util/setbaud.h>, а затем зажмите Ctrl и кликните на этом тексте - если студия на самом деле так хороша, как о ней говорят, у вас откроется этот файл... ну и можно будет понять, по какому пути он открылся - в свойствах...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Если я правильно понял необходимо сперва проект на С создать. Если asm то открыть калькулятор
Добавлено after 11 minutes 42 seconds: Ладно, закроем тему. Пустые разговоры. Рассчитать значение регистра можно и бумажке. Идея была как быстро прикинуть на этапе проектирования.
.equ F_CPU=14745600 .equ BAUD=230400 ;---------- LDI XH,HIGH((F_CPU/4/(baud)+1)/2) LDI XL,LOW((F_CPU/4/(baud)+1)/2) ; "макрос" от COKPOWEHEU заносит 8 и скорость 204800??? ;---------- LDI YH,HIGH(F_CPU/8/BAUD-1) LDI YL,LOW(F_CPU/8/BAUD-1) ; выражение из DS заносит 7 и скорость 230400!!! ;---------- OUT UBRRH,YH OUT UBRRL,YL ;*************************************************
Все, понял, там не +1 а -1 должно быть. Писал из головы, немудрено ошибиться. Это округление, для "некруглых" кварцев дает более точный результат. #define UART_UBRR(baud) ((F_CPU/4/(baud)-1)/2) Вывод формулы из даташитовской: F_CPU/8/b - 1 --> (F_CPU/8/b - 1) + 0.5 --> (F_CPU/4/b - 2)/2 + 1/2 --> (F_CPU/4/b - 2 + 1)/2 --> (F_CPU/4/b - 1)/2
Цитата:
Ассемблер прекрасно справляется и без бумажки.
В ассемблере тоже есть макросы, причем в avrasm2 или avr-as даже gcc-шные.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения