Перейти к содержанию

Помогите пожалуйста в написании исходного текста...


Гость химик

Рекомендуемые сообщения

Наконец то появилось свободное время, написал еще кусок программы. Опять, ошибка в функции Viev_time&term.

Теоретически программа должна уже показывать время и температуру, а также реагировать на пульт. В конце недели должен прийти комплект деталей и паяльник для паяльной станции. Хочу собрать её дома, а то моим паяльником корпус МЕГИ16 можно и поплавить. А как только будет готова плата моего проекта, то можно будет пробовать что получилось с прошивкой.

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 72
  • Создана
  • Последний ответ
Наконец то появилось свободное время, написал еще кусок программы. Опять, ошибка в функции Viev_time&term.

Теоретически программа должна уже показывать время и температуру, а также реагировать на пульт. В конце недели должен прийти комплект деталей и паяльник для паяльной станции. Хочу собрать её дома, а то моим паяльником корпус МЕГИ16 можно и поплавить. А как только будет готова плата моего проекта, то можно будет пробовать что получилось с прошивкой.

Сергей, могу ошибатся но вроде бы в имени функции нельзя использовать символ &

void Viev_time&term (void){

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

И я не совсем понимаю смысл этих строк

key=KEY_INPUT1;

, вернее мне кажется что они используются не так как должны, по смыслу в key сохраняется значение содержащееся в KEY_INPUT1, если так и было задумано, тогда их нужно сначала объявить, и key и все остальные что будут сохранятся в key. Хотя меня терзают смутные сомнения (С) что по логике задумывалось не так, но может я ошибаюсь.

Ссылка на комментарий
Поделиться на другие сайты

Сергей, могу ошибатся но вроде бы в имени функции нельзя использовать символ &
void Viev_time&term (void){

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

И я не совсем понимаю смысл этих строк

key=KEY_INPUT1;

, вернее мне кажется что они используются не так как должны, по смыслу в key сохраняется значение содержащееся в KEY_INPUT1, если так и было задумано, тогда их нужно сначала объявить, и key и все остальные что будут сохранятся в key. Хотя меня терзают смутные сомнения (С) что по логике задумывалось не так, но может я ошибаюсь.

Изменил символ & на _ и сразу

выскачили все строчки где есть KEY. Кажется ты мне писал что лучше сделать типа так

key=1;
key=2;
и т.д.

,

 

А если я в хидере проекта напишу

#define KEY_INPUT5_1 1
#define KEY_INPUT1 2 
#define KEY_INPUT2 3 
#define KEY_INPUT3 4 
#define KEY_STANDBY 6

,

 

И еще, пересмотрел я исходник с которого взял пример управления. Там после цикла while есть такая строка

key=key_adc

Получается что опять же мы помещаем значение key_adc в переменную key. Но нигде я не нашел объявление этой переменной.

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

Изменил символ & на _ и сразу

выскачили все строчки где есть KEY. Кажется ты мне писал что лучше сделать типа так

key=1;
key=2;
и т.д.

,

 

А если я в хидере проекта напишу

#define KEY_INPUT5_1 1
#define KEY_INPUT1 2 
#define KEY_INPUT2 3 
#define KEY_INPUT3 4 
#define KEY_STANDBY 6

,

Все правильно, ошибки не всегда отображаются все, что есть, бывает встает на первой ошибке, а остальные не показывает, пока ее не исправишь.

Теперь по переменным, key по любому нужно объявлять.

А вот это

#define KEY_INPUT1 2 
#define KEY_INPUT2 3 
#define KEY_INPUT3 4 
#define KEY_STANDBY 6

собственно чем это является? Судя по логике это используется практически как текстовая строка, чисто чтобы знать что она означает, если так то зря это, пусть функция возвращает цифры, гемороя меньше будет, их там не так и много чтоб самому запутатся, а в программе будет правильнее. Это конечно если все так как я описал, елси же в этих значениях что то планируется хранить тогда другое дело.

 

И еще, пересмотрел я исходник с которого взял пример управления. Там после цикла while есть такая строка

key=key_adc

Получается что опять же мы помещаем значение key_adc в переменную key. Но нигде я не нашел объявление этой переменной.

Врядли можно по одной строчке судить о переменных, чтобы понять о чем речь нужно видеть весь исходник, если в проекте присутствует несколько файлов, то эта строка может быть в одном, а переменная объявлена в другом. Вобщем без всего исходного проекта судить о чем то сложно, но переменные перед использованием должны быть объявлены, либо локально в функции, либо глобально.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
В общем без всего исходного проекта судить о чем то сложно, но переменные перед использованием должны быть объявлены, либо локально в функции, либо глобально.

 

2 Химик: И тщательно следить за областью видимости, и учитывать возможность статичности для локальных переменных.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Ну вот, ошибок вроде бы нету, только пара вонингов. Прошил устройство, а оно ни как не отреагировало. Фьюзы пометил: sut1=0

boden=0

bodlevel=0

Правильно ли я установил их?

post-2789-1287393591_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Ну вот, ошибок вроде бы нету, только пара вонингов. Прошил устройство, а оно ни как не отреагировало. Фьюзы пометил: sut1=0

boden=0

bodlevel=0

Правильно ли я установил их?

Этот вопрос обычно актуален когда делаешь чью то конструкцию...

А в протеусе проверял?

 

Добавлено после раздумий:

Все в прерываниях это наверное круто, но основного цикла программы что совсем нет? И чего собственно ты ждешь от устройства?

Ссылка на комментарий
Поделиться на другие сайты

Этот вопрос обычно актуален когда делаешь чью то конструкцию...

А в протеусе проверял?

 

Добавлено после раздумий:

Все в прерываниях это наверное круто, но основного цикла программы что совсем нет? И чего собственно ты ждешь от устройства?

Не, в протеусе не проверял. Я им пользоваться не умею.

На счет основного цикла, Сергей, можеш вкратце объяснить что там нужно писать после while (1) ?

Ссылка на комментарий
Поделиться на другие сайты

Не, в протеусе не проверял. Я им пользоваться не умею.

Протеусом все же желательно научится пользоватся, он конечно не панацея и не все нужные компоненты в нем есть, но по началу, для отладки программ самое то, чтобы хотябы убедится что программа работает. И начинать отладку желательно сразу, т.е. например, есть в схеме дисплей, создаем функцию вывода на него и сразу же проверяем в протеусе работоспособность, дальше есть энкодер, создаем функцию для его обработки и опять же сразу проверяем. А вот так вот написать всю программу сразу и чтоб с первого раза все заработало... За такими советами не ко мне, я так еще не умею.

На счет основного цикла, Сергей, можеш вкратце объяснить что там нужно писать после while (1) ?

Ну вообще то не после, а внутри while (1), а что там, основная часть программы, которая крутится в бесконечном цикле, реагирует на какие то события, в зависимости от этих событий запускает соответствующие функции или что то выполняет. Обработка событий по прерываниям это конечно хорошо, но пихать все в прерывания и таймеры мне кажется не разумно.

Ссылка на комментарий
Поделиться на другие сайты

Товарищи, ответьте пожалуйста - если после инициализации стоит функция

lcd_clear();

значит экран должен очистится полюбому?

И еще один вопрос - если добавлен хидер

lcd.h, то влияет ли инициализация порта на

работу дисплея?

Пробовал по разному достучаться до lcd, но он постоянно высвечивает закрашеный первый ряд.

Ссылка на комментарий
Поделиться на другие сайты

Товарищи, ответьте пожалуйста - если после инициализации стоит функция

lcd_clear();

значит экран должен очистится полюбому?

И еще один вопрос - если добавлен хидер

lcd.h, то влияет ли инициализация порта на

работу дисплея?

Пробовал по разному достучаться до lcd, но он постоянно высвечивает закрашеный первый ряд.

Ну вообще после инициализации дисплея он и так должен быть "чистым"

Теперь, если это дисплей на контроллере HD44780 и программа пишется в CodeVisionAVR, и к тому же если это первая программа, не надо ничего мудрить, в CodeVisionAVR есть генератор начального кода и подключение этого дисплея там поддерживается, достаточно указать на каком порту будет дисплей и количество строк, все остальное генератор сделает сам, и настроит порты МК и добавит lcd.h, и сделает это правильно и без ошибок.

Что тут можно посоветовать, создай новый проект, добавь в него через генератор дисплей и выведи одну строку. И когда она заработает можно будет делать дальше.

 

Добавлено после раздумий:

А вообще если добавить в твоем проекте после инициализации дисплея добавить следующие строки

lcd_gotoxy(0,0);		  
lcd_putsf("0123456789012345");						 
lcd_putsf("0123456789012345");

то в протеусе они отображаются

Изменено пользователем hsl
Ссылка на комментарий
Поделиться на другие сайты

Ну вообще после инициализации дисплея он и так должен быть "чистым"

Теперь, если это дисплей на контроллере HD44780 и программа пишется в CodeVisionAVR, и к тому же если это первая программа, не надо ничего мудрить, в CodeVisionAVR есть генератор начального кода и подключение этого дисплея там поддерживается, достаточно указать на каком порту будет дисплей и количество строк, все остальное генератор сделает сам, и настроит порты МК и добавит lcd.h, и сделает это правильно и без ошибок.

Что тут можно посоветовать, создай новый проект, добавь в него через генератор дисплей и выведи одну строку. И когда она заработает можно будет делать дальше.

 

Добавлено после раздумий:

А вообще если добавить в твоем проекте после инициализации дисплея добавить следующие строки

lcd_gotoxy(0,0);		  
lcd_putsf("0123456789012345");						 
lcd_putsf("0123456789012345");

то в протеусе они отображаются

В том и дело, что добавил, только в место цифр стоят буквы, а он гад так и не меняет ни че. Хотя я снял его с уже проверенного устройства. Там он работал.

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...