AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

Так что же получается,все переменные обязательно чем то инициализировать? Мне казалось что должен быть 0 при объявлении переменной
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

без реального кода однозначно на ваш первый впрос ответить нельзя.
по умолчанию автоматически обнуляются все static переменные и все глобальные переменные. что там у вас наделано - не известно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
ozonn
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Re: AVR studio в вопросах и ответах

Сообщение ozonn »

[uquote="vovik15",url="/forum/viewtopic.php?p=3455900#p3455900"]Так что же получается,все переменные обязательно чем то инициализировать?[/uquote]
не обязательно
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

Ну так моя переменная глобальная. Но почему то при включении она была не 0. Нулем она стала только после инициализации. И вообще я с этим gcc уже много граблей пособрал
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

vovik15 писал(а):Нулем она стала только после инициализации. И вообще я с этим gcc уже много граблей пособрал
не верю! © Станиславский

очень от многих я слышал про грабли в GCC, которые на поверку оказывались отсутствием знаний языка Си.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: AVR studio в вопросах и ответах

Сообщение ПростоНуб »

[uquote="vovik15",url="/forum/viewtopic.php?p=3455921#p3455921"]Ну так моя переменная глобальная. Но почему то при включении она была не 0. Нулем она стала только после инициализации. И вообще я с этим gcc уже много граблей пособрал[/uquote]
Вы действительно уверены в том, что обнаружили нарушение стандарта C в компиляторе?

Код: Выделить всё

If an object that has static storage duration is not initialized explicitly, then:
— if it has pointer type, it is initialized to a null pointer;
— if it has arithmetic type, it is initialized to (positive or unsigned) zero;
— if it is an aggregate, every member is initialized (recursively) according to these rules;
— if it is a union, the first named member is initialized (recursively) according to these rules.
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

For ( unsigned int x=60000; x>0; x--) {} и что вы думаете? Компилятор просто выкинул этот цикл из кода
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: AVR studio в вопросах и ответах

Сообщение ПростоНуб »

[uquote="vovik15",url="/forum/viewtopic.php?p=3455933#p3455933"]For ( unsigned int x=60000; x>0; x--) {} и что вы думаете? Компилятор просто выкинул этот цикл из кода[/uquote]
Совершенно логично с его стороны :)
Пользуйтесь или библиотечными функциями, или, если время задержки нужно очень точное, ассемблерной вставкой.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: AVR studio в вопросах и ответах

Сообщение VladislavS »

vovik15, ну хоть бы nop-чик какой в тело цикла вставили, чтобы он хоть что-то "полезное" делал :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

nop-чик тоже надо уметь вставить так, чтобы компилятор его не выкинул :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: AVR studio в вопросах и ответах

Сообщение Z_h_e »

vovik15 писал(а):For ( unsigned int x=60000; x>0; x--) {} и что вы думаете? Компилятор просто выкинул этот цикл из кода
for ( volatile unsigned int x=60000; x>0; x--) {}
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: AVR studio в вопросах и ответах

Сообщение Мурик »

[uquote="vovik15",url="/forum/viewtopic.php?p=3455933#p3455933"]For ( unsigned int x=60000; x>0; x--) {} и что вы думаете? Компилятор просто выкинул этот цикл из кода[/uquote]

Код: Выделить всё

For (volatile unsigned int x=60000; x>0; x--);
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

Ладно, я уже понял что надо было ноп вставить. Посоветуйте пожалуйста что почитать по jtag, хочу освоить этот метод отладки.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: AVR studio в вопросах и ответах

Сообщение Мурик »

JTAG отладчик есть? На Али он около 100$ стоит.
Не все МК поддерживают JTAG. Если не ошибаюсь, только модели от 40 выводов и больше.
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

я заказал на али jtag ice отладчик за 500 рублей, он поддерживает mega16.32.64.128 буду его мучать. Еще вопрос,если локальная переменная не проинициализированна,в ней будет мусор?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение ARV »

vovik15 писал(а):если локальная переменная не проинициализированна,в ней будет мусор?
да
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: AVR studio в вопросах и ответах

Сообщение ПростоНуб »

[uquote="vovik15",url="/forum/viewtopic.php?p=3456329#p3456329"]если локальная переменная не проинициализированна,в ней будет мусор?[/uquote]
Если она статическая - нет. Будет или ноль или последнее записанное в нее значение. В противном случае - да, содержимое неинициализированных динамических переменных не определено.
vovik15
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Контактная информация:

Re: AVR studio в вопросах и ответах

Сообщение vovik15 »

А почему Avr studio 5 некоторые функции позволяет сворачивать ,а некоторые нет? Просто рядом с функцией нет знака минус для сворачивания.
Возможно ли в режиме пошаговой трассировки кода смотреть за состоянием переменных?
Vaha
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт окт 11, 2013 20:43:07
Откуда: с. Муравлёвка Измаильский р-н.

Re: AVR studio в вопросах и ответах

Сообщение Vaha »

Здравствуйте.

.equ bit_a = 0
.equ bit_b = 4
.equ bit_c = 6

; установить пины в 1:

ldi temp, (1<<bit_b) ; в "temp"-e будет = 0х10 (0b0001 0000)
ldi temp, (1<<bit_b)|(1<<bit_a) ; в "temp"-e будет = 0х11 (0b0001 0001)

; если эти пиы установить в "0"

ldi temp, 255^(1<<bit_b) ; в "temp"-e будет = 0хEF (0b1110 1111)

; для читабельности - типа - бит а и б (c) установить в "0":
ldi temp, 0xff^((!0<<bit_b)|(!0<<bit_a)) ; в "temp"-e будет = 0хEE (0b1110 1110)
ldi temp, ~((!0<<bit_b)|(!0<<bit_a)|(!0<<bit_c)) ; в "temp"-e будет = 0хAE (0b1010 1110)

может есть какой другой способ получить тот-же результат более короткий, удобный читабельный (без всяких извращений), как при установке в "1".
Извиняюсь - переправил пины на биты - это для регистров,а не для I/O
Как пример - выделяется регистр под свои флаги-ключи и надо их устанавливать/сбрасывать - в "1" устанавливать красиво-читабельно(1<<bit), а в "0" нужно слегка "поизвращаться" ~(!0<<bit) - читабельно, но слегка напрягает.
Последний раз редактировалось Vaha Ср сен 19, 2018 17:37:00, всего редактировалось 1 раз.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: AVR studio в вопросах и ответах

Сообщение Z_h_e »

ldi temp, ~((1<<pin_b)|(1<<pin_a))
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «AVR»