Нужен приёмо\передатчик на UART интерфейс.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Sergokot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вс янв 17, 2010 15:02:01
Контактная информация:

Нужен приёмо\передатчик на UART интерфейс.

Сообщение Sergokot »

Доброго времени суток! Делаю умный дом, есть необходимость обмениваться данными между двумя устройствами по беспроводной связи. Сначала хотел использовать отдельный приёмник и передатчик, но для этого нужно много места в устройстве, что недопустимо. Узнал о таких микросхемах, как MRF49XA-I/ST, CC1101RTKR, CC1121RHMT, но все они работают на SPI интерфейсе, а с ним я не знаком, мне ближе UART/USART. Вот чего хочу спросить: Существуют ли подобные трансиверы, с подобными характеристиками, но на UART/USART интерфейс? Или может есть преобразователи UART-SPI?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ploop »

но все они работают на SPI интерфейсе, а с ним я не знаком

А что там сложного-то? Он проще уарта на порядок.
Аватара пользователя
Sergokot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вс янв 17, 2010 15:02:01
Контактная информация:

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Sergokot »

Я через CodeVisionAvr пишу, он всю сложность USAR'а к минимуму сбавляет, а у SPI столько параметров, что понять я их не могу, да и программу я уже под USART написал.
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Reloader »

По этому же протоколу работают и сдвиговые регистры типа 74HC595. Протокол прост и разжеван 100 000 раз. (По собственному опыту знаю, как бесят такие фразы.)

Изображение

Вот наиболее доходчивое описание протокола SPI
http://kit-e.ru/articles/interface/2009_03_53.php

Для более простого понимания (потом все равно читать то, что в 1-й ссылке):
http://avrproject.ru/publ/kak_podkljuchit/bascom_avr_74hc595/2-1-0-44
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
Sergokot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вс янв 17, 2010 15:02:01
Контактная информация:

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Sergokot »

С сдвиговыми триггерами уже работал, проблем с отправкой у меня нету, проблемы с получением информации.
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Reloader »

Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ploop »

Sergokot писал(а):С сдвиговыми триггерами уже работал, проблем с отправкой у меня нету, проблемы с получением информации.

Ну а в чём проблема? Контроллер аппаратно всё получит, вместо того байта, который уехал, будет который приехал. Внутри стоит обычный сдвиговый регистр. С одного конца данные отправляются, с другого принимаются. Вот и вся сложность.
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Sergi »

Я в своем примере использовал программный SPI. Можно вешать на любые ноги МК. Так показалось проще, в MRF49 регистры 16-битные.
Аватара пользователя
Sergokot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вс янв 17, 2010 15:02:01
Контактная информация:

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Sergokot »

Спасибо всем буду разбираться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение YS »

По собственному опыту знаю, как бесят такие фразы.


Еще больше бесят такие:

Я через CodeVisionAvr пишу, он всю сложность USAR'а к минимуму сбавляет, а у SPI столько параметров, что понять я их не могу


Т.е., "я методом тыка использую костыли ардуинового типа, и мне влом читать документацию. Сделайте это за меня и разжуйте."

Отсутствие желания читать документацию - древнейший и самый страшный грех. :))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение спящий »

