Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 28 май 2025, 21:24

Часовой пояс: UTC + 3 часа [ Летнее время ]



Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
#000000 #000040 #000080 #0000BF #0000FF
#004000 #004040 #004080 #0040BF #0040FF
#008000 #008040 #008080 #0080BF #0080FF
#00BF00 #00BF40 #00BF80 #00BFBF #00BFFF
#00FF00 #00FF40 #00FF80 #00FFBF #00FFFF
#400000 #400040 #400080 #4000BF #4000FF
#404000 #404040 #404080 #4040BF #4040FF
#408000 #408040 #408080 #4080BF #4080FF
#40BF00 #40BF40 #40BF80 #40BFBF #40BFFF
#40FF00 #40FF40 #40FF80 #40FFBF #40FFFF
#800000 #800040 #800080 #8000BF #8000FF
#804000 #804040 #804080 #8040BF #8040FF
#808000 #808040 #808080 #8080BF #8080FF
#80BF00 #80BF40 #80BF80 #80BFBF #80BFFF
#80FF00 #80FF40 #80FF80 #80FFBF #80FFFF
#BF0000 #BF0040 #BF0080 #BF00BF #BF00FF
#BF4000 #BF4040 #BF4080 #BF40BF #BF40FF
#BF8000 #BF8040 #BF8080 #BF80BF #BF80FF
#BFBF00 #BFBF40 #BFBF80 #BFBFBF #BFBFFF
#BFFF00 #BFFF40 #BFFF80 #BFFFBF #BFFFFF
#FF0000 #FF0040 #FF0080 #FF00BF #FF00FF
#FF4000 #FF4040 #FF4080 #FF40BF #FF40FF
#FF8000 #FF8040 #FF8080 #FF80BF #FF80FF
#FFBF00 #FFBF40 #FFBF80 #FFBFBF #FFBFFF
#FFFF00 #FFFF40 #FFFF80 #FFFFBF #FFFFFF
Настройки:
BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Анти-спам
Анти-спам:
Выполните задание
   

Обзор темы - USART PWM
Автор Сообщение
  Заголовок сообщения:  Re: USART PWM  
Цитата
Сообщение Добавлено: 15 апр 2012, 01:18
  Заголовок сообщения:  Re: USART PWM  
Цитата
Streetstyle
Спасибо конечно но мне нужно было управлять нагрузкой с пк
я уже разобрался
Сообщение Добавлено: 15 апр 2012, 01:16
  Заголовок сообщения:  Re: USART PWM  
Цитата
Сообщение Добавлено: 15 апр 2012, 01:13
  Заголовок сообщения:  Re: USART PWM  
Цитата
Нет вру ;) Советую писать в CodeVisionAVR там уже встроенны функции для работы со строками и UART, главное разбратся с Help-ом он только на английском
Сообщение Добавлено: 14 апр 2012, 20:55
  Заголовок сообщения:  Re: USART PWM  
Цитата
Больше нечем помоч немогу :zomg:


Вложения:
c.zip [113.24 КБ]
Скачиваний: 850
Сообщение Добавлено: 14 апр 2012, 20:15
  Заголовок сообщения:  Re: USART PWM  
Цитата
Хотел тебе написать прогу но у самого голова опухла :shock: я тоже новичек в этом деле.
Думаю тебя устроит простой вариант : :crazy:
кнопки a и s прибовляют z и x уменшают ;)

Написано в AVR Studio 5 если будут проблемы с модулем delay.h то надо включит оптимизацию.
хотя его можно удалить он сдесь ненужен

// DEFINE___________________________________________________________

#define F_CPU 8000000UL // Скорость мк 8 Мгц

#define BAUD 9600L

#define CR 0x13
#define LF 0x10


// INCLUDE__________________________________________________________

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>


// VARIABLES________________________________________________________

volatile char temp;


// INTERRUPT________________________________________________________

ISR(USART_RX_vect)
{
temp=UDR;
switch (temp)
{
case 'a': OCR0A=OCR0A+10; break;
case 'z': OCR0A=OCR0A-10; break;
case 's': OCR0B=OCR0B+10; break;
case 'x': OCR0B=OCR0B-10;
}
}


// INIT FUNCTIONS___________________________________________________

void port_init(void)
{
DDRB=0xff;
PORTB=0x00;
DDRD=0xff;
PORTD=0x00;
}

void pwm_init(void) // Выводы OC0A и OC0B шим
{
TCCR0A|=_BV(WGM00)|_BV(WGM01)|_BV(COM0B1)|_BV(COM0A1);
TCCR0B|=_BV(CS02);
OCR0A=0x00;
OCR0B=0x00;
}

void usrt_init(void) // 8bit 1stop NOParity
{
UCSRB|=_BV(RXEN)|_BV(TXEN)|_BV(RXCIE);
UCSRC|=_BV(UCSZ0)|_BV(UCSZ1);
UBRRH=(F_CPU/16/BAUD-1)>>8;
UBRRL=(F_CPU/16/BAUD-1)&0xff;
sei();
}


// FUNCTIONS________________________________________________________

void usrt_send(char data)
{
while(!(UCSRA&_BV(UDRE)));
UDR=data;
}


// MAIN FUNCTION____________________________________________________

int main(void)
{
port_init();
usrt_init();
pwm_init();
usrt_send('o');
usrt_send('k');

while(1)
{

}
}
Сообщение Добавлено: 14 апр 2012, 20:14
  Заголовок сообщения:  Re: USART PWM  
Цитата
void PutChar(unsigned char sym)
{
if (count < SIZE_BUF){ //если в буфере еще есть место
TxBuf[tail] = sym; //помещаем в него символ
count++; //инкрементируем счетчик символов
tail++; //и индекс хвоста буфера
if (tail == SIZE_BUF) tail = 0;
}

}

//взять символ из буфера
unsigned char GetChar(void)
{
unsigned char sym = 0;
if (count > 0){ //если буфер не пустой
sym = TxBuf[head]; //считываем символ из буфера
count--; //уменьшаем счетчик символов
head++; //инкрементируем индекс головы буфера
if (head == SIZE_BUF) head = 0;
}
return sym;

}

char * USART_SendStr(void)
{
char * str= NULL;
int i=0;
while(count > 0)
{
unsigned char sym;
sym = GetChar();

*(str+i)=sym;
i++;
}
return str;
}

///////////////////////////////////////////////////
PutChar('5');
while (1)
{

int i = atoi(USART_SendStr());
USART_Transmit(i);//получаю не то что должнобыть

}
Если я ложу в буфер PutChar('5');
И также извлекаю с буфера GetChar()
Но как только я хочу сформировать из масива строкку *(str+i)=sym;
Получаю не верное значение!!!
Сообщение Добавлено: 14 апр 2012, 12:05
  Заголовок сообщения:  Re: USART PWM  
Цитата
Сообщение Добавлено: 14 апр 2012, 12:01
  Заголовок сообщения:  Re: USART PWM  
Цитата
Сообщение Добавлено: 13 апр 2012, 19:46
  Заголовок сообщения:  Re: USART PWM  
Цитата
char b,a='1';

b=atoi(a); // b=1 // atoi работает только с числовыми символами, к примеру('1','500','12225') и неработает с ('a','ghg','crap')
-----------------------
char b,a='1'; // переменной а присвоено значение 49 из кодовой таблицы asc соответствующее знаку 1

b=a; // b=49
-----------------------
да тебе нужен буфер для 2вух и более значных чисел.
Сообщение Добавлено: 13 апр 2012, 08:23

Часовой пояс: UTC + 3 часа [ Летнее время ]


Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB