Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Программный приемник по UART

Непрочитано 20.06.2012, 11:26  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Программный приемник по UART

Сообщение от Fair88Play Посмотреть сообщение
#pragma vector = TIM0_OVF_vect
это директива, определяющая праграмму обработчика прерывания по переполнения таймера 0, т.е. void interrupt TimerOvf(void), а как это в Вашем случае, зависит от компилятора.
Сообщение от Fair88Play Посмотреть сообщение
#define RX_DDRX TRISIO
Имейте ввиду, что в AVR порты настраиваются иначе чем в PIC, точнее наоборот, к тому же, чтобы избежать путаницы, да и просто для приличия, хорошо бы Вам поменять названия связанные с регистрами AVR(DDRx :1-выход, 0- вход) на PIC (TRIS: 1 -вход, 0- выход).
Реклама:
nonamedov вне форума  
Непрочитано 20.06.2012, 11:38  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Программный приемник по UART

Сообщение от nonamedov Посмотреть сообщение
Имейте ввиду, что в AVR порты настраиваются иначе чем в PIC, точнее наоборот, к тому же, чтобы избежать путаницы, да и просто для приличия, хорошо бы Вам поменять названия связанные с регистрами AVR(DDRx :1-выход, 0- вход) на PIC (TRIS: 1 -вход, 0- выход).
Спасибо за ответ, это я в курсе, просто значит не правильно изложил свой вопрос. В AVR 3 регистра: PORTx, DDRx и PINx, а у Пика 2: TRISIO и GPIO, поэтому и возник вопрос, правильно ли я их определил.

"Далее я сделал проект в IAR`е, подключил к нему полученную «либу» программного UART`а и написал пару строк кода для проверки результатов" - как подключается? В source files вторым Сишным файлом?

P.S. Извините за детские вопросы
Fair88Play вне форума  
Непрочитано 20.06.2012, 12:28  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Программный приемник по UART

Сообщение от Fair88Play Посмотреть сообщение
Согласен, что почти ничего не понимаю, и поэтому хочу разобраться! Когда спрашивал, как организовать приемник, мне дали пример, типа сиди и разбирайся, что я и делаю, что не понятно, спрашиваю здесь же, что в этом плохого?
Так вам нужен программный приемник или аппаратный? Программный - сидите в цикле, ждете, когда придет стартовый бит. По перепаду фронта начинаете захватывать дынне через определенный промежуток времени, зависящий от частоты передачи.
Easyrider83 вне форума  
Непрочитано 20.06.2012, 12:29  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Программный приемник по UART

1. Да.
2. Сделайте свой заголовочный файл (softUart.h) и подключите его в основной программе (директива #include), заодно и скопируйте файл библиотеки (uart.c) в проектную папку.
nonamedov вне форума  
Непрочитано 20.06.2012, 12:58  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Программный приемник по UART

Сообщение от Easyrider83 Посмотреть сообщение
Так вам нужен программный приемник или аппаратный? Программный - сидите в цикле, ждете, когда придет стартовый бит. По перепаду фронта начинаете захватывать дынне через определенный промежуток времени, зависящий от частоты передачи.
Мне нужен программный приемник, так как в pic12f675 нет аппаратного.
На программный приемник дали пример, с которым я сейчас и пытаюсь разобраться. Спасибо за ответы, буду дальше пыхтеть-разбираться
Fair88Play вне форума  
Непрочитано 20.06.2012, 14:02  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Программный приемник по UART

Подскажите, пожалуйста, где я накосячил?
Миниатюры:
Нажмите на изображение для увеличения
Название: Ошибка.JPG
Просмотров: 57
Размер:	291.5 Кб
ID:	35974  
Fair88Play вне форума  
Непрочитано 20.06.2012, 14:11  
Picman
Прописка
 
Регистрация: 29.06.2005
Сообщений: 153
Сказал спасибо: 111
Сказали Спасибо 46 раз(а) в 32 сообщении(ях)
Picman на пути к лучшему
По умолчанию Re: Программный приемник по UART

Как-то так. Для приема можно использовать вывод MCLR с прерыванием по изменению состояния входа.
/************************************************** ********************
Функция приема данных
Возвращает FF при ошибке стартового бита.
************************************************** ********************/
unsigned char RS45Rx (void)
{
#define Bit 0x5E
#define Half_Bit 0x30
unsigned char Rcv_byte =0;
unsigned char count ;
DelayUs(Half_Bit);
if (Bit_Rxd) //Старт-бит?
return (0xFF); //Нет.

for(count=8;count›0;count--) //Да!
{
Rcv_byte ››=1;
DelayUs(Bit);
if (Bit_Rxd){
Rcv_byte = (Rcv_byte | 0x80);
}
}
DelayUs(Bit); //Ждем стоп-бит
return (Rcv_byte);
}
Picman вне форума  
Непрочитано 20.06.2012, 15:18  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Программный приемник по UART

Сообщение от Picman Посмотреть сообщение
Как-то так. Для приема можно использовать вывод MCLR с прерыванием по изменению состояния входа.
/************************************************** ********************
Функция приема данных
Возвращает FF при ошибке стартового бита.
************************************************** ********************/
unsigned char RS45Rx (void)
{
#define Bit 0x5E
#define Half_Bit 0x30
unsigned char Rcv_byte =0;
unsigned char count ;
DelayUs(Half_Bit);
if (Bit_Rxd) //Старт-бит?
return (0xFF); //Нет.

for(count=8;count›0;count--) //Да!
{
Rcv_byte ››=1;
DelayUs(Bit);
if (Bit_Rxd){
Rcv_byte = (Rcv_byte | 0x80);
}
}
DelayUs(Bit); //Ждем стоп-бит
return (Rcv_byte);
}
А что здесь подразумевается под Bit_Rxd? И почему Bit = 0x5E, а Half_Bit = 0x30?
Fair88Play вне форума  
Непрочитано 20.06.2012, 16:04  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Программный приемник по UART

BitRxd - длительность передачи одного бита в микросекундах. Half_bit - половина битового интервала. После приема стартового бита нужно выждать 1,5 битовых интервала, чтобы данные считывались в момент, когда нет изменений входного сигнала.
Возможно автор откорректировал значение задержки с учетом расхода времени на выполнение команд чтения порта и сдвига принимаемых данных
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 20.06.2012 в 16:06.
MisterDi вне форума  
Непрочитано 20.06.2012, 16:14  
Fair88Play
Временная регистрация
 
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
Fair88Play на пути к лучшему
По умолчанию Re: Программный приемник по UART

Всем большое спасибо, криво-косо, но все таки как-то реализовал
Fair88Play вне форума  
 

Метки
важно
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программный пакет NUMERI alvadep Делимся опытом 0 14.11.2011 13:28
Программный декодер шины LIN double_dash Микроконтроллеры, АЦП, память и т.д 0 23.09.2011 10:20
Программный watchdog alexgap Микроконтроллеры, АЦП, память и т.д 8 31.10.2010 12:38
Программный сброс в мега под IAR maxik_k42 Микроконтроллеры, АЦП, память и т.д 10 13.09.2010 19:16
Опрос АЦП через программный SPI AVR Iamuser Микроконтроллеры, АЦП, память и т.д 8 23.03.2007 18:33


Часовой пояс GMT +4, время: 05:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.