|
Ошибка IAR или чтото еще? |
|
|
|
 |
Ответов
|
Dec 21 2006, 17:09
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Oldring @ Dec 21 2006, 01:02)  Только этот вариант все равно не должен компилироваться. Теперь компилируйте, проверяйте, что он все еще не работает - и вываливайте дизассемблер. Все, заработало!!! Ошибка была не "компиляторовская". Просто, из-за относительной сложности вычислений для 8-и битника в "главной" процедуре, вызывающей CorrectTime использовался стек данных, а так как его глубина у меня по умолчанию была определена как 0х20 то стек данных затирался... Странным образом программа хромала дальше. Мало того, данные с ADC и GPIO, работающие тоже, кстати, по прерываниям не портились и выдавались хосту нормально, портились только частотомеры... Увеличил стек до 0х40 - все ОК! Я так понимаю по умолчанию глубина стоит 0х20 - это именно для прерываний? То бишь, что бы можно было, при случае, сохранить все 32 регистра? Вот я его еще в два раза и увеличил...Хотя со всеми вычислениями в программе я уже справился, но мало ли. Тем не менее, всем огромное спасибо, особо отмечу идейную помощь singlskv, (кстати, не впервой)особый респект Вам!
--------------------
|
|
|
|
|
Dec 21 2006, 17:39
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(prottoss @ Dec 21 2006, 17:09)  Все, заработало!!! Увеличил стек до 0х40 - все ОК! Я так понимаю по умолчанию глубина стоит 0х20 - это именно для прерываний? То бишь, что бы можно было, при случае, сохранить все 32 регистра? Поздравляю. А глубина стека по умолчанию ничего не значит, так как кроме прерываний существуют вложенные функции, printfы и прочие мелкие радости ЯВУ. Как вообще можно оставлять 0x20, не представляю.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 21 2006, 18:04
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Dog Pawlowa @ Dec 21 2006, 21:39)  Цитата(prottoss @ Dec 21 2006, 17:09)  Все, заработало!!! Увеличил стек до 0х40 - все ОК! Я так понимаю по умолчанию глубина стоит 0х20 - это именно для прерываний? То бишь, что бы можно было, при случае, сохранить все 32 регистра?
Поздравляю. А глубина стека по умолчанию ничего не значит, так как кроме прерываний существуют вложенные функции, printfы и прочие мелкие радости ЯВУ. Как вообще можно оставлять 0x20, не представляю. А вот представьте, мил человек, никада в своей работе с АВРами не пользовался printf и прочими радостями ЯВУ (честно говря, я даже не знаю как это расшифровывается). Пользуюсь, обычно парой светодиодов, USART, ну и, естественно, отладчиком.
--------------------
|
|
|
|
|
Dec 21 2006, 18:44
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(prottoss @ Dec 21 2006, 18:04)  А вот представьте, мил человек, никада в своей работе с АВРами не пользовался printf и прочими радостями ЯВУ (честно говря, я даже не знаю как это расшифровывается). Пользуюсь, обычно парой светодиодов, USART, ну и, естественно, отладчиком. ЯВУ - это язык высокого уровня. "С", например. А так выглядит средний проект. Точнее, одна из его частей. Пары светодиодов, увы, бывает недостаточно...
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 21 2006, 19:02
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Dog Pawlowa @ Dec 21 2006, 22:44)  Цитата(prottoss @ Dec 21 2006, 18:04)  А вот представьте, мил человек, никада в своей работе с АВРами не пользовался printf и прочими радостями ЯВУ (честно говря, я даже не знаю как это расшифровывается). Пользуюсь, обычно парой светодиодов, USART, ну и, естественно, отладчиком.
ЯВУ - это язык высокого уровня. "С", например. А так выглядит средний проект. Точнее, одна из его частей. Пары светодиодов, увы, бывает недостаточно...
Да хоть тыщща файлов в проекте - каждый модуль, ИМХО, должен быть законченной частью программы, и уметь функционировать отдельно...
--------------------
|
|
|
|
|
Dec 21 2006, 20:33
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(prottoss @ Dec 21 2006, 19:02)  Да хоть тыщща файлов в проекте - каждый модуль, ИМХО, должен быть законченной частью программы, и уметь функционировать отдельно... В приведенной вами цитате объем стека обведен вообще-то. Насчет того, что вы printf'ом не пользуетесь и насколько помнится и JTAG'ом тоже.. Дык это сугубо ваше дело. Несомневаюсь, что некоторым удобнее отлаживать программы на бумаге или с помощью одного светодиода, что в итоге приводит к таким вот глюкам как рассматриваемые в этой ветке. А на что грешить с такой отладкой - на компилятор естессно, это все он - редиска - неправильно считает, не то сохраняет и т.п...
|
|
|
|
|
Dec 22 2006, 14:57
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(defunct @ Dec 22 2006, 00:33)  Цитата(prottoss @ Dec 21 2006, 19:02)  Да хоть тыщща файлов в проекте - каждый модуль, ИМХО, должен быть законченной частью программы, и уметь функционировать отдельно...
В приведенной вами цитате объем стека обведен вообще-то. Насчет того, что вы printf'ом не пользуетесь и насколько помнится и JTAG'ом тоже.. Дык это сугубо ваше дело. Несомневаюсь, что некоторым удобнее отлаживать программы на бумаге или с помощью одного светодиода, что в итоге приводит к таким вот глюкам как рассматриваемые в этой ветке. А на что грешить с такой отладкой - на компилятор естессно, это все он - редиска - неправильно считает, не то сохраняет и т.п... Вообще то, ветку с жалобой на компилятор открыл НЕ Я, это первое. А раз уж у Вас такая хорошая память , наверное заметили, что ветки со своими проблемами я ооччччень редко организую. А свой код выложил так сказать в поддержку всеми забытого Sergio66. Потому как, кроме малоумного совета расставить правильно скобки, ни хто толком не ему совета дельног не дал. Может быть отчасти из-за того, что он сам на эту ветку забил - похоже нашел проблему, и похоже она была не по теме ветки))) Я же сам свой код опубликовал, я же его и решил. Второе - к компилятору и тем паче к тем, кто его создал отношусь с уважением, так как до такого самому додуматься умишки не хватает. ПО поводу отладки JTAGом - ДЛЯ AVR, как я уже говорил выше, я им не пользуюсь. Да, мне хватает, USART пары светодиодов и и отладчика в AVRStudio. Что такое JTAG - я знаю очень хорошо. И знаю, что средство это очень ограниченное и специфическое и уж тем более не панацея от всех проблем. Если в голове масла нет - JTAG не поможет никогда))) Цитата(singlskv @ Dec 22 2006, 02:14)  Цитата(WHALE @ Dec 21 2006, 22:05)  Цитата В начале программы забивайте весь отведенный стек какой-нибудь сигнатурой ну а дальше контролите сколько затерли, или ручками приотладке или програмно(как удобнее)
зачем весь стек-то забивать?В CV есть удобная фича-ставится в старт-апе маркер конца стека и в случае глюков я его первым делом проверяю.Если на месте,родимый,значит дело не в обьеме стека. при отладке удобнее весь стек, сразу же видно, даже визуально чего там с ним творится ну и еще можно написать код который будет в реалтайме в глобальной переменной показывать максимальный размер стека за время работы, для отладки опять же очень удобно Вот это можно взять на вооружение! Цитата(Serg79 @ Dec 22 2006, 17:29)  Вот и Я о том же. С момента изобретения языка 'C' в 1970 году прошло уже столько времени, что его синтаксический анализатор стал отшлифованным как брилиант. И грешить на него, покрайней мере, просто глупо. Ну, во первых, приятно слышать здоровый русский язык  А по поводу printf, использую его только в под х86 - удобная штука для форматированного вывода, но с того же 1970, скорее всего, такая же охочая до ресурсов как и универсальная - худа без добра не бывает и наоборот... Я в качестве printf использую собственные функции вывода строк в USART - у меня их, обычно, две - для чисел и для собсвенно строковых сообщений
--------------------
|
|
|
|
|
Dec 22 2006, 16:20
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(prottoss @ Dec 22 2006, 14:57)  Что такое JTAG - я знаю очень хорошо. И знаю, что средство это очень ограниченное и специфическое и уж тем более не панацея от всех проблем. Нельзя очень хорошо знать то, что никогда не пробовали на практике. Через JTAG (AVR) осуществляется полный контроль над МК. В любой момент можно остановить проц, посмотреть состояние памяти, стек-поинтеры, состояние портов, периферии и т.д. Можно прочитать полный дамп памяти, изменить состояние узлов, переменных и запустить проц опять.. Более того, через JTAG можно отлаживать даже программы с включенным WDT. При остановке проца остановится и WDT. Различные Speep режимы и т.д. и т.п. Работает все это дело прямо из-под любимого вами IAR'a. Т.е. в IAR'е просто собирается проект, одной кнопкой запускается сразу в девайсе. Если сравнивать AVR'овский JTAG с ARM'овскими, дык AVR'овский на 10 порядков лучше по стабильности. Плюс 4 точки останова это не две... Хватает на все про все. Ограничение же только одно JTAG для AVR не совместим больше ни с чем. Вы ставите в противовес JTAG'у Симулятор - это как секс по телефону. Цитата Если в голове масла нет - JTAG не поможет никогда))) тут уж ничего не поможет. ;>
|
|
|
|
|
Dec 22 2006, 17:02
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
2 defunct Цитата Вы ставите в противовес JTAG'у Симулятор - это как секс по телефону. Сималятор и JTAG, ИМХО, это две разные вещи. Симулятор нужен для отладки кусков програмы даже без железа. А JTAG это инструмент отладки готового устройства. Умение использовать их в своей работе, в нужный момент, это и есть професионализм "програмиста-элекроника" к коим мы причисляем себя  .
Сообщение отредактировал Wild007 - Dec 22 2006, 17:03
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
Сообщений в этой теме
Sergio66 Ошибка IAR или чтото еще? Dec 18 2006, 12:47 aesok Показывайте код. Dec 18 2006, 13:06 Sergio66 Цитата(aesok @ Dec 18 2006, 13:06) Показы... Dec 18 2006, 13:15  _Bill Цитата(Sergio66 @ Dec 18 2006, 13:15) Вот... Dec 18 2006, 14:48   Sergio66 Цитата(_Bill @ Dec 18 2006, 14:48) Цитата... Dec 18 2006, 15:01    aesok Опишите проблемму полностью:
Как переменые и стру... Dec 18 2006, 15:18    Dog Pawlowa Цитата(Sergio66 @ Dec 18 2006, 15:01) А ч... Dec 18 2006, 15:28     Sergio66 Цитата(Dog Pawlowa @ Dec 18 2006, 15:28) ... Dec 18 2006, 15:44     prottoss Цитата(Dog Pawlowa @ Dec 18 2006, 19:28) ... Dec 18 2006, 15:45      Dog Pawlowa Цитата(prottoss @ Dec 18 2006, 15:45) Ска... Dec 18 2006, 16:46       prottoss Цитата(Dog Pawlowa @ Dec 18 2006, 20:46) ... Dec 18 2006, 17:08        Dog Pawlowa Цитата(prottoss @ Dec 18 2006, 17:08) Цит... Dec 18 2006, 18:48         Oldring Цитата(Dog Pawlowa @ Dec 18 2006, 18:48) ... Dec 18 2006, 19:08          singlskv Цитата(Oldring @ Dec 18 2006, 19:08) Дело... Dec 18 2006, 19:31          _Bill Цитата(Oldring @ Dec 18 2006, 19:08) Цита... Dec 20 2006, 15:06           Oldring Цитата(_Bill @ Dec 20 2006, 15:06) Код b ... Dec 20 2006, 16:30   Oldring Цитата(_Bill @ Dec 18 2006, 14:48) Ну, та... Dec 18 2006, 17:27 singlskv Цитата(Sergio66 @ Dec 18 2006, 12:47) Сто... Dec 18 2006, 16:11 Oldring Ответ прост. До тех пор, пока результат вычисления... Dec 18 2006, 19:38 singlskv Цитата(Oldring @ Dec 18 2006, 19:38) Отве... Dec 18 2006, 19:53 Dog Pawlowa Цитата(Oldring @ Dec 18 2006, 19:38) Отве... Dec 18 2006, 20:31  Oldring Цитата(Dog Pawlowa @ Dec 18 2006, 20:23) ... Dec 18 2006, 20:37  prottoss Цитата(Dog Pawlowa @ Dec 19 2006, 00:31) ... Dec 18 2006, 20:43   Oldring Цитата(prottoss @ Dec 18 2006, 20:43) Выр... Dec 18 2006, 21:14   singlskv Цитата(prottoss @ Dec 18 2006, 20:43) Выр... Dec 18 2006, 21:18   Dog Pawlowa Цитата(prottoss @ Dec 18 2006, 20:43) Вы ... Dec 19 2006, 09:49    Sergio66 [/quote]
Дуру? Отчасти
А на конкретный вопрос -... Dec 19 2006, 11:57     Oldring Цитата(Sergio66 @ Dec 19 2006, 11:57) Рез... Dec 19 2006, 14:44      Sergio66 Цитата(Oldring @ Dec 19 2006, 15:44) Цита... Dec 19 2006, 15:15       Dog Pawlowa Цитата(Sergio66 @ Dec 19 2006, 15:15) Да ... Dec 19 2006, 19:10     Dog Pawlowa Цитата(Sergio66 @ Dec 19 2006, 11:57) Был... Dec 19 2006, 19:24 Oldring Не совсем.
1. Включение оптимизации самой по себе... Dec 18 2006, 20:08 GDI Была у меня похожая проблема, правда, у меня порти... Dec 19 2006, 13:32 singlskv автар
продемонстрируйте свое искуство, так сказать... Dec 19 2006, 19:18 Oldring int расширяется до long до умножения. Потом должна... Dec 19 2006, 19:50 Sergio66 Цитата(Oldring @ Dec 19 2006, 19:50) int ... Dec 20 2006, 13:33  Oldring Цитата(Sergio66 @ Dec 20 2006, 13:33) 1. ... Dec 20 2006, 14:13 Serg79 Sergio66 Ты сдесь воду то не баламуть а приведи но... Dec 20 2006, 15:22 prottoss Пока Sergio66 молчит, задам я свой вопрос, потому ... Dec 20 2006, 16:15 prottoss Мда... Умные речи о значимости скобок не помогли..... Dec 20 2006, 17:32 Dog Pawlowa Цитата(prottoss @ Dec 20 2006, 17:32) Мда... Dec 20 2006, 17:54  prottoss Цитата(Dog Pawlowa @ Dec 20 2006, 21:54) ... Dec 20 2006, 18:05   singlskv Цитата(prottoss @ Dec 20 2006, 18:05) Я с... Dec 20 2006, 19:29    prottoss Цитата(singlskv @ Dec 20 2006, 23:29) Pro... Dec 20 2006, 20:04     Oldring Цитата(prottoss @ Dec 20 2006, 20:04) В п... Dec 20 2006, 20:09      prottoss Цитата(Oldring @ Dec 21 2006, 00:09) Ключ... Dec 20 2006, 20:23 Oldring Чтобы не напрягать попусту наши извилины скомпилир... Dec 20 2006, 18:57 prottoss Цитата(Oldring @ Dec 20 2006, 22:57) Чтоб... Dec 20 2006, 19:12 Oldring Замечательно, где еще прописывается значение Pulse... Dec 20 2006, 19:19 prottoss Цитата(Oldring @ Dec 20 2006, 23:19) Заме... Dec 20 2006, 19:26 Oldring Я конечно имел в виду дизассемблер, в котором изме... Dec 20 2006, 19:28 Oldring Да, не забудьте убедиться, что функция после преры... Dec 20 2006, 19:34 Oldring Пожалуйста, приведите два варианта кода отдельно -... Dec 20 2006, 20:28 prottoss Цитата(Oldring @ Dec 21 2006, 00:28) Пожа... Dec 20 2006, 20:43 Oldring Ну так а когда в нерабочем варианте вызывается фун... Dec 20 2006, 20:45 prottoss Цитата(Oldring @ Dec 21 2006, 00:45) Ну т... Dec 20 2006, 20:53       Serg79 Цитата(defunct @ Dec 21 2006, 20:33) Насч... Dec 22 2006, 13:29         prottoss Цитата(defunct @ Dec 22 2006, 20:20) Цита... Dec 22 2006, 17:05          defunct Цитата(prottoss @ Dec 22 2006, 17:05) Чит... Dec 22 2006, 17:25  singlskv Цитата(prottoss @ Dec 21 2006, 17:09) Уве... Dec 21 2006, 19:47 WHALE [/quote]
В начале программы забивайте весь отведен... Dec 21 2006, 22:05 singlskv Цитата(WHALE @ Dec 21 2006, 22:05) Цитата... Dec 21 2006, 22:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|