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

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

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

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

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

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

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

 
Опции темы
Непрочитано 04.03.2012, 14:34  
Ara41
Почётный гражданин KAZUS.RU
 
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
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.RU
 
Регистрация: 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.RU
 
Регистрация: 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.RU
 
Регистрация: 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, время: 09:49.


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