WinAvr в вопросах и ответах
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: WinAvr в вопросах и ответах
Можно обойтись без atomic - на время чтения запретить прерывания, тогда во время считывания никто не помешает. Поскольку происходит это лишь 2-3 такта, задержка прерываний будет незначительна.
Re: WinAvr в вопросах и ответах
А какой способ быстрее и экономичней в условиях большого количества разных и частых прерываний?
PS: я нашел ключик -D с частотой МК.
-DF_CPU=20000000UL
Это строчка находилась в файле subdir.mk, там же есть ключик -mmcu=atmega328p. Но запись:
#if mmcu==atmega328p
.......
#endif
Не работает.
PS: я нашел ключик -D с частотой МК.
-DF_CPU=20000000UL
Это строчка находилась в файле subdir.mk, там же есть ключик -mmcu=atmega328p. Но запись:
#if mmcu==atmega328p
.......
#endif
Не работает.
Кот должен прожить жизнь без сожаления.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: WinAvr в вопросах и ответах
Alexeyslav писал(а):Можно обойтись без atomic - на время чтения запретить прерывания, тогда во время считывания никто не помешает. Поскольку происходит это лишь 2-3 такта, задержка прерываний будет незначительна.
ATOMIC_BLOCK делает как раз именно это, но лучше и аккуратнее, чем если делать это вручную при помощи cli()/sei()
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: WinAvr в вопросах и ответах
дак посмотри как сделано в хидерах winavr - там полно ветвлений по типу МК - иф элс. Наверно avr.hDruidCat писал(а): запись: #if mmcu==atmega328p Не работает.

Будете проходить мимо- проходите!
Re: WinAvr в вопросах и ответах
Ура, получилось!!! 
#if defined(__AVR_ATmega328P__)
.......
#endif
Спасибо!
#if defined(__AVR_ATmega328P__)
.......
#endif
Спасибо!
Кот должен прожить жизнь без сожаления.
Re: WinAvr в вопросах и ответах
Доброго времени суток, подскажите пожалуйста корректна ли вот такая запись PORTA^=0x10,т.е. я хочю
включать выключать нагрузку на 4 пине порта А
включать выключать нагрузку на 4 пине порта А
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: WinAvr в вопросах и ответах
корректна.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: WinAvr в вопросах и ответах
слово хочу пишется через у, так что часть вашей записи некорректнаTICLIR писал(а):корректна ли вот такая запись PORTA^=0x10,т.е. я хочю
включать выключать нагрузку на 4 пине порта А
кроме того (чисто для справки) для последних версий attiny и atmega для поочередного перебрасывания пина из 0 в 1 и наоборот можно использовать еще более простую запись: PINA = 0x10;
я бы на вшем месте использовал более понятное обозначение нужного бита в порту, тем более, что так и принято в WinWVR: PORTA ^= _BV(PA4); или PINA = _BV(PA4); - сразу видно, какой именно бит вы хотите тогглить
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: WinAvr в вопросах и ответах
ARV писал(а):PINA = 0x10;
А вот это уже интересно. Это на уровне железа поддерживается? Как будет выглядеть в ассемблерном варианте?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: WinAvr в вопросах и ответах
ИС-пытатель писал(а):А вот это уже интересно. Это на уровне железа поддерживается? Как будет выглядеть в ассемблерном варианте?
конечно на уровне железа. в ассемблере будет примерно так
Код: Выделить всё
ldi r17, 1
out PINA, r17если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: WinAvr в вопросах и ответах
Разработчики сделали еще одни грабли. 
Re: WinAvr в вопросах и ответах
Все понятно Спасибо.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: WinAvr в вопросах и ответах
грабли - это использовать не по назначению биты в регистрах периферииИС-пытатель писал(а):Разработчики сделали еще одни грабли.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: WinAvr в вопросах и ответах
есть - пишется как "|| <маска битов>"
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: WinAvr в вопросах и ответах
Что с вами? Это же элементарная логическая операция "ИЛИ"...
Re: WinAvr в вопросах и ответах
Alexeyslav писал(а):Что с вами?
двоишник я
для одного мне известно как
#define SetBit(reg, bit) reg |= (1<<(bit))
а для нескольких будет так ?
#define SetBit(reg, bit0, bit1, bit2) reg |= (1<<(bit0)|(1<<(bit1)|(1<<(bit2))
Tell Me The Truth
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: WinAvr в вопросах и ответах
Ну, как-то так да. Проверить легко.