Конвертер скорости USART

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Родился
Сообщения: 5
Зарегистрирован: Чт июн 25, 2009 15:22:06

Сообщение vitaliy85 »

Добрый день всем!!!

Появилась необходимость сделать конвертер скорости USARTa на авр. Например, принимает по 19600 передает по 2400 и наоборот.
Подскажите, как это осуществить, имея один USART на микросхеме. Может у кого-то есть исходники.

Зараннее спасибо
Реклама
Аlex

Сообщение Аlex »

НаписАть програмный. Если ничем серьёзным больше МК не будет заниматься, то проблем не вижу никаких.
Реклама
Родился
Сообщения: 5
Зарегистрирован: Чт июн 25, 2009 15:22:06

Сообщение vitaliy85 »

Ну и подскажите же, как это сделать
Аlex

Сообщение Аlex »

Для начала почитайте про USART, как работает, как реализуется и с чем его едят. А там всё сами поймёте.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

В сети есть при меры программной реализации USART'a. Если не найдете сами - поищу в закромах, где-то лежали, но сам я ими не пользовался.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

vitaliy85
Вы опишите лучше что не получается, а не как сделать.
Исходные данные, которые вы привели, недостаточны для советов "как это сделать".
Реклама
Родился
Сообщения: 5
Зарегистрирован: Чт июн 25, 2009 15:22:06

Сообщение vitaliy85 »

asteroid7 писал(а):vitaliy85
Вы опишите лучше что не получается, а не как сделать.
Исходные данные, которые вы привели, недостаточны для советов "как это сделать".
Не понятно, какие прерывания будут использоваться вместо стандартных уартовских, какие таймеры/счетчики будут задействованы при этом. Алгоритм работы и т.д.

Дайте, плз, ссылки на описание, если есть у кого то.

И какие еще исходные данные нужны? Из УАРТа одной скорости, сделать другой и все...

Спасибо
Родился
Сообщения: 5
Зарегистрирован: Чт июн 25, 2009 15:22:06

Сообщение vitaliy85 »

Аlex писал(а):НаписАть програмный. Если ничем серьёзным больше МК не будет заниматься, то проблем не вижу никаких.
Сами писали что-то типа такого? Можете помочь? Показать какие-то примеры? Исходники?
Аlex

Сообщение Аlex »

ПисАл, и не раз. Но, к сожалению для Вас, пишу под PIC'и.
Так что мои примеры Вам ничего не дадут толкового.
Я реализовывал с помощью таймеров. Хотя если просто переходник и всё, то можно и без них обойтись.
Последний раз редактировалось Аlex Чт июн 25, 2009 22:20:20, всего редактировалось 1 раз.
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

vitaliy85 писал(а): Например, принимает по 19600 передает по 2400 и наоборот. Подскажите, как это осуществить, имея один USART на микросхеме.
Это и есть ОДИН UART
Контактная информация:
Открыл глаза
Сообщения: 70
Зарегистрирован: Пт янв 30, 2009 18:02:40

Сообщение mackerel »

Действительно, задача непонятна. Один UART только принимает, другой - только передаёт? Оба принимают - передают? Т.е. симплекс, полудуплекс, дуплекс?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 335
Зарегистрирован: Вт сен 11, 2007 10:27:08
Откуда: Киев

Сообщение __Alexander »

А переключить в регистре скорость религия не позволяет?
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

vitaliy85 - ответьте на вопросы:
1) микроконтроллер какого производителя вам приемлем;
2) на каком языке программирования нужны примеры;
3) каков объем пакетов, т.е. символов в передаче;
4) какова периодичность передач;
5) где больший приоритет приема данных.
Иначе так и будете сопли здесь собирать.

Ниже детские ассменные примеры под PIC
(аппаратьные и без таймеров)

Код: Выделить всё

; сегмент передачи от МК в сторону ПК (9600, 8-N-1, 104 мкс)
Tx          movlw       .9          ; 8+1, т.е + бит C из STATUS
            movwf       Reg_2
            bcf         STATUS,C    ; подготовка стартового бита
m1          btfsc       STATUS,C
            goto        bit1
            goto        bit0
bit1        bsf         PORTA,1     ; передача единицы
            call        Pause
            goto        m2
bit0        bcf         PORTA,1     ; передача нуля
            call        Pause
            goto        m2
m2          rrf         Reg_3,F     ; сдвиг вправо для передачи с младшего бита
            decfsz      Reg_2,F
            goto        m1
            bsf         PORTA,1     ; установка 1 - "режим ожидания"
            call        Pause
            return
;delay = 95 machine cycles
Pause       movlw       .31
            movwf       Reg_1
wr          decfsz      Reg_1, F
            goto        wr
            nop
            return

Код: Выделить всё

