roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 28, 29, 30, 31, 32, 33, 34 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 07 апр 2008, 14:20 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Если порядок чтения результата АЦП и записи в таймер не нарушен то наверняка корректна.


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

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Код:
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x06;
// Place your code here
ADCSRA.6 = 1; //Включаем ADC
}

#define ADC_VREF_TYPE 0x00

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
//Выводим на ЛСД величину шим
ftoa((ADCW*100/1024), decimals, strADC);     
lcd_clear();
lcd_puts(strADC);
lcd_putsf(" ob/min");       

OCR1BH=ADCH;
OCR1BL=ADCL;
}


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
прерывание ИМХО раздутое у тебяю И зачем ты читаешь опять из ADCW если результат у тебя уже в adc_data ???

Может вот так написать

Код:
interrupt [ADC_INT] void adc_isr(void) {

       unsigned int adc_data;

adc_data = ADCW ;   // Read the AD conversion result

OCR1B = adc_data ;  // set new PWM

   //Выводим на ЛСД величину шим
   ftoa(( adc_data * 100/1024), decimals, strADC);
     
lcd_clear();
lcd_puts(strADC);
lcd_putsf(" ob/min");       
                                        }


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

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Спасибо теперь работает, нужно было написать вот так, в противном случае нифига не работает. Т.е. нельзя два раза вызывать ADCW, ADCH и ADCL, нужно работать с adc_data.
Вот исправленный код, не правильное закоментил ниже правильная строка
Код:
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x06;
// Place your code here
ADCSRA.6 = 1; //Включаем ADC
}

#define ADC_VREF_TYPE 0x00

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
//Выводим на ЛСД величину шим

//ftoa((ADCW*100/1024), decimals, strADC);      это не правильно
  ftoa((adc_data*100/1024), decimals, strADC);     
lcd_clear();
lcd_puts(strADC);
lcd_putsf(" ob/min");       

//OCR1BH=ADCH;  это не правильно
//OCR1BL=ADCL;  и это тоже
OCR1B = adc_data;
}


avr123.nm.ru :friends:


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

Зарегистрирован: 27 апр 2007, 21:25
Сообщения: 65
Откуда: Санкт-Петербург
На одном из предприятий, где мы проходили практику, на столе у глав. инж. была табличка: необычный вопрос - 0 р., простой вопрос - 100 р., глупый вопрос - 150 р., умный вопрос - 200 р.... так вот вопрос, глупый или какой, решайте сами.... Я не врубаюсь, какую величину забивает АЦП в ADCW. В одной из книг написано: ADC = V(на пине)*1024/V(опорное). Как именн связанно ADCW с ADCH:ADCL, какое значение выводиться в ADCW, если на входе будет 1В, 1.5В и т.п.????


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 08 апр 2008, 22:10 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ZarK117 писал(а):
какую величину забивает АЦП в ADCW. В одной из книг написано: ADC = V(на пине)*1024/V(опорное). Как именн связанно ADCW с ADCH:ADCL, какое значение выводиться в ADCW, если на входе будет 1В, 1.5В и т.п.????


Можно у меня почитать - http://avr123.nm.ru/z11.htm - о преобразовании.
Но ИМХО очевидно что Vref это число 1023 , а 0 вольт это число 0. Однако нужно учесть ошибки АЦП.

ADCH это старший байт ADCW
ADCL это младший байт ADCW


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

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Помогите разобраться. Вообщем в коде ниже мне нужно изменить 0x40 и 0xbf для PD7.
У себя в книшках вроде всё нашёл как и что переводить. Проверьте пожалуйста правильно ли. 2 код/ Только не нашёл как исправить это 0xbf
1
Код:
DDRD  = 0x40;  // назначаем все линии порта D на вход, кроме PD6
PORTD = 0xbf;  // подключаем внутренние нагрузочные резисторы, кроме PD6

2
Код:
DDRD  = 0x4A;  // назначаем все линии порта D на вход, кроме PD7
PORTD = ?;  // подключаем внутренние нагрузочные резисторы, кроме PD6

