реклама на сайте
подробности

 
 
> tiny2313 UART работает с перерывами.
Alexis25
сообщение Oct 6 2008, 11:30
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719



Сделали такую конструкцию: соединили atmega128 и attiny2313 уартами через 485 драйвер.
Скорость 9600, на тини кварц - 4.000 МГц.
В качестве отладки написал такую программу: с меги постоянно валятся байты на скорости 9600 (осциллографом проверено). На тини создан проект (в codevision avr), в настройках включен усарт с прерыванием. В обработчике усарта вписал только одну строчку:
PORTB.6=!PINB.6
По идее на этой ноге должен получиться меандр с частотой приёма символов. На самом деле получается 10 изменений уровня, затем пауза примерно 25 мс.
В чём может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Oct 6 2008, 15:33
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Читаем:
Цитата(Alexis25 @ Oct 6 2008, 15:30) *
На тини создан проект (в codevision avr), в настройках включен усарт с прерыванием. В обработчике усарта вписал только одну строчку:
PORTB.6=!PINB.6

А в выложенном исходнике:
Цитата
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
PORTB.6++;
}


Нефиговая такая строчечка, да.... с равномерным таким временем выполнения, ага twak.gif

У вас линия RS485 к 2.5 вольтам подтянута? Без этого будет приниматься мусор, и такой обработчик ("PORTB.6++;") прерывания его зафиксирует. Мусорные "байты" могут "приходить" в любой момент.
Go to the top of the page
 
+Quote Post
Alexis25
сообщение Oct 7 2008, 06:37
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719



Цитата(SysRq @ Oct 6 2008, 19:33) *
Читаем:

А в выложенном исходнике:
Нефиговая такая строчечка, да.... с равномерным таким временем выполнения, ага twak.gif

У вас линия RS485 к 2.5 вольтам подтянута? Без этого будет приниматься мусор, и такой обработчик ("PORTB.6++;") прерывания его зафиксирует. Мусорные "байты" могут "приходить" в любой момент.


Я вписал только одну строчку, остальное сгенерировано автоматически. Правда я её уже поправил на PORTB.6++, как мне тут посоветовали.

А по поводу 2.5 вольт можно подробнее? или лучше ссылку. Это не "защитное" ли смещение? Действительно, те самые паузы на витухе тоже наблюдаются.

Сообщение отредактировал Alexis25 - Oct 7 2008, 07:09
Go to the top of the page
 
+Quote Post
SysRq
сообщение Oct 8 2008, 18:00
Сообщение #4


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(Alexis25 @ Oct 7 2008, 10:37) *
Это не "защитное" ли смещение?
ТЫЦ, с пункта "Отказоустойчивость". Из опыта выяснилоь, что сие есть весьма важно.

Цитата(Alexis25 @ Oct 7 2008, 10:37) *
Действительно, те самые паузы на витухе тоже наблюдаются.
Дык может паузы создает тот кто данные отправляет?

Сообщение отредактировал SysRq - Oct 8 2008, 18:01
Go to the top of the page
 
+Quote Post
Alexis25
сообщение Oct 9 2008, 06:04
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 6-10-08
Пользователь №: 40 719



Цитата(SysRq @ Oct 8 2008, 22:00) *
ТЫЦ, с пункта "Отказоустойчивость". Из опыта выяснилоь, что сие есть весьма важно.

Дык может паузы создает тот кто данные отправляет?

Нет, он пауз не создаёт. Появляются именно после интерфейса. Подозреваю, что это 50 Гц.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th August 2025 - 07:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016