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

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

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

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

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

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

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

 
Опции темы
Непрочитано 12.10.2010, 20:02  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Проблема с USB > RS-485 > AVR

Доброго всем времени суток!
Собрал вот такую схему.
Комп (terminal 1.9) -› FT232 -› ADM485 -› UTP 5e (~10метров) -› ADM485 -› Mega8
В Меге залита проша, которая на любой принятый байт отвечает ОК.
Прошивка Меги
Код:
/////////////////////   MAIN.C   /////////////////////
#define LED1 		4
#define LED2		5
#define send		3
#define LED_PORT 	PORTD
#define LED_DDR		DDRD
#include ‹ioavr.h›
#include "lcd_lib.h"
#include "usart.h"
#include ‹intrinsics.h›

int main( void )
{
  unsigned char sym;
  LED_PORT = 0x00;
  USART_Init();
  __enable_interrupt();  
  while(1){
    sym = USART_GetChar(); //читаем буфер
    if (sym){             //если что-то приняли, то 
      LED_PORT = LED_PORT | 1‹‹LED2; // включение светодиодика передачи
      LED_PORT = LED_PORT | 1‹‹send;  // переключение ADM на передачу
      __delay_cycles(10000000);
      USART_SendChar('O'); //отвечаем компу "Ok "
      USART_SendChar('k');  
      __delay_cycles(10000000);
      LED_PORT=LED_PORT & ~(1‹‹send); // переключение ADM на прием
      LED_PORT=LED_PORT & ~(1‹‹LED2); // выключение светика
    }

/////////////////////   отдельный файл USART.C   /////////////////////
#include "usart.h"
#include ‹intrinsics.h›
#define LED1       4
#define LED2      5
#define send      3
#define LED_PORT    PORTD
#define LED_DDR      DDRD
//однобайтный буфер
volatile unsigned char usartRxBuf = 0;

//инициализация usart`a
void USART_Init(void)
{
  UBRRH = 0;
  UBRRL = 102; //скорость обмена 9600 бод при 16MHz
  UCSRB = (1‹‹RXCIE)|(1‹‹RXEN)|(1‹‹TXEN); //разр. прерыв при приеме, разр приема, разр передачи.
  UCSRC = (1‹‹URSEL)|(1‹‹UCSZ1)|(1‹‹UCSZ0); //размер слова 8 разрядов
}

//отправка символа по usart`у
void USART_SendChar(unsigned char sym)
{
  while(!(UCSRA & (1‹‹UDRE)));
    UDR = sym;
}

//чтение буфера
__monitor unsigned char USART_GetChar(void)
{
  unsigned char tmp = usartRxBuf;
  usartRxBuf = 0;
  return tmp;  
}

//прием символа по usart`у в буфер
#pragma vector=USART_RXC_vect
__interrupt void usart_rxc_my(void) 
{
  LED_PORT = LED_PORT | 1‹‹LED1;
  usartRxBuf = UDR; 
}
Не могу никак понять почему приемо-передача идет так плохо. На сотню отправленных пакетов, дай бог придет один ответ. (внизу окошка, Rx и Tx)

Пробовал играться с подтяжкой линии. Если подключать 5 кОм, то начинается подмешиваться "мусор, а при 10 кОм или 510 Ом мусора нет.
Наличие терминатора со стороны Меги роли не играет. При подключении терминатора со стороны FT232, на каждую посылку получаю ответ: ‹0› . Ну и иногда: Ок
Пробовал с Меги слать посылки, числа 1-255. Ни одного пропущенного не было. А вот с компа до меги почему-то очень плохо идут.

Принципиальная схема
Сверху, платка подключаемая к компу. Не обращайте внимание на большое кол-во деталей, там еще одновременно и программатор МС.
Снизу, схема собранная на макетке.


Помоги советом, пожалуйста! В какую сторону хоть искать...
Реклама:
DimanVIP вне форума  
Непрочитано 12.10.2010, 21:06  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от lvadia Посмотреть сообщение
Попробовать исключить приёмо-передатчики 485-е и проверить с коротким кабелем....
Тот же горшок, только вид сбоку.
Разве только диодик, включающийся в прерывании УСАРТа, постоянно горит.
DimanVIP вне форума  
Непрочитано 12.10.2010, 21:16  
P4550
Прописка
 
Регистрация: 24.03.2010
Сообщений: 237
Сказал спасибо: 20
Сказали Спасибо 769 раз(а) в 139 сообщении(ях)
P4550 на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Цитата:
__delay_cycles(10000000);
Не многоваты задержки..
Программа может не дождаться
P4550 вне форума  
Непрочитано 12.10.2010, 21:38  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от P4550 Посмотреть сообщение
Не многоваты задержки..
Программа может не дождаться
625ms Не такая уж и большая задержка

я пользуюсь макросом

#define XTAL_MHz 16.0
#define _delay_us(us) __delay_cycles((unsigned long int)us*XTAL_MHz)
#define _delay_ms(ms) _delay_us(ms*1000)
harchenko_pavel вне форума  
Непрочитано 12.10.2010, 21:46  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от lvadia Посмотреть сообщение
Всё проще...увж....нужно исключить подозреваемых)))))))))))))
Нашел!!! Х.З. почему, но одна нога 232 отпаялася, а именно как раз ТХ.
Подпаял назад эту мелочь хорошей каплей. Все забегало отлично!
Подключил взад ADM. Проблема осталась. Но уже гораздо лучше стало.
DimanVIP вне форума  
Непрочитано 12.10.2010, 21:47  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Кварц 16Mhz не самый удачный, лучше поставить 14.7456 MHz - atmel обещает 0% ошибки при работе usart см. "Examples of Baud Rate Setting" из даташита
harchenko_pavel вне форума  
Сказали "Спасибо" harchenko_pavel
lvadia (12.10.2010)
Непрочитано 12.10.2010, 21:57  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от harchenko_pavel Посмотреть сообщение
Кварц 16Mhz не самый удачный
да нормально все будет, в допуске, если с коэффициентом УСАРТа не ошибся.

