AVR studio в вопросах и ответах
Re: AVR studio в вопросах и ответах
Так что же получается,все переменные обязательно чем то инициализировать? Мне казалось что должен быть 0 при объявлении переменной
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
без реального кода однозначно на ваш первый впрос ответить нельзя.
по умолчанию автоматически обнуляются все static переменные и все глобальные переменные. что там у вас наделано - не известно.
по умолчанию автоматически обнуляются все static переменные и все глобальные переменные. что там у вас наделано - не известно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: AVR studio в вопросах и ответах
[uquote="vovik15",url="/forum/viewtopic.php?p=3455900#p3455900"]Так что же получается,все переменные обязательно чем то инициализировать?[/uquote]
не обязательно
не обязательно
Re: AVR studio в вопросах и ответах
Ну так моя переменная глобальная. Но почему то при включении она была не 0. Нулем она стала только после инициализации. И вообще я с этим gcc уже много граблей пособрал
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
не верю! © Станиславский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 в компиляторе?
Вы действительно уверены в том, что обнаружили нарушение стандарта 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.Re: AVR studio в вопросах и ответах
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 в вопросах и ответах
vovik15, ну хоть бы nop-чик какой в тело цикла вставили, чтобы он хоть что-то "полезное" делал 
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
nop-чик тоже надо уметь вставить так, чтобы компилятор его не выкинул 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: AVR studio в вопросах и ответах
for ( volatile unsigned int x=60000; x>0; x--) {}vovik15 писал(а):For ( unsigned int x=60000; x>0; x--) {} и что вы думаете? Компилятор просто выкинул этот цикл из кода
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--);Re: AVR studio в вопросах и ответах
Ладно, я уже понял что надо было ноп вставить. Посоветуйте пожалуйста что почитать по jtag, хочу освоить этот метод отладки.
Re: AVR studio в вопросах и ответах
JTAG отладчик есть? На Али он около 100$ стоит.
Не все МК поддерживают JTAG. Если не ошибаюсь, только модели от 40 выводов и больше.
Не все МК поддерживают JTAG. Если не ошибаюсь, только модели от 40 выводов и больше.
Re: AVR studio в вопросах и ответах
я заказал на али jtag ice отладчик за 500 рублей, он поддерживает mega16.32.64.128 буду его мучать. Еще вопрос,если локальная переменная не проинициализированна,в ней будет мусор?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
даvovik15 писал(а):если локальная переменная не проинициализированна,в ней будет мусор?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: AVR studio в вопросах и ответах
[uquote="vovik15",url="/forum/viewtopic.php?p=3456329#p3456329"]если локальная переменная не проинициализированна,в ней будет мусор?[/uquote]
Если она статическая - нет. Будет или ноль или последнее записанное в нее значение. В противном случае - да, содержимое неинициализированных динамических переменных не определено.
Если она статическая - нет. Будет или ноль или последнее записанное в нее значение. В противном случае - да, содержимое неинициализированных динамических переменных не определено.
Re: AVR studio в вопросах и ответах
А почему Avr studio 5 некоторые функции позволяет сворачивать ,а некоторые нет? Просто рядом с функцией нет знака минус для сворачивания.
Возможно ли в режиме пошаговой трассировки кода смотреть за состоянием переменных?
Возможно ли в режиме пошаговой трассировки кода смотреть за состоянием переменных?
-
Vaha
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт окт 11, 2013 20:43:07
- Откуда: с. Муравлёвка Измаильский р-н.
Re: AVR studio в вопросах и ответах
Здравствуйте.
.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) - читабельно, но слегка напрягает.
.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 в вопросах и ответах
ldi temp, ~((1<<pin_b)|(1<<pin_a))
