roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 04 авг 2008, 11:12

Имхо лучше работать с целыми числами и гитерезис добавить - т.е. разность между включением и выключением.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 04 авг 2008, 18:53

Rig, не помогло. Получается так что при выносе из прерываний даже если напряжение больше 2.88 светодиод все равно горит, если в прерываний работает.
Аvr123.nm.ru с целыми числами это как? Это на делителе мерить только 1,2,3,4 и 5 вольт? Если так то не пойдет.(мне не только 9 вольт нужно, мне весь диапазон от 8 до 15 вольт)
Гестирезис это так:
if(voltage < 2.88f)
PORTB.0=1;
if(voltage > 2.9f)
PORTB.0=0;
спасибо.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение EdGull » 04 авг 2008, 19:02

город-то заполни, а то у нас тут так принято... :wink:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение rig » 04 авг 2008, 19:17

яб какой нибудь индикатор подцепил, переменные смотреть, непонятно что там в голове делается. Или в симуляторе посмотреть.
Pavel.d.a писал(а): с целыми числами это как?

это значит один раз посчитать или замерить какое число АЦПшка выдает на 9 вольт и сравнивать уже с ним. делить умножать уже не надо.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 04 авг 2008, 20:24

Пробовал я так, тоже не получается. 2.88 соответствует 589 с ацп
Код: Выделить всёРазвернуть
if(adc_data < 589)
PORTB.0=1;
результат такой же...
P/s город казань. Мне он очень не нравиться. Не хочу что бы его название мне глаза мазолило. Если без этого никак, то конечно заполню..

Добавлено спустя 20 минут 58 секунд:
А индикатор какой?
Через UАRT выводить значения adc_data?
Я в протеус симулирую, как там эти переменные посмотреть не знаю. Покапаюсь, может чего найду.
Сделал так:
Код: Выделить всёРазвернуть
interrupt [ADC_INT] void adc_isr(void)
{
PORTВ.1^=1; // добавил
adc_data=ADCH;
}
светодиод моргает, значит АЦП работает.

Добавлено спустя 26 минут 6 секунд:
Посмотрел в протеусе АDCL = 785 при 12 вольтах и 589 при 9в и 523 при 8в
Все измеряется все правильно, а при 8 вольтах светодиод все равно горит. Может все же нельзя из прерывания выносить? Пробовал и задержку делать между запусками ацп, чтоб время обработать было, все равно не помогает.

Добавлено спустя 9 минут 31 секунду:
Ой описался при 12 вольтах светодиод все равно горит.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение EdGull » 04 авг 2008, 20:51

P/s город казань. Мне он очень не нравиться. Не хочу что бы его название мне глаза мазолило. Если без этого никак, то конечно заполню..

ну напиши например Kazan-city чтоб не мозолило, дело не в этом.
Просто нас робототехников и так мало... А так глядишь кто из твоего города и подтянется... В живую-то намного лучше общаться... :wink:
А возможность проводить соревнования с массовыми заезадми ваще улёт!
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 04 авг 2008, 21:15

Pavel.d.a писал(а): Аvr123.nm.ru с целыми числами это как ? Это на делителе мерить только 1,2,3,4 и 5 вольт ? Если так то не пойдет. (мне не только 9 вольт нужно, мне весь диапазон от 8 до 15 вольт)


Диапазон напряжений любой, просто представляется он как число от 0 до 1023 или от 0 до 255.

Pavel.d.a писал(а):Аvr123.nm.ru Гестирезис это так ?
if(voltage < 2.88f)
PORTB.0=1;
if(voltage > 2.9f)
PORTB.0=0;
спасибо.


Да. Учти что при включении напряжение может скакнуть и гистерезис защищает от бесконечных переключений в этом случае.

и f можно не писать так как ТОЧКА показывает что число с плав. точкой.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 04 авг 2008, 21:50

AVR123.nm.ru спасибо, но rip уже про целые числа объяснил.
А про f не знал.
Как написать что бы все работало в теле главной функции, а не в прерывании? Второй вечер сижу над тремя строчками кода, бесить уже начинает ей богу.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 04 авг 2008, 22:35

Приложи свой проект архивом и желательно в PROTEUS схемку сделать или в VMLAB.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение rig » 05 авг 2008, 09:00

вот еще непонятка
Pavel.d.a писал(а):
Код: Выделить всёРазвернуть
if(adc_data < 589)

выше

Pavel.d.a писал(а):
Код: Выделить всёРазвернуть
unsigned char adc_data;


то есть adc_data по определению более 255 не может быть, попробуй
Код: Выделить всёРазвернуть
int adc_data;
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 05 авг 2008, 18:32

Вот архив там есть все, сильно не пинайте, я в первый раз.

Добавлено спустя 37 минут 19 секунд:
Все заработало.
ADMUX=0x00;
ADCSRA=0b11101101;

#asm("sei")

while (1)
{
if(adc_data<589)
PORTB.0=1;
else PORTB.0=0;
};
}
rip, когда вы советовали вставить эту строчку else PORTB.0=0; я пробовал так, но вчера это не помогло, а сегодня заработало.
Всем спасибо.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение rig » 05 авг 2008, 19:28

Pavel.d.a писал(а): сильно не пинайте, я в первый раз.

это уже все поняли по rip
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 05 авг 2008, 19:55

Rig извините пожалуйста, описался. я со смартфона на форуме, а p и g это соседнии кнопки 4 и 7 просто не туда нажал. Прошу прощения еще раз.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение rig » 05 авг 2008, 23:03

нее, нетъ тебе прощенья, забанен во веки веков, подлец :o
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 09 авг 2008, 10:52

Здравствуйте. Подскажите пожалуйста. У меня Fast PWM top=00FFh. Что будет если я захочу записать в OCR1АL отрицательное число? Или число больше 256?
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Пред.След.

Вернуться в Микроконтроллеры

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

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