Страница 336 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 30, 2015 07:41:42
Volgol_555
Спасибо за совет. Вечером протестирую!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб апр 04, 2015 17:18:17
Volgol_555
Всем привет. За предыдущий совет спасибо! Помогло.
Возник вопрос по CVAVR и функции Sprintf: вместо значащих нулей перед десятичным числом выводит пробелы:
К примеру R у меня 1009. R%100 выдает 09, а sprintf выдает " 9". То есть все нули заменяет пробелами, хотя должна бы вывести нули. Как мне быть в этой ситуации?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб апр 04, 2015 23:03:00
WiseLord
%02d
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс апр 05, 2015 10:24:28
Volgol_555
WiseLord писал(а):%02d
Спасибо. Помогло!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 06, 2015 20:55:06
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)
};
};
Как устранить проблему? Не компилируется не при каких кодах! Всегда выдает эту ошибку!Благодарю!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 06, 2015 21:31:40
WiseLord
Igorek0071 писал(а):Всегда выдает эту ошибку!
Какую - это? Где текст ошибки?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 06, 2015 21:54:03
Igorek0071
WiseLord писал(а):Igorek0071 писал(а):Всегда выдает эту ошибку!
Какую - это? Где текст ошибки?
Самую первую строчку
Текст ошибки
Error: C:\Users\Àäìèíèñòðàòîð\Desktop\Ìèãà\123.c(2): can't open #include file: mega8.h
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 00:38:19
Rtmip
Похоже не может открыть файл mega8.h, потому что у вас русские буквы в пути к файлу.
Переустановите CVAVR так, чтобы не было русских букв и пробелов в папке установки.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 15:49:02
Scorpio
Пытаюсь написать программу для Mega8 но "забуксовал" в переходах между строк. Сразу скажу, опыт в программировании (и то на старых компах с DOS) есть только на уровне Qbasic (если программу писал на нем, то проблем не было, воспользовался бы оператором перехода GOTO на нужную строку)
Прилагаю блок-схему программы, которую пытаюсь написать и небольшой кусочек того на чем "забуксовал".
Просьба подскажите как эти переходы делать, или напишите этот небольшой кусочек программы, а я уж постараюсь сам дальше продолжить.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 16:30:34
Аlex
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 16:34:13
misterkuk
Бывает частенько в симуляции прога перестает работать, при отладке видно что не везде присвоен адресс. Почему так бывает? Обычно решается полным сносом кода и добавлением частями.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 18:40:07
ARV
так бывает потому, что написанный вами код компилятор считает избыточным: он умеет сделать то же самое меньшим количеством действий, вот и получается для некоторых ваших строк просто нет соответствующих машинных кодов. как правило такая ситуация возникает в 2-ух случаях: когда включен мощный режим оптимизации и когда программист сам не до конца понимает, что именно он такого наваял. а компилятор понимает и лишнее выкидывает

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 07, 2015 21:19:22
misterkuk
ARV писал(а): как правило такая ситуация возникает в 2-ух случаях: когда включен мощный режим оптимизации и когда программист сам не до конца понимает, что именно он такого наваял. а компилятор понимает и лишнее выкидывает

Спасибо за исчерпывающий ответ, буду коректировать программу.
........
И да, помогла оптимизация. Всё решилось.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт апр 14, 2015 22:53:53
prw07
Какой критерий выбора размера Data Stack Size ? По умолчанию стоит 32. Стоит ли его увеличивать, до какого значения, чем при этом руководствоваться? На что влияет слишком большое его значение?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср апр 15, 2015 08:56:11
Gudd-Head
Стэк располагается в конце ОЗУ.
При вызове подпорграмм и прерываний в него заносится точка возврата (счётчик команд), сохраняется регистр статуса и прочие регистры, которые задействуются. Если одна подпрограмма будет вызывать другую, а та — третью, третья — четвёртую... То размер стэка может стать больше отведённых (32) байт, и начнёт налезать и затирать переменные, находящиеся в ОЗУ.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср апр 15, 2015 09:50:58
prw07
Но если мы сразу же увеличим стек, ну скажем до 200байт, то эти байты сразу же будут зарезервированы из ОЗУ? Т.о. мы уменьшим размер ОЗУ, но исключим затирание данных в ОЗУ ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср апр 15, 2015 10:33:16
Gudd-Head
Типа того. Если вы захотите больше переменных, компилятор ругнётся что места в ОЗУ нет — отдано под стек.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср апр 15, 2015 12:49:34
ARV
речь идет о стеке данных - там не будет адресов возврата. но в остальном верно.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 20, 2015 21:54:43
prw07
1. При подключении LCD нигде в коде не определяется к какому порту какой вывод LCD подключается. Каким образом МК "знает" на каких пинах у него висит LCD ?
2. Стоит ли определять выводы порта, на котором висит LCD, как выходы/входы? Или просто из кода выкинуть лишнее (выводы к которым LCD подключен)?
3. Можно ли использовать эти выводы для чего-то другого в периоды времени, когда LCD не используется?
Прицепил на вывод данных LCD светодиод. Мыргает нормально, данные на LCD выводит. (в Протеусе). Похоже, что можно....
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 20, 2015 22:08:11
Аlex
1. Во первых. "знает" не МК, а компилятор. Во вторых. если в коде нигде ноги не определены, каким образом компилятор о них узнает ? Да и каким образом Вы вообще будете обращаться к этим ногам, не зная их ?
2. Странный вопрос. Естественно, ногам, по которым Вы собрались манипулировать дисплеем, нужно определять направление. А как ещё иначе ?
3. Можно.