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

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

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

Сообщение vitaliy85 »

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

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

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

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

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

Сообщение vitaliy85 »

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

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

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

Сообщение Aheir »

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

Сообщение asteroid7 »

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

Сообщение vitaliy85 »

asteroid7 писал(а):vitaliy85
Вы опишите лучше что не получается, а не как сделать.
Исходные данные, которые вы привели, недостаточны для советов "как это сделать".


Не понятно, какие прерывания будут использоваться вместо стандартных уартовских, какие таймеры/счетчики будут задействованы при этом. Алгоритм работы и т.д.

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

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

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

Сообщение vitaliy85 »

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


Сами писали что-то типа такого? Можете помочь? Показать какие-то примеры? Исходники?
Аlex

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

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

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

Сообщение ikarab »

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

Сообщение mackerel »

Действительно, задача непонятна. Один UART только принимает, другой - только передаёт? Оба принимают - передают? Т.е. симплекс, полудуплекс, дуплекс?
Аватара пользователя
__Alexander
Потрогал лапой паяльник
Сообщения: 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
натуральная блондинка
Аватара пользователя
KT315B
Сверлит текстолит когтями
Сообщения: 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 просит на АВР.
Складывается впечатление, что любители АВР флудеры.
Хотелось бы в этом ошибаться.
натуральная блондинка
Аватара пользователя
DrWatson
Опытный кот
Сообщения: 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 КБ) 510 скачиваний
Последний раз редактировалось Настя Пт июн 26, 2009 11:40:34, всего редактировалось 1 раз.
натуральная блондинка
Аватара пользователя
Настя
Мявтор!
Сообщения: 878
Зарегистрирован: Чт авг 07, 2008 09:12:38
Откуда: не скажу
Контактная информация:

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

DrWatson писал(а):У Atmel есть Апноуты ...


И вы туда же. Чел просит практические проверенные примеры
из жизни. Вы сами это делали? Если делали - чел код просит!

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

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

Сообщение Danko »

А как на счет ATmega128
Из даташита:
...
Сдвоенный программируемый последовательный USART

также заглянуть в папку \CVAVR\examples\2USART_LCD
Ответить

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