; сегмент приема данных от ПК на стороне МК (9600, 8-N-1, 104 мкс)
Rx          movlw       .8          ; ровно 8 бит
            movwf       Reg_2
m1          btfsc       PORTA,0     ; отслеживаем стартовый бит
            goto        m1
;delay = 52 machine cycles          ; задержка на 104/2 мкс
Pause1      movlw       .17         ; для выхода на середину бита
            movwf       Reg_1
wr1         decfsz      Reg_1, F
            goto        wr1
m3          call        Pause2
            btfsc       PORTA,0
            goto        bit1
            goto        bit0
bit1        bsf         STATUS,C
            goto        m2
bit0        bcf         STATUS,C
            goto        m2
m2          rrf         Reg_3,F     ; сдвиг вправо
            decfsz      Reg_2,F
            goto        m3
            call        Pause3
            return
;delay = 89 machine cycles          ; задержка с учётом 
Pause2      movlw       .29         ; ранее выполненных команд
            movwf       Reg_1
wr2         decfsz      Reg_1, F
            goto        wr2
            nop
            return
;delay = 104 machine cycles         ; задержка под 1 стоповый бит
Pause3      movlw       .34
            movwf       Reg_1
wr3         decfsz      Reg_1, F
            goto        wr3
            nop
            return
натуральная блондинка
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1269
Зарегистрирован: Пт июл 21, 2006 15:05:19
Откуда: плод воображения

Сообщение KT315B »

__Alexander писал(а):А переключить в регистре скорость религия не позволяет?
Присоединяюсь. А если нужно принимать данные из двух источников и передавать данные в два источника - можно применить мультиплексор. Это, если, конечно, неохота программный UART ваять...
R2AIV 73!
Контактная информация:
Аlex

Сообщение Аlex »

Мультиплексоры ему не пойдут. Ему нужен переходник из одной скорости в другую. Когда один чем то занят другой тоже должен быть свободный как на приём, так и на передачу. Наверное ему нужен полный дуплекс.
Вообще не вижу здесь никакой проблемы. Автору просто лень почитать литературу. USART на столько прост, что и разбираться там не в чем. Обычная серийная передача битов.
Автор, скажите применение сия устройства.
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

KT315B и Аlex - по делу есть что сказать?
Вы что тут флудите. Или ищете легких путей?
Представьте себя в условиях юноши-топикстартера.

Решите задачу с максимальной универсальностью:
полноценный двухсторонний обмен с максимальной
скоростью каждой стороны. Приветствуются любые
дешевые схемотехнические решения.

Понятно что скорость будет ограничиваться скоростью
2400 бод, т.е. на стороне 19600 будут одиночные символы,
но не чаще чем это можно "переварить" на скорости 2400.

Упустила из виду - vitaliy85 просит на АВР.
Складывается впечатление, что любители АВР флудеры.
Хотелось бы в этом ошибаться.
натуральная блондинка
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

У Atmel есть Апноуты AVR307 об использовании USI (например в ATtiny26, tiny2313) в качестве полудуплексного UART. А также AVR305 - полудуплексный программный UART. И AVR304 - полудуплексный UART с использованием прерываний. Документы формата PDF, но весят порядка 200к.
Изучайте на здоровье. Единственное, возможно, неудобство - все на английском.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

vitaliy85 - не знаю как на AVR возможно будет решена задача,
но на PIC это выглядело бы вот так. Схема проста, но
накладывает "некритичные" ограничения на протокол обмена,
а именно не посылать следующиъ пакетов, пока не пришло
подтверждение успешной ретрансляции.

Но и это, строго говоря, не проблема. Если данные
одновременно передаются на обоих скоростях в сторону
конвертера, то аппаратно проще применить два контроллера,
отдельный для каждой скорости и обмен данными между МК
сделать на параллельной шине.

Без четкого пониимания плотности потока данных
и протокола обмена на логическом уровне
(не путать с аппартным протоколом RS232)
однозначно решение не могу предложить. Удачи.
Вложения
2400-19600.GIF
(7.65 КБ) 512 скачиваний
Последний раз редактировалось Настя Пт июн 26, 2009 11:40:34, всего редактировалось 1 раз.
натуральная блондинка
Контактная информация:
Мявтор!
Аватара пользователя
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу

Сообщение Настя »

DrWatson писал(а):У Atmel есть Апноуты ...
И вы туда же. Чел просит практические проверенные примеры
из жизни. Вы сами это делали? Если делали - чел код просит!

Всё - надоела эта тема.

vitaliy85 - будут концептуальные вопросы - пишите.
натуральная блондинка
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

А как на счет ATmega128
Из даташита:
...
Сдвоенный программируемый последовательный USART
также заглянуть в папку \CVAVR\examples\2USART_LCD
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»