DimanVIP,
вообще-то терминаторы ставят с обеих сторон 120ом. при нестандартном для RS-485 типе кабеля приходится подбирать по форме сигнала, изменяя номинал терминаторов
jump вне форума  
Непрочитано 12.10.2010, 22:01  
harchenko_pavel
Прописка
 
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
harchenko_pavel на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от DimanVIP Посмотреть сообщение
UBRRL = 102; //скорость обмена 9600 бод при 16MHz
В том же "Examples of Baud Rate Setting" из даташита для скорости 9600 при 16Mhz значение UBRR=103, а не 102
harchenko_pavel вне форума  
Непрочитано 12.10.2010, 22:09  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Сообщение от harchenko_pavel Посмотреть сообщение
В том же "Examples of Baud Rate Setting" из даташита для скорости 9600 при 16Mhz значение UBRR=103, а не 102
Пробовал от 90 до 120. Лучше не становиться.

Вот еще инфа к размышлению:
Когда в терминале зажимаю ентер, идет постоянный поток пакетов.
Дык вот, в этом случае, почемуй-то, диодик LED2(включается при актвицаии передачи ADM) гаснет не дожидаясь окончания выдержки и отправки пакета.
По тексту кода он выключается только после окончания передачи ОК. Будто идет сброс МК.
DimanVIP вне форума  
Непрочитано 12.10.2010, 23:03  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Проблема с USB > RS-485 > AVR

Буга-га-га. Вот что значит работать по ночам и вечерам.
Такой мелкий косячок.....
Ну что господа, кто угадает в чем был косячок?
DimanVIP вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
USB программатор AVR помогите! sorokin.vasiliy Микроконтроллеры, АЦП, память и т.д 13 06.03.2010 16:01
USB клавиатура + AVR Serdgo96 Микроконтроллеры, АЦП, память и т.д 2 25.02.2010 22:55
Avr & I2C Usb Programmer qazim Микроконтроллеры, АЦП, память и т.д 6 17.12.2009 17:36


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


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