Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллер с двумя UART (неполными)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
shb
От микроконтроллера требуется только два УАРТА и все буквально.
На 64 ноги и более есть. Хочется о 20-24 ногах.
Похоже таких нет? Или я ошибаюсь. Ядро может быть в принципе любое.
awtoap
Ну возьмите любой мелкий МК с одним аппаратным УАРТом, а второй реализуйте програмно.
rezident
Цитата(awtoap @ Sep 21 2007, 19:25) *
Ну возьмите любой мелкий МК с одним аппаратным УАРТом, а второй реализуйте програмно.

+1. Можно даже оба UART программно реализовать, если скорости небольшие. Вон г-н AVR хвастался, что делал на ATmega по-моему аж до 9 программных UART на скорости до 9600.
vvs157
Цитата(shb @ Sep 21 2007, 16:00) *
От микроконтроллера требуется только два УАРТА и все буквально.
На 64 ноги и более есть. Хочется о 20-24 ногах.
Похоже таких нет? Или я ошибаюсь. Ядро может быть в принципе любое.

У Maxim есть DS83C520 и подобные, правда в DIP40
shb
Да вот. Скорость нужна 115200. Не сделать програмно.
rezident
Цитата(shb @ Sep 21 2007, 20:51) *
Да вот. Скорость нужна 115200. Не сделать програмно.

Полный дуплекс или полудуплекс? Если полудуплекс, то вполне реально. Для MSP430 один полудуплексный софтовый UART на 115200 даже с кварцем 3,58МГц реализуется. http://www.gaw.ru/html.cgi/txt/app/micros/msp430/slaa078.htm
На каком-нибудь 16МГц AVR два полудуплексных софтовых UART на 115200 тоже не проблема. "Я так думаю!" (с) х/ф "Мимино" smile.gif.
_Pasha
Цитата(shb @ Sep 21 2007, 18:51) *
Да вот. Скорость нужна 115200. Не сделать програмно.


Возьмите Tiny2313, кварц 9.216 МГц.
Это ж целых 80 тактов сплошного удовольствия!
TxD2 повесите на OCR1
Rxd2 - тоже куда-нибудь+ таймер0 (OCR0)
Если мыслить ассемблерными категориями, то у Вас уйма времени
defunct
Цитата(shb @ Sep 21 2007, 15:00) *
От микроконтроллера требуется только два УАРТА и все буквально.
На 64 ноги и более есть. Хочется о 20-24 ногах.
Похоже таких нет? Или я ошибаюсь. Ядро может быть в принципе любое.

Как насчет 40-ка ног. ATMega162 (40 ног DIP/ 44 TQFP), легко доставаемый.
Всяко уже не 64.
Прохожий
Цитата(shb @ Sep 21 2007, 16:00) *
От микроконтроллера требуется только два УАРТА и все буквально.
На 64 ноги и более есть. Хочется о 20-24 ногах.
Похоже таких нет? Или я ошибаюсь. Ядро может быть в принципе любое.

PIC24FJ64GA002 - 24 ноги 2 USARTа.
SasaVitebsk
Цитата(shb @ Sep 21 2007, 17:51) *
Да вот. Скорость нужна 115200. Не сделать програмно.


T(115200)=8.6805mks
При частоте процессора 14745600 один период частоты составит 128 тактов. При правильном написании проги можно обеспечить ошибку не более 1.5%. Только оба канала необходимо делать совтовых и прерывания не применять.

Такого рода программа не вызывает никаких трудностей. С этой точки зрения колличество совтовых каналов будет определятся наличием свободных линий порта. Иными словами разница в реализации для 2 USARTов и 4 составит единицы процентов загруженности процессора.

Я только что реализовал на Си на 16МГц 12 программных каналов ШИМ с периодом 5кГц для управления ШД. Принципиально можно было бы сделать 24 канала (просто за раз выводится 3 порта).
_Pasha
Я в понедельник-вторник нечто похожее запускаю.
Данные: MEGA8/14.745600MHz/UART0=115200(Full Dpx)/UART1=9600(Full Dpx)
Обязательно проверю 2-й канал на 115200. И сообщу.

Цитата(SasaVitebsk @ Sep 21 2007, 21:20) *
Я только что реализовал на Си на 16МГц 12 программных каналов ШИМ с периодом 5кГц для управления ШД. Принципиально можно было бы сделать 24 канала (просто за раз выводится 3 порта).

8 - разрядных?
defunct
Цитата(SasaVitebsk @ Sep 21 2007, 20:20) *
Я только что реализовал на Си на 16МГц 12 программных каналов ШИМ с периодом 5кГц для управления ШД. Принципиально можно было бы сделать 24 канала (просто за раз выводится 3 порта).

