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

 
 
> 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



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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 03:06
Рейтинг@Mail.ru


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