Здравсвуйте посоветуйте что не так?сделал передатчик на МЕГА48 ,сделал проект на протеусе,выдает только черточки(Уже много раз проверил,непойму где нетак( Частота 8МГц,8 бит данных,один стоп.Может быть косяк в проекте ПРОТЕУС?
Красным подчеркнуто что ненадо читать)

Спойлер.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.LISTMAC


.def temp = r16;
.def data = r17;
.def delay = r18;
.def delay1 = r19;
.def DC = R20;
.def TEMP1= R28;

.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1




Reset:
ldi temp,high(RAMEND) ; инициализация стека
out SPH,temp
ldi temp,low(RAMEND)
out SPL,temp
ldi temp, 0xff ; инициализация порта С на выход
out DDRC, temp ; ----------


rjmp USART_Init;
zapoln:
ldi delay,0x00;
ldi delay1,0x35;


loop:
subi delay,1;
sbci delay1,0;
brcc loop;
ret





USART_Init: ; начало инициализации USART
; скорость передачи даных 9600бод при частоте кварца 8МГц
ldi r17,0
ldi temp,0x51
sts UBRR0L,r17;
sts UBRR0H,temp; установка скорости передачи данных

ldi temp,(1<<RXEN0)|(1<<TXEN0)|(0<<RXCIE0)|(0<<TXCIE0)|(0<<UCSZ02)
sts UCSR0B,temp ; разрешение приемо-передачи данных, запрет прерываний
; установка формата кадра: 8 бит данных, 1 стоповых бита
ldi temp,(0<<UMSEL01)|(0<<UMSEL00)|(0<<USBS0)|(1<<ucsz01) | (1<<ucsz00)
sts UCSR0C,temp ; посилка даных длинной 8 бит


start:

ldi r17,3
sts UDR0,r17 ; этот код мы будим пересылать в ПК
USART_Transmit:
lds temp,UCSR0A;
sbrs temp,5 ;ожидание, пока буфер данных не очистится
rjmp USART_Transmit
; передача кода

rjmp start;



; Прием кода данных из ПК
Priem_koda:
lds temp,UCSR0A;
sbrs temp,7
rjmp Priem_koda
ldi temp,UDR0 ; считываем то,что нам прислал ПК
out PORTC,temp ; принятый код с ПК выводим на выводы порта С
rjmp USART_Transmit ;конец цикла, переход на его начало
Вложения
Безымянный.GIF
(36.84 КБ) 467 скачиваний
Новая папка.rar
(17.02 КБ) 211 скачиваний
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ILYAUL »

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

ldi r17,0
ldi temp,0x51
sts UBRR0L,r17;
sts UBRR0H,temp; установка скорости передачи данных

Ещё раз подумайте , что и куда Вы пишите.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение спящий »

ldi r17,0
ldi temp,51
sts UBRR0L,r17;
sts UBRR0H,temp; установка скорости передачи данных

неправильно написал,нужно было 51(десятичной),но всеравно неработает(
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ploop »

А что за магические числа?
Учитесь использовать именованные биты, как в даташите. И всем заодно понятно станет.
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ILYAUL »

Обычно инит скорости делают так , благо в даташит есть формулы

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

ldi temp,HIGH((SYSCLK/(16*USARTSPEED))-1)   ; для 9600 - - 0x47
outr UBRRH,temp
ldi temp,LOW((SYSCLK/(16*USARTSPEED))-1)
outr UBRRL,temp

Это для моего кварца 0x47
неправильно написал...
Так ведь и ещё раз неправильно написал, новый Ваш код не привожу за ненадобностью. Ошибку точно не указываю , что бы Вы сами поняли и уже никогда не забудите.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение спящий »

упростил себе задачу так?:

.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1


ldi r17,low(bauddivider);
ldi temp,high(bauddivider);
sts UBRR0L,r17;
sts UBRR0H,temp;

всеравно непашет(
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ILYAUL »

Странно. Скорость теперь пришла в норму т.е записалась в положенный регистр . Правда не понятно чему соответсвует посылаемый Вами код 3 и что при этом хотите получить на экране и может ли протеус сие воспроизвести.
03 - Ascii - End of Text
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение спящий »

я думал число,или это только через Ascii ? а если просто посылать числа,они будут отражаться?

ascii такой ?
Вложения
_ASCII_code.asm
(21.21 КБ) 241 скачивание
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3780
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение Ser60 »

ASCII - это вот: http://www.asciitable.com/
Хотите переслать цифру 3 - посылайте код 0х33.
Аватара пользователя
ATrosh
Открыл глаза
Сообщения: 64
Зарегистрирован: Пт ноя 18, 2011 18:43:01

Re: Нужен приёмо\передатчик на UART интерфейс.

Сообщение ATrosh »

Sergokot писал(а):Доброго времени суток! Делаю умный дом, есть необходимость обмениваться данными между двумя устройствами по беспроводной связи. Сначала хотел использовать отдельный приёмник и передатчик, но для этого нужно много места в устройстве, что недопустимо. Узнал о таких микросхемах, как MRF49XA-I/ST, CC1101RTKR, CC1121RHMT, но все они работают на SPI интерфейсе, а с ним я не знаком, мне ближе UART/USART. Вот чего хочу спросить: Существуют ли подобные трансиверы, с подобными характеристиками, но на UART/USART интерфейс? Или может есть преобразователи UART-SPI?

Попробуй http://www.terraelectronica.ru/catalog. ... =2&PageS=1, http://www.terraelectronica.ru/pdf/SUNRAY/SRWF-1021.pdf прост в подключении, использует UART, USART, большая дальность действия. Выдерживает переплюсовку, но нужна защита от напряжения не более 5 v (проверено).
Ответить

Вернуться в «Периферия»