roboforum.ru

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

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

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

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

Сообщение ALHIMIK » 27 сен 2009, 19:58

Посмотрел ужаснулся
и что я должен был там увидеть ?
Вложения
123.JPG
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

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

Сообщение avr123.nm.ru » 27 сен 2009, 21:03

в АСМ коде видно, что операция
Код: Выделить всёРазвернуть
|=
делается с номерами битов, а не с масками как надо бы.

Лучше писать так как рекомендовано в "Язык Си для микроконтроллеров" - http://avr123.nm.ru/05.htm - вот так

Код: Выделить всёРазвернуть
...  |= (1 << FOC1A);
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение ALHIMIK » 27 сен 2009, 21:20

1)у меня же макрос объявлен -
#define FOC1A (1<<3)
2) даже если писать TCCR1A |= ( 1 << 3 );
результат тотже

Добавлено спустя 4 минуты 31 секунду:
В R30 вмлаб пишет 0b00011000
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

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

Сообщение avr123.nm.ru » 27 сен 2009, 21:29

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

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

Сообщение ALHIMIK » 27 сен 2009, 21:34

тогда почему нога не дёргается ?
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

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

Сообщение avr123.nm.ru » 27 сен 2009, 21:35

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

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

Сообщение ALHIMIK » 27 сен 2009, 21:50

протеус выдаёт тоже :o
завтра буду на натуре пробовать
спасибо за помощь
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

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

Сообщение osc » 15 окт 2009, 19:04

Добрый вечер всем!
У меня вопрос, как сделать прерывание по изменению уровня на PCINT9 ? Контроллер atmega48
CodeVision ругается на такую запись:
Код: Выделить всёРазвернуть
interrupt [PCINT9] void pc9_int(void)
{
some code...
}

Не знает что такое PCINT9 :(
Еще на выводе PB0 почему - то всегда лог. 1, ставлю 0, а всеравно 1 :RTFM:

http://wearcam.org/ece385/avr/atmega48pinout.png
Аватара пользователя
osc
 
Сообщения: 333
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

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

Сообщение avr123.nm.ru » 15 окт 2009, 20:04

Воспользуйтесь мастером кода. Потом посмотрите что он вам выдаст и в даташите прочитайте про эти регистры.

Добавлено спустя 2 минуты 11 секунд:
osc писал(а): CodeVision ругается на такую запись:
Код: Выделить всёРазвернуть
interrupt [PCINT9] 
Как работают прерывания в микроконтроллере AVR - механизм и примеры объявления в разных компиляторах - http://avr123.nm.ru/03.htm

Добавлено спустя 1 минуту 43 секунды:
osc писал(а): на выводе PB0 почему - то всегда лог. 1, ставлю 0, а всеравно 1

Как ставите ? Как измеряете ?

osc писал(а): :RTFM:
Это :RTFM: точно ! Устройство микроконтроллера AVR - http://avr123.nm.ru/02.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение osc » 15 окт 2009, 21:31

С прерываниями разобрался.
Как ставите ? Как измеряете ?

Устанавливаю 0 так:
Код: Выделить всёРазвернуть
void main(void)
{
DDRB.0 = 0xFF;
PORTB.0 = 0x00;
}

Измеряю мультметром относительно "-" пит.
Аватара пользователя
osc
 
Сообщения: 333
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

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

Сообщение SERGEY_M » 15 окт 2009, 21:41

попробуй
Код: Выделить всёРазвернуть
void main(void)
{
DDRB.0 = 1;
PORTB.0 = 0;
}

:wink:
Аватара пользователя
SERGEY_M
 
Сообщения: 682
Зарегистрирован: 20 мар 2009, 12:45
Откуда: Украина, Одесса
ФИО: Сергей

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

Сообщение osc » 15 окт 2009, 21:45

Завтра тогда попробую...
Аватара пользователя
osc
 
Сообщения: 333
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

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

Сообщение Arrovil » 18 окт 2009, 15:47

Прошу прощения, вопрос может показаться примитивным, но все же...
Как в АВР Студии (4.16 билд 128 ) на Си (стоит еще ВинАВР-20060421) присвоить значение биту порта? Например, PORTA.4=1 (равно как и PA4=0 и куча других вариантов) почему-то не работает; что-то в духе
Код: Выделить всёРазвернуть
PORTB=(1 << 4)|(1 << 3);

4 и 3 бит устанавливает, а остальные сбрасывает в 0, а надо, чтоб их не меняло...
Можно, конечно, через логические функции и маски, но слишком уж неудобно. Тем более, нужна возможность использовать значение бита в условии.
Буду благодарен за помощь.
Arrovil
 
Сообщения: 2
Зарегистрирован: 18 окт 2009, 15:26
Откуда: Харьков

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

Сообщение blindman » 18 окт 2009, 15:50

Код: Выделить всёРазвернуть
PORTB = PORTB | ((1 << 4)|(1 << 3));

или то же самое короче
Код: Выделить всёРазвернуть
PORTB |= ((1 << 4)|(1 << 3));
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение Arrovil » 18 окт 2009, 16:24

Спасибо, но это только для установки в 1. А обнулять тогда как?
Arrovil
 
Сообщения: 2
Зарегистрирован: 18 окт 2009, 15:26
Откуда: Харьков

Пред.След.

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

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

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