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

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

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

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

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

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

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

 
Опции темы

UART + atmega32

Непрочитано 04.03.2012, 14:34  
Ara41
Почётный гражданин KAZUS.RUN
 
Регистрация: 30.09.2006
Сообщений: 1,557
Сказал спасибо: 157
Сказали Спасибо 660 раз(а) в 430 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: UART + atmega32

можно поглядеть на скриншот фьюзов?
Реклама:
Ara41 вне форума  
Непрочитано 04.03.2012, 18:19  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

Там все фьюзы равны 1. Картинку, где фьюзы считаны пришлю позже, сейчас пока есть только картинка на то как я прогал.
Миниатюры:
Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 67
Размер:	55.5 Кб
ID:	32393  
kruftin вне форума  
Непрочитано 12.03.2012, 07:23  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

Вчера вот обменивался сообщениями МК-ПК по uart, работало только на скорости 1200 бод, вместо ожидаемых в 9600. Непонятно почему, но мк атмега32 работает на 1МГц, хотя фьюзы все единички и установлен внешний кварц на 8МГц.
kruftin вне форума  
Непрочитано 03.04.2012, 12:42  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

А не подскажете как передавать и принимать по uart не по одному символу, а все что туда приходит. И как организовать поиск определенного сочетания символов в принятых данных?
Вот код файла где я организую прием данных:
#include "usart.h"

//однобайтный буфер
volatile unsigned char usartRxBuf = 0;

#define RXCIE 7
#define RXEN 4
#define TXEN 3
#define URSEL 7
#define UCSZ1 2
#define UCSZ0 1

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

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

//чтение буфера
unsigned char USART_GetChar(void)
{
unsigned char tmp;
unsigned char saveState = SREG;
#asm("cli");
tmp = usartRxBuf;
usartRxBuf = 0;
SREG = saveState;
return tmp;
}

//прием символа по usart`у в буфер
interrupt [USART_RXC] void usart_rxc_my(void)
{
usartRxBuf = UDR;
}
kruftin вне форума  
Непрочитано 05.04.2012, 15:27  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

Ну или может кто знает как написать код, чтобы по uart мк принимал все что ему передают и отдавал не по символу?
kruftin вне форума  
Непрочитано 06.04.2012, 01:03  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: UART + atmega32

Сообщение от kruftin Посмотреть сообщение

#define RXCIE 7
#define RXEN 4
#define TXEN 3
#define URSEL 7
#define UCSZ1 2
#define UCSZ0 1
Зачем вы это всё пишете?
Биты и регистры периферии обычно идут в комплекте с компилятором.
пишите так:

Код:
#include ‹ioavr.h› // ну или как у вашего компилятора называется
Сообщение от kruftin Посмотреть сообщение
#include "usart.h"
А этот файл зачем? У вас там реализация приёма/передачи?
_Артём_ вне форума  
Непрочитано 06.04.2012, 01:15  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: UART + atmega32

Сообщение от kruftin Посмотреть сообщение
Ну или может кто знает как написать код, чтобы по uart мк принимал все что ему передают и отдавал не по символу?
А что там знать-то?
Делаете буферы на сколько нужно байт и пишете/читаете в них.
В соответствующем прерывании передаёте и принимаете данные.
В основной программе или ещё где обрабатываете принятые данные не по одному дайту,, а все что есть в буфере.
Запись на передачу - пишете строку/массив сразу сколько нужно передать.

Код:
struct TTxBuffer {
    unsigned char Buf[BUFFER_SIZE];
    volatile unsigned char Next, First;
};

struct TTxBuffer TxBuffer;

void SendByte(unsigned char new_byte)
{
    TxBuffer.Buf[TxBuffer.Next++]=new_byte;
    if (TxBuffer.Next==BUFFER_SIZE)
         TxBuffer.Next=0;
     EnableTxBufferEmptyInterrupt();
}

void SendString(unsigned char *ptr, unsigned char length)
{
    while (length--) SendByte(*ptr++);
}

void SendISR(void)
{
    if (TxBuffer.Next!=TxBuffer.First) {
         UDR=TxBuffer.Buf[TxBuffer.First++];
         if (TxBuffer.First==BUFFER_SIZE) TxBuffer.First=0;
         if (TxBuffer.Next==TxBuffer.First)
             DisableTxBufferEmptyInterrupt();
    }
}
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
kruftin (06.04.2012)
Непрочитано 06.04.2012, 20:20  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

А нельзя это сделать без структур? Если просто есть строка на N байт и её надо передать. То как-нить попроще можно считывать из строки по байту и передавать?
kruftin вне форума  
Непрочитано 07.04.2012, 01:33  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: UART + atmega32

Сообщение от kruftin Посмотреть сообщение
А нельзя это сделать без структур? Если просто есть строка на N байт и её надо передать.
Можно.

Код:
unsigned char StringForSend[N+1];// 
volatile unsigned char TxNext, TxFirst;

void SendString(void)
{
    TxFirst=0;
    TxNext=N;
    EnableUartBufferEmptyInterrupt();
}

void UartBufferEmptyInterrupt(void)
{
    if (TxNext!=TxFirst) {
        UDR=StringForSend[TxFirst++];
        if (TxFirst==TxNext) DisableUartBufferEmptyInterrupt();

    }
}
_Артём_ вне форума  
Непрочитано 07.04.2012, 13:44  
kruftin
Прописка
 
Аватар для kruftin
 
Регистрация: 17.02.2012
Сообщений: 109
Сказал спасибо: 10
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
kruftin на пути к лучшему
По умолчанию Re: UART + atmega32

Не это то понятно, а для avr нету в си строковых типов переменных?
Чтобы unsigned string StringForSend; - и в строке лежит несколько байт
И вот ее надо передать.
unsigned char StringForSend[N+1] - это же массив как я понимаю, хотя могу и ошибаться. Руководство по написанию программ на си для atmega32 существует официльное или надо читать переводы на русском?
_Артём_, большое спасибо за код.
kruftin вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошивка atmega32 kruftin Микроконтроллеры, АЦП, память и т.д 10 17.02.2012 17:22
Atmega32 и энкодер Pevek80 Микроконтроллеры, АЦП, память и т.д 21 06.03.2011 20:46
Atmega32 и LCD DEJL1985 Делимся опытом 8 20.06.2010 14:35
ATmega32 NCy Микроконтроллеры, АЦП, память и т.д 20 28.04.2007 00:44
Внутренее АЦП в ATmega32 Ztman Микроконтроллеры, АЦП, память и т.д 0 25.04.2007 22:51


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.