25.08.2012, 18:39
|
#871
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от Yurkin2007
|
У Вас массивы sms и stroka перекрываются. Когда пишите в sms - затираете stroka...
|
А поподробнее? это как?
|
|
|
|
25.08.2012, 18:50
|
#872
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Это просто, Вы же написали объявление sms[] без указания его размера:
Код:
|
volatile char sms[];
char stroka[]={0xB1,0x9A,0xFF,0x2B,0x79,0xEE,0x31,0x46,0x32,0x2 E,0x83,0xDD,0x1B,0x0,0x0,
0x01,0x0,0x0,0x9A,0x7E,0x09,0x00,0x00,0x00,0x0C,0x 01,0x00,0x00,0x00,0x00,0xFE}; |
В .map-файл загляните:
Код:
|
File: D:\tmp\main.c
Global variables memory map:
Variable Address Size
len R3 1
sms A00h 1
stroka A01h 31 |
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 25.08.2012 в 18:59.
|
|
|
|
25.08.2012, 19:31
|
#873
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Надо убрать указание volatile, он то и мешает компилятору оптимизировать код.
|
|
|
|
25.08.2012, 19:51
|
#874
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от nonamedov
|
мешает компилятору оптимизировать код
|
В смысле, мешает заметить ошибку?
__________________
There's always more than one way to skin a cat.
|
|
|
|
25.08.2012, 20:14
|
#875
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от tempora
|
мешает заметить ошибку
|
Дело в том, что volatile может самым неожиданным способом воздействовать на поведение программы, как собственно и его отсутствие. Не представляю себе, как компилятор может так грубо ошибаться.
papa_n, а какой размер кучи указан в настройках компилятора, скорее всего Вам надо вместо массива использовать ссылки.
|
|
|
|
25.08.2012, 20:27
|
#876
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от nonamedov
|
volatile может самым неожиданным способом воздействовать на поведение программы
|
Насколько я помню, стандарт требует определения размера массива независимо от того, volatile он или нет. Просто, это определение м.б. дано в другом модуле, но оно должно быть. CodeVision совершенно волюнтаристски решил, что одного байта достаточно, и незачем беспокоить людей своими опасениями. ![Рот до ушей](images/smilies/icon_doushei.gif) Отличный компилятор, хорошо, что у меня его нет.
__________________
There's always more than one way to skin a cat.
|
|
|
|
25.08.2012, 20:45
|
#877
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от tempora
|
Отличный компилятор, хорошо, что у меня его нет.
|
Зря Вы так, только что проверил, как раз CVAVR указывает на эту ошибку и требует указать размер массива.
|
|
|
|
25.08.2012, 21:17
|
#878
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Тогда выходит, что ТС выложил проект, не указав, что он не компилится, что нехорошо. Я, за неимением CV, просто перетянул кусок кода в текущий проект и убедился в том, что он работает, знал бы, что CV ругается на ошибку, нафига бы я это делал?
papa_n, разрешите наши сомнения - у Вас CV выдает ошибку?
__________________
There's always more than one way to skin a cat.
|
|
|
|
26.08.2012, 00:55
|
#879
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от tempora
|
Тогда выходит, что ТС выложил проект, не указав, что он не компилится, что нехорошо. Я, за неимением CV, просто перетянул кусок кода в текущий проект и убедился в том, что он работает, знал бы, что CV ругается на ошибку, нафига бы я это делал? ![Рот до ушей](images/smilies/icon_doushei.gif)
papa_n, разрешите наши сомнения - у Вас CV выдает ошибку?
|
Я же не просто выложил проэкт, там есть все!! и прошивка тоже, да и я писал что проверяю это все на реальном кристале.
Но вот заглянув в map файл я понял что не так!
И самое обидное что Ошибки то и нет(((
Завтра попробую, но думаю все получится, просто надо сначало обьявить инициализированые масивы, а потом оставить место пустому, или задать для него размер, с запасом!!! Завтра проверю) Должу результат)
|
|
|
|
26.08.2012, 01:25
|
#880
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
В моей практике была пара случаев, когда индекс убегал на пределы массива, и программа начинала фигачить по близлежащим объявленным переменным, изменяя их содержимое. С тех пор, если вдруг ни с того, ни с сего изменяется содержимое какой-то переменной само по себе, первое подозрение - на соседние массивы, и на несанкционированную запись ...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:20.
|
|