| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
WinAver C, указатель стека
20.03.2011, 15:30
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: WinAver C, указатель стека
По моему, не в обиду будь сказано, ... "Указатели границ флеша"-это вообще что-то новое...
|
Цитата:
|
|
сделал вывод значения регистра MCUCSR=0x02.
|
Вывод? Читаем даташит и делаем вывод - если после ресета там 2, то это означает, что причиной сброса был собственно сам reset, на соответствующей ноге.
|
Код:
|
• Bit 3 – WDRF: Watchdog Reset Flag
This bit is set if a Watchdog Reset occurs. The bit is reset by a Power-on Reset, or by
writing a logic zero to the flag.
• Bit 2 – BORF: Brown-out Reset Flag
This bit is set if a Brown-out Reset occurs. The bit is reset by a Power-on Reset, or by
writing a logic zero to the flag.
• Bit 1 – EXTRF: External Reset Flag
This bit is set if an External Reset occurs. The bit is reset by a Power-on Reset, or by
writing a logic zero to the flag.
• Bit 0 – PORF: Power-on Reset Flag
This bit is set if a Power-on Reset occurs. The bit is reset only by writing a logic zero to
the flag. |
Ну а читать все 22 файла, думаю, не понадобится. Да и критика текста - что в этом плохого? Хотите научиться ездить на велике - надо потерпеть побитые коленки
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
20.03.2011, 15:49
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
А MCUCSR это не показатель. Рестарт может быть и чисто программный типа rjmp 0 - вести себя программа будет как будто был сброс, но в MCUCSR ничего при этом не изменится. Да и внешний сброс в той же студии вообще никак не получить. Если глюк стабильно проявляется и в симуляторах, то найти его будет совсем не сложно - точки останова расставить и постепенно сужать поиск.
|
|
|
|
20.03.2011, 16:03
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
поиск уже сужен. уже понятно, что дело в размере стэка. понятно, что стэк, вмеско одного килобайта, настроен на 512 байт.
Вопрос в том, как это поправить? как указать принудительно компилятору, что стэк выше нужно расположить?
__________________
|
|
|
|
20.03.2011, 16:20
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от svd71
|
|
поиск уже сужен. уже понятно, что дело в размере стэка. понятно, что стэк, вмеско одного килобайта, настроен на 512 байт.
|
Вы мейкфайлом собираете или из под студии? Тип кристалла правильно задан, не М8515/М8535?
|
|
|
|
20.03.2011, 16:32
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от kison
|
|
Вы мейкфайлом собираете или из под студии? Тип кристалла правильно задан, не М8515/М8535?
|
мекфайлом. в студии только elf открываю.
|
Код:
|
avr-gcc -g3 -gdwarf-2 -mmcu=atmega8 -minit-stack=0x45F -msize -DF_CPU=1000000UL -O1 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunct
ion-sections -Wall -Wextra -Wstrict-prototypes -Wundef -Wsign-compare -Wa,-adhlns=./cbdlight/dimmer.lst -std=gnu99 -O1 -c cbdlight/dimmer.c
cc1.exe: error: unrecognized command line option "-minit-stack=0x45F"
make.EXE: *** [dimmer.o] Error 1 |
-msize только недавно прикрутил. без нее те же рога. Не хотелось бы в инициализации, кодом менять. Потому как при смене кристалла на другой проблема будет мигрировать.
__________________
|
|
|
|
20.03.2011, 16:51
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
То, что проект вовсе не собирается не смущает?
cc1.exe: error: unrecognized command line option "-minit-stack=0x45F"
make.EXE: *** [dimmer.o] Error 1
Какая версия компилятора? Потому как у меня -minit-stack нормально проходит.
Нафига два раза О1 вставлять? Какой то кривой у Вас мейкфайл.
Кстати -minit-stack у Вас в опциях компилятора. Ему этот ключ нафиг не нужен, вот и не собирает ничего. Это линкеру уже надо. Или не надо  , он и сам по типу кристалла вполне разберется. Так что удаляйте -minit-stack нафиг.
Последний раз редактировалось kison; 20.03.2011 в 16:56.
|
|
|
|
20.03.2011, 17:57
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
уже смущает, но именно иза-за строчки изменения стэка.
если ее убрать, то компилируется
|
Цитата:
|
avr-gcc.EXE (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
и по типу кристалла он тоже не хочет разбираться. Он видимо тупо ставит минимальный из 8ми-килобитных.
__________________
|
|
|
|
20.03.2011, 18:10
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от svd71
|
|
и по типу кристалла он тоже не хочет разбираться. Он видимо тупо ставит минимальный из 8ми-килобитных.
|
Прикрепите мейкфайл. То, что выше было относится к компиляции. Там ошибка и до сборки дело не дошло. Или лог сборки тогда, когда проект собирается, т.е. сборка без левого ключа, который все равно компилятор и не должен понимать.
|
|
|
|
20.03.2011, 18:36
|
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: WinAver C, указатель стека
есть. вложил
__________________
|
|
|
|
20.03.2011, 18:37
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: WinAver C, указатель стека
Сообщение от kison
|
|
А MCUCSR это не показатель. Рестарт может быть и чисто программный типа rjmp 0 - вести себя программа будет как будто был сброс, но в MCUCSR ничего при этом не изменится.
|
Ну почему же не показатель? Достаточно после проверки очистить MCUCSR. Тогда при rjmp 0 там и будет 0 - признак "программного рестарта".
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Указатель поворотов на PIC
|
Nash |
Микроконтроллеры, АЦП, память и т.д |
52 |
20.04.2010 16:24 |
Часовой пояс GMT +4, время: 00:33.
|
|