roboforum.ru

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

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

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

ALHIMIK » 27 сен 2009, 19:58

Посмотрел ужаснулся
и что я должен был там увидеть ?
Вложения
123.JPG

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

avr123.nm.ru » 27 сен 2009, 21:03

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

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

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

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

ALHIMIK » 27 сен 2009, 21:20

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

Добавлено спустя 4 минуты 31 секунду:
В R30 вмлаб пишет 0b00011000

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

avr123.nm.ru » 27 сен 2009, 21:29

Тогда по АСМ видно что он правильно делает операцию ИЛИ с числом 8.

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

ALHIMIK » 27 сен 2009, 21:34

тогда почему нога не дёргается ?

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

avr123.nm.ru » 27 сен 2009, 21:35

Надо попробовать другой симулятор или натуру.

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

ALHIMIK » 27 сен 2009, 21:50

протеус выдаёт тоже :o
завтра буду на натуре пробовать
спасибо за помощь

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

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

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

osc » 15 окт 2009, 21:31

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

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

Измеряю мультметром относительно "-" пит.

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

SERGEY_M » 15 окт 2009, 21:41

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

:wink:

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

osc » 15 окт 2009, 21:45

Завтра тогда попробую...

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

Arrovil » 18 окт 2009, 15:47

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

4 и 3 бит устанавливает, а остальные сбрасывает в 0, а надо, чтоб их не меняло...
Можно, конечно, через логические функции и маски, но слишком уж неудобно. Тем более, нужна возможность использовать значение бита в условии.
Буду благодарен за помощь.

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

blindman » 18 окт 2009, 15:50

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

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

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

Arrovil » 18 окт 2009, 16:24

Спасибо, но это только для установки в 1. А обнулять тогда как?


cron
Rambler\'s Top100 Mail.ru counter