AVR studio в вопросах и ответах
Вопрос по компилятору GCC AVR(установлен WinAVR) в AVR Studio4.
При разработке программы под tiny2313 и так огрёб проблемы со слишком усердной оптимизацией со стороны GCC("volatile" forever). Так тут мне Studio подкинул очередной ИМХО глюк. при выполнении копирования командой "term_real = term_ac;" значения term_real и term_ac; 11 и 13 соответственно, так после копирования в term_real и term_ac; 0 и 13. Обе переменные лежат в SRAM, я понимаю, что копирование происходит через регистры, но почему значение зануляется?
При разработке программы под tiny2313 и так огрёб проблемы со слишком усердной оптимизацией со стороны GCC("volatile" forever). Так тут мне Studio подкинул очередной ИМХО глюк. при выполнении копирования командой "term_real = term_ac;" значения term_real и term_ac; 11 и 13 соответственно, так после копирования в term_real и term_ac; 0 и 13. Обе переменные лежат в SRAM, я понимаю, что копирование происходит через регистры, но почему значение зануляется?
- Вложения
-
- Termometr.c
- (5.79 КБ) 617 скачиваний
Здраствуйте!
Я програмил на асемблере, но по сути то это же столько мороки, намного проще работать с AVR на С.Ни так ли? И я начал переходить на С. Читаю щас книгу Шпака "Программирование микроконтроллеров AVR и PIC" . Делал все по книге, установил WinAvr и AVRStudio 4,
написал програмку элементарную на С у Programmers Notpad [WinAVR ]откомпилил ,создал cof и hex файл и загрузил его у AVRStudio 4 и открылось окно Disassembler(то есть код на С был преобразован на асемблер ), и я был удивлен что так не удобно отлаживать проги на С в отладчике-по коду Disassembler. Я пробывал сразу у AVRStudio открыть С файл и запустить отладку но вылазить Error , я понял так нельзя. А подскажите другие бесплатные среды , уж по удобнее (то есть отлаживать не по Disassembler а по сишному коду) для отладки прог на С.Например CodeVision там отлаживать удобнее? я просто ним не пользовался...
Я програмил на асемблере, но по сути то это же столько мороки, намного проще работать с AVR на С.Ни так ли? И я начал переходить на С. Читаю щас книгу Шпака "Программирование микроконтроллеров AVR и PIC" . Делал все по книге, установил WinAvr и AVRStudio 4,
написал програмку элементарную на С у Programmers Notpad [WinAVR ]откомпилил ,создал cof и hex файл и загрузил его у AVRStudio 4 и открылось окно Disassembler(то есть код на С был преобразован на асемблер ), и я был удивлен что так не удобно отлаживать проги на С в отладчике-по коду Disassembler. Я пробывал сразу у AVRStudio открыть С файл и запустить отладку но вылазить Error , я понял так нельзя. А подскажите другие бесплатные среды , уж по удобнее (то есть отлаживать не по Disassembler а по сишному коду) для отладки прог на С.Например CodeVision там отлаживать удобнее? я просто ним не пользовался...
Да именно по-шаговую делает PROTEUS ! Причем и по Си и можно раскрыть к текту на Си код на АСМ-е !
Вот скриншоты
http://www.proteus123.narod.ru/img/25.png
http://www.proteus123.narod.ru/img/24_c_asm.png

Вот скриншоты
http://www.proteus123.narod.ru/img/25.png
http://www.proteus123.narod.ru/img/24_c_asm.png

- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
а почему бы вам не читать инструкции к программам, которыми пользуетесь? зачем вам Шпаки всякие? компилите программу в студии, потом нажимете "старт отладки" и прекрасно отлаживаете прямо по сишному коду - никаких CОF или ELF открывать не надо. WinAVR - родной компилятор для студии, он с ним дружит лучше всех прочих.Twen писал(а):Делал все по книге, установил WinAvr и AVRStudio 4,
написал програмку элементарную на С у Programmers Notpad [WinAVR ]откомпилил ,создал cof и hex файл и загрузил его у AVRStudio 4 и открылось окно Disassembler(то есть код на С был преобразован на асемблер ), и я был удивлен что так не удобно отлаживать проги на С в отладчике-по коду Disassembler. Я пробывал сразу у AVRStudio открыть С файл и запустить отладку но вылазить Error , я понял так нельзя. А подскажите другие бесплатные среды , уж по удобнее (то есть отлаживать не по Disassembler а по сишному коду) для отладки прог на С.
кстати об отладке в протеусе - его отладчик (во всяком случае в версии 7.4 sp3) достаточно сильно уступает по возможностям студии, особенно по возможностям работы с переменными, памятью и регистрами. да и глюки в студии все документированы и немного их, не то ч то в протеусе.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Доброго времени суток!
Пишу в АВРстудии прогу под мегу8535. Код прекрасно ложится и вроде нет проблем, НО в отладке после устаноки флага разрешения прерывания по опустевшему регистру передачи (UDRIE), соскакивает на обработку прерывания по внешнему сигналу (EXT_INT0). В DS указаны адреса векторов прерываний и заканчиваются значением 0х014. В таблице векторов пишу только "прыжки", сами коды обработки прерываний начинаю с 0х020. Менял на 0х040 не помогает.
Бывалые, пожалуйста подскажите в чем может быть проблема.
Пишу в АВРстудии прогу под мегу8535. Код прекрасно ложится и вроде нет проблем, НО в отладке после устаноки флага разрешения прерывания по опустевшему регистру передачи (UDRIE), соскакивает на обработку прерывания по внешнему сигналу (EXT_INT0). В DS указаны адреса векторов прерываний и заканчиваются значением 0х014. В таблице векторов пишу только "прыжки", сами коды обработки прерываний начинаю с 0х020. Менял на 0х040 не помогает.
Бывалые, пожалуйста подскажите в чем может быть проблема.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Доброго времени!
Подскажите пишу прогу для меги8535. В передатчик загоняю:
clr tmp;
ldi temp, 0x19;
out UBRRH,tmp;
out UBRRL,temp;
ldi tmp,(1<<TXEN)|(1<<RXEN);
out UCSRB, tmp;
ldi tmp,(1<<TXC)|(1<<UDRE)
out UCSRA,tmp
ldi tmp, (1<<URSEL)|(2<<UPM0)|(1<<USBS)|(3<<UCSZ0)
out UCSRC, tmp;
При симуляции проекта, наблюдаю такой эффект, до последней строки все тип-топ, но после записи в UCSRC меняется состояние UBRRH, то есть становится UBRRH=UCSRC.
Стоит ли заморачиваться или оставить как есть?
Подскажите пишу прогу для меги8535. В передатчик загоняю:
clr tmp;
ldi temp, 0x19;
out UBRRH,tmp;
out UBRRL,temp;
ldi tmp,(1<<TXEN)|(1<<RXEN);
out UCSRB, tmp;
ldi tmp,(1<<TXC)|(1<<UDRE)
out UCSRA,tmp
ldi tmp, (1<<URSEL)|(2<<UPM0)|(1<<USBS)|(3<<UCSZ0)
out UCSRC, tmp;
При симуляции проекта, наблюдаю такой эффект, до последней строки все тип-топ, но после записи в UCSRC меняется состояние UBRRH, то есть становится UBRRH=UCSRC.
Стоит ли заморачиваться или оставить как есть?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
прочтите, наконец, даташит на МК!Meteor писал(а):после записи в UCSRC меняется состояние UBRRH, то есть становится UBRRH=UCSRC.
Стоит ли заморачиваться или оставить как есть?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Может кто знает
У меня AVR студия 4-14
при попытке прошить Тиньку 2313 с 8 мгц внутреннего генератора на 4 мгц улетает куда-то и после без внешнего квареца не восстанавливается.
Моть у кого такое было в чём промблема?
при попытке прошить Тиньку 2313 с 8 мгц внутреннего генератора на 4 мгц улетает куда-то и после без внешнего квареца не восстанавливается.
Моть у кого такое было в чём промблема?
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Доброго времени, всем!
Не совсем в тему, но всеже. Делаю вот такую программную "штуку" (см. фото) для сопоставления текста программ (через генерацию файлов PORTn.log) с "показаниями" осциллографа, в перспективе - работа с железом (на 32 канала). Сам пишу в студии 4.16. При симуляции передатчика (уарт) обратил внимание на то что студия меняет пин, но значение вывода порта остается без изменений (например на меге8535 PinD1 меняется, а PortD1=1). При этом железо работает как швейцарские часы.
У меня вопрос к тем кто пользуется еще старыми версиями студии.
Наблюдается ли этот эффект у Вас?
Очень хочется максимального правдоподобия.
Заранее благодарен.
PS. Если кто согласится могу предоставить на тест файл в асме, для получения от Вас файла PORTD.log.
Не совсем в тему, но всеже. Делаю вот такую программную "штуку" (см. фото) для сопоставления текста программ (через генерацию файлов PORTn.log) с "показаниями" осциллографа, в перспективе - работа с железом (на 32 канала). Сам пишу в студии 4.16. При симуляции передатчика (уарт) обратил внимание на то что студия меняет пин, но значение вывода порта остается без изменений (например на меге8535 PinD1 меняется, а PortD1=1). При этом железо работает как швейцарские часы.
У меня вопрос к тем кто пользуется еще старыми версиями студии.
Наблюдается ли этот эффект у Вас?
Очень хочется максимального правдоподобия.
Заранее благодарен.
PS. Если кто согласится могу предоставить на тест файл в асме, для получения от Вас файла PORTD.log.
- Вложения
-
- Analizator.jpg
- (179.79 КБ) 696 скачиваний
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
народ помогите, проблема толи в студии, толи в протеусе, студия 4.17 протеус 7.6 сп0 мк - Tiny2313, собственно проблема заключается в том, что либо протеус дизасемблит HEX файл студии не правильно (1 команда), либо студия генерит не верный код, вот скрины:
кто врёт? в протеусе устройство работает не верно, в студии глюков в работе устройства не нашёл
ЗЫ не смотрите на несколько строк BRNE это я их вписал для поиска нужного места в HEX файле
кто врёт? в протеусе устройство работает не верно, в студии глюков в работе устройства не нашёл
ЗЫ не смотрите на несколько строк BRNE это я их вписал для поиска нужного места в HEX файле