Страница 44 из 160
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн дек 05, 2011 02:57:41
КАШАК
Как правильно обработать нажатие кнопки? Если кнопка на нулевом или первом выводе порта, все работает:
Код: Выделить всё
if((PINC & (1 << PC0)) == 1)
if((PINC & (1 << PC1)) == 2)
А если подключены к другим выводам порта, то не работает. Почему для PC0, в условии стоит 1, а для PC1 - 2 ? До этого программировал в CodeVision, сейчас перешел в AvrStudio (точнее его аналог под линуксом - Eclipse) и еще не все понимаю...
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн дек 05, 2011 06:19:33
BerZerK-ku
Компилятор тут не при чем, в CodeVision этот код работает точно так же как и в AVRStudio.
Вот так код будет понятнее :
Код: Выделить всё
if((PINC & (1 << PC0)) == (1 << PC0))
if((PINC & (1 << PC1)) == (1 << PC1))
, а можно и вот так:
Код: Выделить всё
if(PINC & (1 << PC0))
if(PINC & (1 << PC1))
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн дек 05, 2011 09:42:55
КАШАК
Спасибо

Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 17:20:53
Arlleex
Код: Выделить всё
#include <avr/io.h>
int main(void)
{
int a;
DDRB=(1<<DDB0);
while(1)
{
PORTB=(1<<PB0);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
PORTB=(0<<PB0);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
for(a=0; a<100; ++a);
}
while(1);
}
Собственно, отладчиком в AVRStudio4 посмотрел - задержки в форме конструкций for() не работают. Почему?
Использую AVRStudio4.19 совместно с AVR Toolchain 3.0.0.
Странная вещь...

Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 18:34:27
BerZerK-ku
Вариант 1.
Отключите оптимизацию.
Вариант 2.
Добавьте в цикл пустую команду (nop)
Вариант 3.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 19:41:45
Arlleex
Вариант первый рассмотрю более подробно. Но в AVR Studio оптимизации:
Q0
Q1
Q2
Q3
Qs
А варианта отключения оптимизации нет.
Может где в другом месте она отключается?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 20:01:07
Мастер Ломастер
Arlleex писал(а):Может где в другом месте она отключается?
не Q0, а
O0 - это и есть отключенная оптимизация
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 20:06:15
Мастер Ломастер
Arlleex писал(а):Собственно, отладчиком в AVRStudio4 посмотрел - задержки в форме конструкций for() не работают. Почему?
BerZerK-ku писал(а):Вариант 1.
Отключите оптимизацию.
и удивитесь размеру получающегося кода - фтопку
BerZerK-ku писал(а):Вариант 2.
Добавьте в цикл пустую команду (nop)
не так-то элементарно ПРАВИЛЬНО вставить в код NOP - да и неразумно это... фтопку, хотя и не в самый жар
BerZerK-ku писал(а):
Вариант 3.
из данных советов - наиболее правильный с точки зрения подхода, но тоже неразумный. пусть ждет очереди фтопку
правильный и самый разумный вариант заключается в подключении модуля
<avr/delay.h> и использовании для задержек функций
_delay_ms() и
_delay_us(). об особенностях использования этих функций ищите на форуме - это важно!
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 21:23:29
Arlleex
Дело даже не в том, а если придется организовать цикл for() как таковой?
Глянул на размер программы, действительно, многовато выходит. Но и с оптимизатором не самый смак без for() (да я еще не пробовал другие конструкции).
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 08, 2011 21:41:09
Мастер Ломастер
проблема не в for, а в том, что у вас есть несоответствие того, что вы ХОТИТЕ с тем, что вы НАПИСАЛИ в программе. дело в том, что язык Си не допускает вольной трактовки ваших мыслей - он ТУПО делает то, что написано. а с этой точки зрения вы написали явную ерунду: 5 циклов, которые НИЧЕГО не делают. с точки зрения компилятора это АБСОЛЮТНО БЕССМЫСЛЕННО - и это он отказывается делать. когда вы научитесь писать ОСМЫСЛЕННЫЕ задачи для компилятора - заработают все циклы и другие конструкции. удачи!
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пт дек 09, 2011 05:29:47
BerZerK-ku
Мастер Ломастер писал(а):и удивитесь размеру получающегося кода - фтопку
Не в курсе чем вы пользуетесь. В IAR при нормально написанной программе оптимизация дает выигрыш процентов 20 по размеру, по скорости не проверял.
Мастер Ломастер писал(а):не так-то элементарно ПРАВИЛЬНО вставить в код NOP - да и неразумно это... фтопку, хотя и не в самый жар
В данном случае был конкретный вопрос и на него конкретный ответ. Надо быть великим мастером, чтобы внести подобное изменение?
Мастер Ломастер писал(а):правильный и самый разумный вариант заключается в подключении модуля <avr/delay.h> и использовании для задержек функций _delay_ms() и _delay_us(). об особенностях использования этих функций ищите на форуме - это важно!
При малых величинах задержки for мало отличается от _delay_us. А большие лучше/правильнее делать на таймере.
Мастер Ломастер писал(а):он ТУПО делает то, что написано. а с этой точки зрения
Мастер Ломастер писал(а):с точки зрения компилятора это АБСОЛЮТНО БЕССМЫСЛЕННО
Вы сами себе противоречите. Опять же приведу в пример IAR: он спокойно обработает вышеприведенный пример.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пт дек 09, 2011 07:15:32
Мастер Ломастер
если вам хочется - можем поспорить