smile.gif
А при чем тут ШИМ к УАРТу?
Разного поля ягоды. Или УАРТ у вас только "писатель" smile.gif

115200 программный c пяти-тактововой синхронизацией @14.7Mhz займет все ресурсы МК. Это при том, что код будет написан на асме. 128 тактов на бит, 128/5 - 25 тактов на период, 11 из них - вход/выход в обработчик прерывания - 14 тактов остается на обработку приема/передачи, а ведь еще "байт" уровень хорошо бы обслуживать, а на него уже ничего не останется.

С трехтактовой синхронизацией будет веселей - 42 такта на период, но и вероятность ошибки значительно подскочит (допуск отклонения частоты здесь будет (100/2 - 100/3)/10 = 1.7%.
SasaVitebsk
Цитата(defunct @ Sep 22 2007, 01:12) *
smile.gif
А при чем тут ШИМ к УАРТу?
Разного поля ягоды. Или УАРТ у вас только "писатель" smile.gif

smile.gif Я тут выпендрится хотел, а ты не даёшь. smile.gif
Цитата
115200 программный c пяти-тактововой синхронизацией @14.7Mhz займет все ресурсы МК. Это при том, что код будет написан на асме. 128 тактов на бит, 128/5 - 25 тактов на период, 11 из них - вход/выход в обработчик прерывания - 14 тактов остается на обработку приема/передачи, а ведь еще "байт" уровень хорошо бы обслуживать, а на него уже ничего не останется.

С трехтактовой синхронизацией будет веселей - 42 такта на период, но и вероятность ошибки значительно подскочит (допуск отклонения частоты здесь будет (100/2 - 100/3)/10 = 1.7%.

Все правильно считаешь. Но сделать всё равно можно. А поработав с Си, смею утверждать, что и на Си тоже. На IAR как минимум. Очень хорошо с портами работает. А байтовый уровень придётся размазать по периоду.

Конечно некрасиво, но сделать можно. Зато такую хрень можно на t2313 бомбануть. Или на м8. Меньше бакса стоимость. Если брать t2313 или m48, то можно на 18432000 работать, а это уже 160 тактов на бит.


Если задачу упростить, и не заморачиваться, то лучше использовать m64. Там 2 USART и цена на неё будет ниже чем у 162 к примеру. Думаю в пределах 4$.
yura-w
Цитата(shb @ Sep 21 2007, 16:00) *
От микроконтроллера требуется только два УАРТА и все буквально.
На 64 ноги и более есть. Хочется о 20-24 ногах.
Похоже таких нет? Или я ошибаюсь. Ядро может быть в принципе любое.


2UART апаратно есть в в корпусах 40/44 pin ATmega161,ATmega162; повторю defunct.
(зачем усложнять программными заморочками?)
sensor_ua
Если количество ног важно не как количество паек, а как следствие малого размера корпуса, то 64 ноги в малом размере есть - те же упомянутые M64/128 в MLF(или QFN - не помню уж), ну или TQFP с малым шагом - MSP149F14xx, LPC2103, а у Silabs их вааще зоопарк
=GM=
Цитата(shb @ Sep 21 2007, 14:51) *
Да вот. Скорость нужна 115200. Не сделать програмно.

Вот ещё вариант - возьмите восьминогую ATtiny25, и сделайте, как советовали два программных уарта. Думаю, с клоком 20 МГц можно сделать два уарта на 500 кБод.
mse
Цитата(defunct @ Sep 22 2007, 02:12) *
115200 программный c пяти-тактововой синхронизацией @14.7Mhz займет все ресурсы МК.
...
С трехтактовой синхронизацией будет веселей - 42 такта на период, но и вероятность ошибки значительно подскочит (допуск отклонения частоты здесь будет (100/2 - 100/3)/10 = 1.7%.

А смысл тогда применять бодовые кварцы? Ставить, что можно, по максимуму. М48@20. Уже 170 тактов. 57 на период. Прерывания можно не пользовать - опрашивать флаг готовности(сравнения) утроенно-бодового таймера в остатке цикла. Типа, что-то тратим на приём-передачу, что-то на ввод-вывод, а что осталось, на тупое ожидание тика.
Konst_777
Цитата(sensor_ua @ Sep 22 2007, 15:11) *
... а у Silabs их вааще зоопарк


48-pin TQFP (C8051F340/1/4/5) - не 24, но и не 64. Плюс, все, что надо уже есть на кристалле. Даже кварцевый генератор. Плюс - нормальная и не дорогая отладка.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.