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

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

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

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

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

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

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

 
Опции темы
Непрочитано 02.12.2008, 13:12  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию AVR и UART через прерывание - help :)

Приветсвтую!

Кто-нибудь, скиньте пожалуйста для CodeVision РАБОЧИЙ примерчик приема через UART на tiny2313 через прерывание по 8 байт в пакете. Я сделал через визадр, он принимает 8 байт и больше не хоча...
Инфу отправляю с мега16.

благодарю
Реклама:
code-by вне форума  
Непрочитано 04.12.2008, 00:40  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию

может быть надо после приема 8 байт отправлять какую-нибудь информацию?
code-by вне форума  
Непрочитано 04.12.2008, 03:59  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Ждете телепатов? Приведите Ваш исходник. И еще совет - не пользуйтесь визардами всякими, пишите сами. Дальше будет проще.
kison вне форума  
Непрочитано 04.12.2008, 11:39  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию

Код:
/**************************************************  ***
Chip type           : ATtiny2313
Clock frequency     : 4,000000 MHz
**************************************************  ***/

#include ‹tiny2313.h›
#include ‹stdio.h›

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1‹‹FE)
#define PARITY_ERROR (1‹‹UPE)
#define DATA_OVERRUN (1‹‹OVR)
#define DATA_REGISTER_EMPTY (1‹‹UDRE)
#define RX_COMPLETE (1‹‹RXC)

// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE‹256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data,i;
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)
   {
        for(i=0;i‹8;i++)
        {
           printf("%02X

",rx_buffer[i]);
        }
        rx_wr_index=0;

   }
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      printf("overflow

");
      };
   };
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

#include ‹stdio.h›

void main(void)
{

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x00;
USICR=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x19;
ACSR=0x80;

// Global enable interrupts
#asm("sei")

printf("start

");

while (1)
      {

      };
}
Почему телепатами? Я ведь еще просил поделится вашим вариантом
А без визарда я воообще никак не сделаю

-- Прилагается рисунок: --

code-by вне форума  
Непрочитано 04.12.2008, 13:47  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

У меня для CV нету. Этим г пользоваться не могу.
Не используйте printf в прерывании и прием наладится. Эта функция очень медленная и именно из за нее идут пропуски.
kison вне форума  
Непрочитано 04.12.2008, 14:41  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию

уважаемые господа, читайте, пожалуйста, внимательнее сообщения. вопрос не в пропусках, а в том, что принимает только 8 байт... у меня ничего не пропускается!
если кто-то не пользуется CV, прошу вариант для др. компилятора UART с прерывнием по 8 байт (+ толковые пояснения).
спасибо!
code-by вне форума  
Непрочитано 04.12.2008, 16:19  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

#define RX_BUFFER_SIZE 8
Это ни о чем не говорит ????
тогда - ну я не знаю....Это не сюда...
Это... Вот - "какая гадость... какая гадость эта Ваша фаршированная рыба !!!(С)
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 04.12.2008, 17:57  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию

говорит о том, что размер буфера 8 байт.
что еще не так? этот буфер надо почистить перед прием новых байтов? может лучше дадите рабочий пример, вместо того, чтобы делать вид какие все умные?
code-by вне форума  
Непрочитано 04.12.2008, 18:28  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию


if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
оно само чистится
Рабочий пример - чего ??? У Вас свои задачи - у меня свои.
сколько нужно байт? Нужно двадцать, задайте 20. Память не резиновая.
Правильно формируйте пакет. Если не знаете, сколько будет - после маркера пакета - количество байт, закрывайте пакет контрольной суммой.
Принимаете ответный пакет - проанализируйте, дошел ли предыдущий, при неуспехе - повторить.
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 04.12.2008, 18:44  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию

про очистку буфера это я так к примеру.
моя задача такая: с 1го мк отправляется пакет, например 8 байт. через некоторый промежуток времени (например, 5 секунд, 1 час, ...) отправляется пакет с новыми данными. 2й мк должен его принять. У меня он принимает только ПЕРВЫЙ пакет (т.е. 8 байт), как будто после приема 8-го байта надо снова разрешать/выключать прерывания или еще что-то делать.
code-by вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UART AVR прошу совета v_fokuse Микроконтроллеры, АЦП, память и т.д 70 09.06.2009 13:41
Проблемы с приемом данных через UART Tiny 2313 SoapMaker Микроконтроллеры, АЦП, память и т.д 0 08.04.2008 10:35
Помогите разобраться с приёмом символов через UART в ATmeg8 cscbyflex Микроконтроллеры, АЦП, память и т.д 10 19.12.2006 19:17
Проблема с UART AVR uk8amk Микроконтроллеры, АЦП, память и т.д 1 12.08.2006 16:59


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


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