1. автор юзает WinAVR, и рассказы про IAR в данном контексте не очень уместны.
2. опять-таки, в WinAVR правильная вставка NOP-а заключается в достаточно неочевидном для новичка
asm volatile ("nop"); - согласны, что это на самом деле не так-то просто (в смысле, непонятно, почему именно так)?
3. что касается сравнения for с функциями задержки, то они неуместны в принципе, т.к. грамотно написанная "вручную" задержка вообще не будет отличаться от "библиотечной", но начинающему это не под силу - и ни к чему совершенно. кстати, я не начинающий, но никогда до самописных for-задержек не опускался.
4. я себе не противоречу. просто вдумайтесь в СМЫСЛ написанного: for(a=0; a<10; a++) _ NOP; - что это означает С ТОЧКИ ЗРЕНИЯ ЯЗЫКА СИ? означает буквально следующее: перебрать переменную от 0 до 9. а зачем? куда это значение девается? да никуда. это алгоритмически бессмысленная конструкция, ибо Си не содержит в себе никаких упоминаний о времени исполнения кода и т.п. вещах. если IAR на самом деле отрабатывает абсолютно бесполезный цикл - это скорее минус его оптимизатору, чем плюс. а WinAVR все глупости выкидывает безжалостно и беспощадно.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пт дек 09, 2011 08:37:27
BerZerK-ku
Мастер Ломастер писал(а):1. автор юзает WinAVR, и рассказы про IAR в данном контексте не очень уместны.
Авось одумается и пересядет на качественный продукт ))
Мастер Ломастер писал(а):2. опять-таки, в WinAVR правильная вставка NOP-а заключается в достаточно неочевидном для новичка asm volatile ("nop"); - согласны, что это на самом деле не так-то просто (в смысле, непонятно, почему именно так)?
Непонятно, объясните почему? У меня при максимальной оптимизации и так работает:
Мастер Ломастер писал(а):3. что касается сравнения for с функциями задержки, то они неуместны в принципе, т.к. грамотно написанная "вручную" задержка вообще не будет отличаться от "библиотечной", но начинающему это не под силу - и ни к чему совершенно. кстати, я не начинающий, но никогда до самописных for-задержек не опускался.
Как это сделать, не используя asm вставки? И что плохого в такой задержке? Это очередной миф, подобный не использованию оператора goto?
Мастер Ломастер писал(а):4. я себе не противоречу. просто вдумайтесь в СМЫСЛ написанного: for(a=0; a<10; a++) _ NOP;
Если я что-то пишу, значит хочу чтобы это было. Компилятор с отключенной оптимизацией ничего не должен убирать по своему хотению. При включении оптимизации, программист уже должен задумываться над тем что пишет.
А включать оптимизацию при освоении МК не стоит, т.к. получаешь кучу проблем.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Чт дек 15, 2011 17:49:33
a.garkin
Помогите понять в чем проблема.
Суть такова есть СТК 500 оригинальный. Есть плата изготовленная на производстве. Длина дорог от выводовконтроллера до isp разъема пару см максимум. шлейф родной. суть проблемы в том в этой плате в режиме внутреннегго программирования ни мега8535 ни мега 32 не програмируется при частоте больше 5 Кгерц. выпаиваю контроллер, сую в другую плату изготовленную дома прекрасно шьется при частоте 57 кгерц. вопрос в чем дело пайка отличная? под лупой разглядывал. плату промывал, ацетоном+сжатым воздухом продул. оба контроллера так себя ведут именно в этой плате. в другой они же нормально шьются.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пт дек 16, 2011 20:47:34
vitalik_1984
a.garkin писал(а):Помогите понять в чем проблема.
Суть такова есть СТК 500 оригинальный. Есть плата изготовленная на производстве. Длина дорог от выводовконтроллера до isp разъема пару см максимум. шлейф родной. суть проблемы в том в этой плате в режиме внутреннегго программирования ни мега8535 ни мега 32 не програмируется при частоте больше 5 Кгерц. выпаиваю контроллер, сую в другую плату изготовленную дома прекрасно шьется при частоте 57 кгерц. вопрос в чем дело пайка отличная? под лупой разглядывал. плату промывал, ацетоном+сжатым воздухом продул. оба контроллера так себя ведут именно в этой плате. в другой они же нормально шьются.
А кварц на плате стк какой?
Просто частота программирования зависит напрямую от такта камня.частота исп вроде 1/4от такта максимум.Можно на маленькой скорости менять фьюзы на 8Мгц и заливать на более высокой скорости.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб дек 17, 2011 21:33:22
a.garkin
vitalik_1984 писал(а):a.garkin писал(а):Помогите понять в чем проблема.
Суть такова есть СТК 500 оригинальный. Есть плата изготовленная на производстве. Длина дорог от выводовконтроллера до isp разъема пару см максимум. шлейф родной. суть проблемы в том в этой плате в режиме внутреннегго программирования ни мега8535 ни мега 32 не програмируется при частоте больше 5 Кгерц. выпаиваю контроллер, сую в другую плату изготовленную дома прекрасно шьется при частоте 57 кгерц. вопрос в чем дело пайка отличная? под лупой разглядывал. плату промывал, ацетоном+сжатым воздухом продул. оба контроллера так себя ведут именно в этой плате. в другой они же нормально шьются.
А кварц на плате стк какой?
Просто частота программирования зависит напрямую от такта камня.частота исп вроде 1/4от такта максимум.Можно на маленькой скорости менять фьюзы на 8Мгц и заливать на более высокой скорости.
А какая разница тут какой стоит кварц? если я ставлю режим работы от внутреннего картинка не меняется... Кварц на 16 Мгц. Просто мне сама ситуация не понятна. Не может ли так влиять то что у контроллера используются все ноги? Прошивка заливается на низкой скорости, но о боже как долго когда 85% памяти юзается. Прошивка работает вроде как надо. в чем прикол все таки?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вс дек 18, 2011 06:30:16
BerZerK-ku
При прошивке МК находится в состоянии сброса и становится не важно сколько и какие ноги задействованы в программе.
Скорости прошивки удручают. Как было написано выше, прошивать МК можно на частоте в 4-6 раз меньше тактовой (у меня обычно стоит 1 МГц).
Каким ПО и программатором пользуетесь?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вс дек 18, 2011 20:38:01
a.garkin
BerZerK-ku писал(а):При прошивке МК находится в состоянии сброса и становится не важно сколько и какие ноги задействованы в программе.
Скорости прошивки удручают. Как было написано выше, прошивать МК можно на частоте в 4-6 раз меньше тактовой (у меня обычно стоит 1 МГц).
Каким ПО и программатором пользуетесь?
avr studio, codevision как и писал выше на 2 СООБЩЕНИЯ оригинальный СТК500 (прошивка последняя) и только в этой плате в других работает норма.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вс дек 25, 2011 19:02:46
ВитГо
а AVR Studio отслеживает наложение кода ?
например если в одном файле стоит .org 0x100 и длинна кода например 1 кб
и есть другой файл с .org 0x50 и длинной кода в 256 байт
при компиляции будет наложение так как фактически по одним и тем же адресам нужно будет разместить разные куски кода
студия выдает какой нить варнинг или ошибку при этом ?
p.s. как то все руки не доходят самому проверить, может быть ктото сталкивался...
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн дек 26, 2011 20:56:27
vitalik_1984
ВитГо писал(а):а AVR Studio отслеживает наложение кода ?
например если в одном файле стоит .org 0x100 и длинна кода например 1 кб
и есть другой файл с .org 0x50 и длинной кода в 256 байт
при компиляции будет наложение так как фактически по одним и тем же адресам нужно будет разместить разные куски кода
студия выдает какой нить варнинг или ошибку при этом ?
p.s. как то все руки не доходят самому проверить, может быть ктото сталкивался...
По любому отслеживает, скажет что-нибудь типа нет места не могу записать.