roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 ноя 2024, 18:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 120, 121, 122, 123, 124, 125, 126 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 сен 2011, 00:11 
Не в сети

Зарегистрирован: 27 авг 2011, 14:05
Сообщения: 47
не-а.
это позволяет ставить точку с запятой после вызова макроса, если просто закрыть тело макроса в фигурные скобки, без while, то код вида
if(...)
BLA-BLA();
else
FOO();
не скомпилится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 сен 2011, 23:54 
Не в сети
Аватара пользователя

Зарегистрирован: 05 июн 2007, 12:20
Сообщения: 196
Откуда: Киев
прог. языки: C/C++, ASSEMBLER
Исчерпывающе, спасибо:)

_________________
Глюк по-немецки означает "счастье"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 06 окт 2011, 09:27 
Не в сети

Зарегистрирован: 05 окт 2011, 16:41
Сообщения: 1
Откуда: Россия, Череповец
Skype: navovvol
прог. языки: ASM
ФИО: Володя
Перехожу с atmega на AtXmega. Застрял на таймерах, у них регистров туевая куча. Зачем нужны регистры PERL и PERH?
Если не трудно, покажите элементарный пример на асме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 18:59 
Не в сети

Зарегистрирован: 13 сен 2008, 17:53
Сообщения: 157
Откуда: Иваново
прог. языки: Pascal, С
Народ подскажите подключил к меге32 дисплейчик 16*2, он нонейм, даташит найти не могу. Зачем нужен переменный резистор R1 для дисплейчика?
Питаю все это дело от 3 AA, дисплей светили еле еле. Как его лучше запитать, сколько ему надо?
PS схема ниочем, просто попалась...
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 19:49 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
резистор меняет контраст LCD.
Названия чипов на LCD есть? или обозначения маской на плате (если чипы залиты)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 19:57 
Не в сети

Зарегистрирован: 13 сен 2008, 17:53
Сообщения: 157
Откуда: Иваново
прог. языки: Pascal, С
Дисплей sc1602AHLB-SH-GB-V. даташит так и не нашел на него... Использовал даташит от какого то Винстаровского дисплея..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 20:06 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2253
Откуда: Екатеринбург
прог. языки: асемблер AVR
Запитать надо честными 5В, или хотя бы 4 АА (я про аккумуляторы, делать робота на батарейках - разориться). Общее напряжение у вас сколько?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 20:12 
Не в сети

Зарегистрирован: 13 сен 2008, 17:53
Сообщения: 157
Откуда: Иваново
прог. языки: Pascal, С
Померил сейчас 4,4в 3xAA. Если поставить 4xAA то будет где то 6 вольт, меге 32 от такого питания ни че не будет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 20:45 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2253
Откуда: Екатеринбург
прог. языки: асемблер AVR
Запитайте через диод - он отъест 0,7 В. И от переполюсовки защитит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 30 окт 2011, 21:31 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
http://www.rcscomponents.kiev.ua/module ... C1602A.pdf
http://webcache.googleusercontent.com/s ... clnk&gl=ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 31 окт 2011, 00:23 
Не в сети

Зарегистрирован: 13 сен 2008, 17:53
Сообщения: 157
Откуда: Иваново
прог. языки: Pascal, С
Dmitry__ Спасибо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 01 ноя 2011, 16:31 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
Доброго времени суток!
У меня мега16 оцифровывает и шлёт на ПК через FT232RL данные со скоростью 115200 бод в течение секунды.
Алгоритм простой: по кнопке включается таймер1, и в цикле по условию (char1=1) АЦП оцифровывает и передает ADCH в Usart, пока таймер1 не изменит в своём прерывании по прошествии секунды char1=0.
Вопрос такой: Я получаю каждый раз разное количество данных. Почему это происходит и как стабилизировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 01 ноя 2011, 18:36 
Не в сети

Зарегистрирован: 13 сен 2008, 17:53
Сообщения: 157
Откуда: Иваново
прог. языки: Pascal, С
Возможно (не уверен) по уарту не успевает передаваться информация из таймера, точнее ADC быстро преобразовывает а уарт за ней не успевает передавать данные на ПК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 01 ноя 2011, 23:59 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
Вот такой код. Сильно не браните - я только учусь).
Код:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>       
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

unsigned char io=0x01; // переменная для условия цикла ADC>USART. Обнуляется обработчиком таймера1 по прошествии секунды
unsigned char lcd_buf[17]; // для вывода количества измерений на LCD

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
io=0x00;
PORTA.3=0;
TCCR1B=0x00;

}

void initialization(void){

// LCD module initialization
lcd_init(16);

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCNT1H=0xE1; // настроено считать одну секунду на Кварце 8Мгц
TCNT1L=0x7B;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;

PORTD.4 = 1; // кнопка
DDRD = 0b00010000;
DDRA.3=1; // Выход
PORTA.3 = 0; //

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 115k (Double Speed Mode)
UCSRA=0x02;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x08;

// ADC initialization: AREF-pin used, ADC5 input, ADC enabled.
ADMUX=0b00100110;
ADCSRA=0b10000000;

};


void main(void){
               
unsigned char zamer ; // для данных АЦП
unsigned char SW1; // переменная контроля состояния кнопки
unsigned int counter; // счетчик количества измерений


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

initialization();

while(1){

counter=0;
io=0x01;
SW1 = PIND.4;

lcd_clear();
lcd_putsf("PRESS START");

while (PIND.4 == SW1) { /* пока SW1 не изменился ...  */};

if(PIND.4==0){
lcd_clear();
lcd_putsf("Loading...");

PORTA.3=1;
TCCR1B=0x05;
while (io==0x01)
      {
ADCSRA|=0x40;
while(ADCSRA&0x40); // ждем пока АЦП не закончит
zamer=ADCH;
printf("%d\n\r", zamer);
counter++;       
        };

lcd_clear();
lcd_putsf("DONE!");
delay_ms(700);
lcd_clear();
sprintf (lcd_buf, "%u", counter); // Преобразование кол-ва измерений из числа в строку
lcd_putsf("N = ");
lcd_puts(lcd_buf); // Вывод количества измерений на ЖКИ

TCNT1H=0xE1; // реинициализация Т1
TCNT1L=0x7B;
delay_ms(1000);
};

};
};



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 02 ноя 2011, 13:31 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
Ещё такой вопрос. у меня на контроллере висит кварц 8Мгц. Смотрю по даташиту, что передача с наименьшей ошибкой при BaudRate = 250k. Но во всех терминалах в стандартном ряду BaudRates не конкретно такого значения, а только 256k. Как быть?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 120, 121, 122, 123, 124, 125, 126 ... 144  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

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