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

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

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

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

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

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

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

 
Опции темы
Непрочитано 31.12.2010, 11:42  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
Радость Ищу пример uart для mega в codevision

приветствую

Ищу рабочий пример связи между двумя мегами (аля 324) через UART под codevision с отправкой-приемом с использованием кольцевого буфера.
Необходимо отправлять - принимать числа int.
может есть пример с алгоритмом самосинхронизации
типа такого, но под Codevision:

Код:
  UsartMessage_t *msg;
  uint8_t *p, *q, summ, i;
  q = (uint8_t *)newMessage;
  summ = 0;

  if (wsn2usart.size ‹ MAX_USART_MESSAGE_QUEUE_COUNT)
  {
    wsn2usart.size++;
    msg = &wsn2usart.usartMessageQueue[wsn2usart.tail];
    if (++wsn2usart.tail ›= MAX_USART_MESSAGE_QUEUE_COUNT)
      wsn2usart.tail -= MAX_USART_MESSAGE_QUEUE_COUNT;

    p = msg-›payload;
    *p++ = 0x10;
    *p++ = 0x02;
    for (i = 0; i ‹ sizeof(AppMessage_t); i++)
    {
      if (*q == 0x10)
      {
        *p++ = 0x10;
        summ += 0x10;
      }
      summ += *q;
      *p++ = *q++;
    }
    *p++ = 0x10;
    *p++ = 0x03;
    summ += 0x10 + 0x02 + 0x10 + 0x03;
    *p++ = summ;

    msg-›size = p - msg-›payload;
  }

  //check sending state
  if (true == wsn2usart.isFreeUsart)
  {
    sendNextMessage();
  }
спасибо!
Реклама:
code-by вне форума  
Непрочитано 02.01.2011, 13:39  
vgtmaster
Прописка
 
Регистрация: 28.04.2008
Сообщений: 134
Сказал спасибо: 7
Сказали Спасибо 18 раз(а) в 9 сообщении(ях)
vgtmaster на пути к лучшему
По умолчанию Re: Ищу пример uart для mega в codevision

Сообщение от code-by Посмотреть сообщение
приветствую

Ищу рабочий пример связи между двумя мегами (аля 324) через UART под codevision с отправкой-приемом с использованием кольцевого буфера.
Необходимо отправлять - принимать числа int.
может есть пример с алгоритмом самосинхронизации
типа такого, но под Codevision:

Код:
  UsartMessage_t *msg;
  uint8_t *p, *q, summ, i;
  q = (uint8_t *)newMessage;
  summ = 0;

  if (wsn2usart.size ‹ MAX_USART_MESSAGE_QUEUE_COUNT)
  {
    wsn2usart.size++;
    msg = &wsn2usart.usartMessageQueue[wsn2usart.tail];
    if (++wsn2usart.tail ›= MAX_USART_MESSAGE_QUEUE_COUNT)
      wsn2usart.tail -= MAX_USART_MESSAGE_QUEUE_COUNT;

    p = msg-›payload;
    *p++ = 0x10;
    *p++ = 0x02;
    for (i = 0; i ‹ sizeof(AppMessage_t); i++)
    {
      if (*q == 0x10)
      {
        *p++ = 0x10;
        summ += 0x10;
      }
      summ += *q;
      *p++ = *q++;
    }
    *p++ = 0x10;
    *p++ = 0x03;
    summ += 0x10 + 0x02 + 0x10 + 0x03;
    *p++ = summ;

    msg-›size = p - msg-›payload;
  }

  //check sending state
  if (true == wsn2usart.isFreeUsart)
  {
    sendNextMessage();
  }
спасибо!

Пример программы передачи данных c COM Potr по USART на Atmega8:

/************************************************** ***
This program was produced by the
CodeWizardAVR V2.03.8a Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : USART
Version : 0.1
Date : 21.10.2010
Author : vgtmaster
Company : vgtmaster
Comments: No comment


Chip type : ATmega8
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
************************************************** ***/

#include ‹mega8.h›

// Standard Input/Output functions
#include ‹stdio.h›
#include ‹m8_128.h›

unsigned char bcounter=0;
char ReceiveString [32]="duch ";

// Declare your global variables here
interrupt [USART_RXC]void USART_RX_interrupt (void)
{short i;
//UCSRB = (1‹‹RXEN)|(1‹‹TXEN);
bcounter = 0;
ReceiveString[bcounter] = UDR; /* Get and return received data from buffer */
bcounter+=1;
for ( i=0 ; i ‹ 3500 ; i++ )
{if (UCSRA & 0x80)
{i=0;
ReceiveString[bcounter++] = UDR;
}
}
}

////////Функция передачи данных///////////
void USART_Transmit(char count,char * buf) //count колличество передаваемых байт, buf массив.
{unsigned char i=0;
{for (i=0;i‹count;i++)
{while ( !( UCSRA & (1‹‹UDRE)) ){;}
UDR = buf[i];
}
}
}
//////////////////END/////////////////////

void USART_Init( unsigned int ubrr)
{/* Set baud rate */
UBRRH = (unsigned char)(ubrr››8,0);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1‹‹RXCIE |1‹‹RXEN)|(1‹‹TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = ((1 ‹‹ URSEL) | (1 ‹‹ UCSZ1) | (1 ‹‹ UCSZ0));
}


void main(void)
{#asm("sei")
USART_Init( 0x33); //9600 на 8МГц
// USART_Transmit(ReceiveString);

while (1)
{if (bcounter)
{
USART_Transmit(bcounter,ReceiveString); //Передача количества байт (bcounter, массив ReceiveString)
bcounter=0;
ReceiveString[0]=0;
}
};
}

Последний раз редактировалось vgtmaster; 02.01.2011 в 13:42.
vgtmaster вне форума  
Непрочитано 04.01.2011, 12:20  
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: Ищу пример uart для mega в codevision

спасибо. но тут только отправка. и я просил пример отправки чисел размерностью int, а не строк...
code-by вне форума  
 

Закладки

Метки
avr, codevision, mega, uart
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Ищу схему для остановки электрической счетчика Армен Поиск схем. Делимся схемами 16 14.11.2011 20:21
Симуляция UART для AVR studio mm12345 Микроконтроллеры, АЦП, память и т.д 0 22.11.2010 15:40
Ищу схему и паспорт для реле ВС-10-33У4 Satellite83 Поиск схем. Делимся схемами 0 05.10.2010 22:59


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


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