CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Спасибо за совет. Вечером протестирую!
Самое гениальное - всегда самое простое
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

Всем привет. За предыдущий совет спасибо! Помогло.
Возник вопрос по CVAVR и функции Sprintf: вместо значащих нулей перед десятичным числом выводит пробелы:

Код: Выделить всё

sprintf (lcd_buf,"%2d",R%100);


К примеру R у меня 1009. R%100 выдает 09, а sprintf выдает " 9". То есть все нули заменяет пробелами, хотя должна бы вывести нули. Как мне быть в этой ситуации?
Самое гениальное - всегда самое простое
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

%02d
Аватара пользователя
Volgol_555
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Пт сен 23, 2011 13:13:51
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Volgol_555 »

WiseLord писал(а):%02d

Спасибо. Помогло!
Самое гениальное - всегда самое простое
Igorek0071
Родился
Сообщения: 18
Зарегистрирован: Вс дек 15, 2013 19:01:26

Re: CodeVision AVR в вопросах и ответах

Сообщение Igorek0071 »

Мужики! Помогите! Начал изучать AVR программирование неделю назад, читал книги, сегодня решил взяться за практику.. Вообщем, написал код, а он при компиляции в CodeVision AVR выдает ошибку первой строки! Ошибок там нет! Я не знаю почему не компилируется! Пробовал разные версии программы, не помогает.. Вот код..

Код: Выделить всё

#include <mega8.h> 
#include <delay.h>
   void main(void)   
{
PORTB=0x00
DDRB=0x01   
     
   while (1)   
{
PORTB.0=1
delay_ms(200)
PORTB.0=0
delay_ms(200)         

};
};

Как устранить проблему? Не компилируется не при каких кодах! Всегда выдает эту ошибку!Благодарю!
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

Igorek0071 писал(а):Всегда выдает эту ошибку!
Какую - это? Где текст ошибки?
Igorek0071
Родился
Сообщения: 18
Зарегистрирован: Вс дек 15, 2013 19:01:26

Re: CodeVision AVR в вопросах и ответах

Сообщение Igorek0071 »

WiseLord писал(а):
Igorek0071 писал(а):Всегда выдает эту ошибку!
Какую - это? Где текст ошибки?

Самую первую строчку
Текст ошибки
Error: C:\Users\Àäìèíèñòðàòîð\Desktop\Ìèãà\123.c(2): can't open #include file: mega8.h
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: CodeVision AVR в вопросах и ответах

Сообщение Rtmip »

Похоже не может открыть файл mega8.h, потому что у вас русские буквы в пути к файлу.
Переустановите CVAVR так, чтобы не было русских букв и пробелов в папке установки.
Scorpio
Родился
Сообщения: 16
Зарегистрирован: Чт сен 30, 2010 20:13:04
Откуда: Нижний Новгород

Re: CodeVision AVR в вопросах и ответах

Сообщение Scorpio »

Пытаюсь написать программу для Mega8 но "забуксовал" в переходах между строк. Сразу скажу, опыт в программировании (и то на старых компах с DOS) есть только на уровне Qbasic (если программу писал на нем, то проблем не было, воспользовался бы оператором перехода GOTO на нужную строку)
Прилагаю блок-схему программы, которую пытаюсь написать и небольшой кусочек того на чем "забуксовал".
Просьба подскажите как эти переходы делать, или напишите этот небольшой кусочек программы, а я уж постараюсь сам дальше продолжить.
Вложения
Малый кусок.png
(4.85 КБ) 368 скачиваний
Блок схема.png
(15.54 КБ) 347 скачиваний
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение misterkuk »

Бывает частенько в симуляции прога перестает работать, при отладке видно что не везде присвоен адресс. Почему так бывает? Обычно решается полным сносом кода и добавлением частями.
Вложения
Безымянный.jpg
(85 КБ) 229 скачиваний
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение ARV »

так бывает потому, что написанный вами код компилятор считает избыточным: он умеет сделать то же самое меньшим количеством действий, вот и получается для некоторых ваших строк просто нет соответствующих машинных кодов. как правило такая ситуация возникает в 2-ух случаях: когда включен мощный режим оптимизации и когда программист сам не до конца понимает, что именно он такого наваял. а компилятор понимает и лишнее выкидывает :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение misterkuk »

ARV писал(а): как правило такая ситуация возникает в 2-ух случаях: когда включен мощный режим оптимизации и когда программист сам не до конца понимает, что именно он такого наваял. а компилятор понимает и лишнее выкидывает :)))

Спасибо за исчерпывающий ответ, буду коректировать программу.

........
И да, помогла оптимизация. Всё решилось.
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

Re: CodeVision AVR в вопросах и ответах

Сообщение prw07 »

Какой критерий выбора размера Data Stack Size ? По умолчанию стоит 32. Стоит ли его увеличивать, до какого значения, чем при этом руководствоваться? На что влияет слишком большое его значение?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Gudd-Head »

Стэк располагается в конце ОЗУ.
При вызове подпорграмм и прерываний в него заносится точка возврата (счётчик команд), сохраняется регистр статуса и прочие регистры, которые задействуются. Если одна подпрограмма будет вызывать другую, а та — третью, третья — четвёртую... То размер стэка может стать больше отведённых (32) байт, и начнёт налезать и затирать переменные, находящиеся в ОЗУ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

Re: CodeVision AVR в вопросах и ответах

Сообщение prw07 »

Но если мы сразу же увеличим стек, ну скажем до 200байт, то эти байты сразу же будут зарезервированы из ОЗУ? Т.о. мы уменьшим размер ОЗУ, но исключим затирание данных в ОЗУ ?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Gudd-Head »

Типа того. Если вы захотите больше переменных, компилятор ругнётся что места в ОЗУ нет — отдано под стек.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение ARV »

речь идет о стеке данных - там не будет адресов возврата. но в остальном верно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

Re: CodeVision AVR в вопросах и ответах

Сообщение prw07 »

1. При подключении LCD нигде в коде не определяется к какому порту какой вывод LCD подключается. Каким образом МК "знает" на каких пинах у него висит LCD ?
2. Стоит ли определять выводы порта, на котором висит LCD, как выходы/входы? Или просто из кода выкинуть лишнее (выводы к которым LCD подключен)?
3. Можно ли использовать эти выводы для чего-то другого в периоды времени, когда LCD не используется?
Прицепил на вывод данных LCD светодиод. Мыргает нормально, данные на LCD выводит. (в Протеусе). Похоже, что можно....
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

1. Во первых. "знает" не МК, а компилятор. Во вторых. если в коде нигде ноги не определены, каким образом компилятор о них узнает ? Да и каким образом Вы вообще будете обращаться к этим ногам, не зная их ?
2. Странный вопрос. Естественно, ногам, по которым Вы собрались манипулировать дисплеем, нужно определять направление. А как ещё иначе ?
3. Можно.
Ответить

Вернуться в «AVR»