_________________
https://vk.com/ledscale - платы, vk.com/ledscale3dprintig - 3Д печать\моделирование, vk.com/ledrenovation- ремонт светодиодных источников света


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 13 апр 2008, 22:39 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Возможно так:

Код:
DDRD = (1<<7);  // назначаем все линии порта D на вход, кроме PD7
PORTD = ~(1<<6); // подключаем внутренние нагрузочные резисторы, кроме PD6


Или так:

Код:
DDRD = (1<<PD7);  // назначаем все линии порта D на вход, кроме PD7
PORTD = ~(1<<PD6); // подключаем внутренние нагрузочные резисторы, кроме PD6


в CVAVR для последнего варианта нужно скачать мой заголовок m8_128.h


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

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Спасибо. Ща буду пробовать.
Только так. Мне надо и то и то:
Код:
DDRD = (1<<PD7);  // назначаем все линии порта D на вход, кроме PD7
PORTD = ~(1<<PD7); // подключаем внутренние нагрузочные резисторы, кроме PD7


Добавлено спустя 5 минут 22 секунды:
Спасибо ещё раз :beer: . Всё работает :Yahoo!:

Добавлено спустя 28 минут 21 секунду:
Ещё тут такой вопрос. А как составляют таблицу вероятностей? Может кто-нибудь рассказать?
Код:
// таблица вероятностей для выбора направления движения, исходя
// из текущего направления движения.
unsigned char p[9][9] = {
{10,20,30,40,50,60,70,80,90},
{5,15,25,35,45,55,65,75,95},
{1,2,3,4,5,6,77,88,99},
{1,2,3,4,5,6,66,77,99},
{20,60,20,20,50,70,100,100,100},
{35,31,32,33,74,93,96,99,99},
{36,31,32,68,77,70,44,6,17},
{17,48,59,59,59,59,59,95,100},
{10,40,55,65,56,77,17,49,100},
};

_________________
https://vk.com/ledscale - платы, vk.com/ledscale3dprintig - 3Д печать\моделирование, vk.com/ledrenovation- ремонт светодиодных источников света


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

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Ну не ужели никто не знает? :(

_________________
https://vk.com/ledscale - платы, vk.com/ledscale3dprintig - 3Д печать\моделирование, vk.com/ledrenovation- ремонт светодиодных источников света


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

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
ну а сходить в гости к Железному Феликсу?
посмотреть в педивики википедии?

_________________
Linux user | Firefox user


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

Зарегистрирован: 17 июн 2007, 23:44
Сообщения: 565
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич
Спасибо. Просто раньше не видел там такого. Видимо плохо искал :oops:

_________________
https://vk.com/ledscale - платы, vk.com/ledscale3dprintig - 3Д печать\моделирование, vk.com/ledrenovation- ремонт светодиодных источников света


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

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Короче есть у меня программатор AVR910 сам сделал по схеме протоса, он работает. Дальше по шлейфу, я сделал маленькую платку на которой прошиваю Мегу16, т.е. я там прошиваю МК, а потом выкавыриваю его и сую в свои девайсы. Так вот, фузы я зашил на 16МГц, но при прошивке для тактирования использую не внешний кварц, а сигнал Clock который выдает, программатор, но я его по ошибке подключил на прошиваемом МК не к XTAL1, а к XTAL2 и пользовался так уже почти полгода и все нормально шилось и нормально работало, а вот вчера заметил что не туда подключили сигнал такта. Вот теперь у меня вопрос, нужно ведь правильно подключить к XTAL1, просто щас делаю такую же платку чтобы можно было прошивать Мегу8?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 16 апр 2008, 10:38 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Master писал(а):
у меня вопрос, нужно ведь правильно подключить к XTAL1


АГА ... :cry:


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

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Перепаял, на XTAL1 - тоже работает. Чудеса.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 28, 29, 30, 31, 32, 33, 34 ... 144  След.

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


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

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


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

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