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

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

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

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

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

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

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

 
Опции темы
Непрочитано 13.05.2010, 11:09  
Mitrar
Частый гость
 
Регистрация: 25.05.2007
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
Mitrar на пути к лучшему
По умолчанию Последовательный вывод данных

Здравствуйте, подскажите пожалуйста. Постараюсь описать проблему.
Используемый чип mega16, пишу в CodeVision. Необходимо вывести последовательную передачу данных
в такой форме, ну например число 1011, соответствовало 10 01 10 10. т.е 1 это 10, а 0 это 01.
Скорость передачи данных 42 кбод. Вывод на PIND.5, а на PIND.6 инверсный.
Пробовал реализовать с помощью цикла, получается "грязный" сигнал.

int a=0b001010;
for (i=0;i<6;i++)

{PORTD.5=(0x0001 & (a>>i));
PORTD.6=~PORTD.5;
delay_us(11);
PORTD.5=~PORTD.5;
PORTD.6=~PORTD.5;
delay_us(11); };
Подскажите как можно реализовать с помощью ШИМ.
Реклама:
Mitrar вне форума  
Непрочитано 13.05.2010, 11:23  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 428
Сказал спасибо: 4
Сказали Спасибо 34 раз(а) в 29 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Сообщение от Mitrar Посмотреть сообщение
PORTD.5=~PORTD.5;
PORTD.6=~PORTD.5;
delay_us(11);
Не очень понял, зачем эти стоки у Вас?
По-моему из логики описания Вашего алгоритма они выбиваются.
__________________
Гидравлика + электроника = POWER
mrKirill вне форума  
Непрочитано 13.05.2010, 12:45  
Mitrar
Частый гость
 
Регистрация: 25.05.2007
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
Mitrar на пути к лучшему
По умолчанию Последовательный вывод данных

Число a=0b001010;

я вывожу 0 как 01, т.е. по порядку 0 а потом ~PORTD.5(инвертирую и получается 01).
Mitrar вне форума  
Непрочитано 13.05.2010, 13:54  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 87 раз(а) в 47 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Я пишу на gcc так что не пинайте!
Мне кажется что вы хотели где то так, хотя я бы сделал на таймере, да и алгоритм мне не по душе:

int a=0b001010;
unsigned char b=0; //Вспомогательная переменная

for (i=0;i!=8;i++)
{
if ((a>>b)&0x80) //Сдвигаем а на 0 в первом проходе, в следующих 1 и накладываем маску 0b10000000
//Если значение истинно записываем 1,0
{
PORTD.5=1;
PORTD.6=0;
}
else //иначе записываем 0,1
{
PORTD.5=0;
PORTD.6=1;
}
delay_us(11);
if (PIND.5)PORTD.5=0; //Если значение истинно записываем 0
else PORTD.5=1; //иначе записываем 1
if (PIND.6)PORTD.6=0;
else PORTD.6=1;
delay_us(11);
b=1;
}

Последний раз редактировалось harchenko_pavel; 13.05.2010 в 14:04.
harchenko_pavel вне форума  
Непрочитано 13.05.2010, 14:32  
vvkka
Прописка
 
Регистрация: 24.08.2005
Сообщений: 158
Сказал спасибо: 17
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
vvkka на пути к лучшему
По умолчанию Re: Последовательный вывод данных

непойму, rs485 протокол пытается реолизовать так для этого функции спецальная есть
vvkka вне форума  
Непрочитано 13.05.2010, 16:53  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 428
Сказал спасибо: 4
Сказали Спасибо 34 раз(а) в 29 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Сообщение от vvkka Посмотреть сообщение
не пойму, rs485 протокол пытается реализовать так для этого функции специальная есть
Мало того для этого специальный драйвер есть.

С такими приколами по-моему кодировка Манчестер работает...Помню делал что-то подобное, но за 1 и 0 у меня были частоты. 2х-тональная модуляция, чтобы передать через аудиотракт радиостанции...
__________________
Гидравлика + электроника = POWER
mrKirill вне форума  
Непрочитано 14.05.2010, 05:15  
Mitrar
Частый гость
 
Регистрация: 25.05.2007
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
Mitrar на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Фактически это RS485, подскажите какая функция есть для RS485.
Mitrar вне форума  
Непрочитано 14.05.2010, 07:37  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 428
Сказал спасибо: 4
Сказали Спасибо 34 раз(а) в 29 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Сообщение от Mitrar Посмотреть сообщение
Фактически это RS485, подскажите какая функция есть для RS485.
Возьмите спец-микросхему, например ADM4851 (~50...60руб), и не заморачивайтесь. Подключаете ее к UART (RX/TX) + 1 вывод на управление направлением (прием/передача) и все! Дальше все намного проще, программно Вы фактически работать будете с UART.
__________________
Гидравлика + электроника = POWER
mrKirill вне форума  
Непрочитано 14.05.2010, 11:40  
vvkka
Прописка
 
Регистрация: 24.08.2005
Сообщений: 158
Сказал спасибо: 17
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
vvkka на пути к лучшему
По умолчанию Re: Последовательный вывод данных

можно еще из серии MAX485---487 стоит копейки, во во и неморочить людям голову, а програмно без дополнительной схемы реолизовать всеравно несможите
vvkka вне форума  
Непрочитано 14.05.2010, 11:57  
Mitrar
Частый гость
 
Регистрация: 25.05.2007
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 6 раз(а) в 5 сообщении(ях)
Mitrar на пути к лучшему
По умолчанию Re: Последовательный вывод данных

Да, вы правы max485 как раз должен подойти. Буду разбираться дальше. Спасибо что ответили.
Mitrar вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МК51 последовательный порт SerGO_83 Микроконтроллеры, АЦП, память и т.д 21 04.12.2010 00:14
AVR USART+прерывания=потеря данных umgah Микроконтроллеры, АЦП, память и т.д 54 10.04.2010 16:22
[Решено] Помогите определить семисегментник opylk Информация по радиокомпонентам 5 18.03.2010 19:38
[Решено] Может кто-то знает, аналоги данных оптопар vovan003 Информация по радиокомпонентам 4 12.03.2010 11:45
Радиокалькулятор ColorAndCode 9.3 optima22 Информация по радиокомпонентам 0 10.11.2009 11:01


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot