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

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


Ganster89

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

Всех приветствую. Я начинающий в разработке Pic контроллеров. Решил пробовать программировать на языке си так как он мне немножко знаком. Пользуюсь компилятором HI-TECH C. Исходя из результатов поиска в сети,  нашёл себе подходящую информацию для начинающего PDF документ автор он же и создатель сайта http://www.labkit .ru. Так всё ясно излагает, только я немножко не понял один момент, когда он имел ввиду - Составление проекта из нескольких файлов исходников, у меня как он пишет получилось создать 2 отдельных  файла в одном проекте, только почему то не могу скомпилировать их вместе. Будьте добры подскажите пожалуйста  чего я не догнал?

ВОт Первый исходник  исходник который который нужно записать в главный файл :

  #include <pic.h>
//pic16f628a
/* тестовая программа № 2 из самомучителя*/
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN &
WDTDIS);
#define knopka RB4 // кнопка
#define diod RA0 // светодиод
void podgot (void); // подготовка МК
void main (void)
{
podgot();
diod = knopka;
}
// === подготовка МК
void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b00010000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 0; // подтягивающие R (0-вкл, 1-выкл)
}

Вот второй

#include <pic.h>
// === сопоставление сигнальных линий
#define out1 RA6 // выход 1
#define out2 RA7 // выход 2
// === используемые функции
void pauza (void); // функция паузы
// === функция мигалки
void migalka (void){ // начало функции
out1 = 1; // установили ВЛУ
out2 = 0; // установили НЛУ
pauza (); // функция паузы
out1 = 1-out1; // инвертировать
out2 = 1-out2; // инвертировать
pauza (); // функция паузы
} // конец функции
// === функция паузы
void pauza (void){ // начало функции
unsigned int tmp; // локальная переменная
tmp = 0xffff; // в tmp поместить некое максимальное число
while (tmp-->0); /* выполнять декрементирование tmp
до тех пор, т.е. ПОКА tmp больше нуля */
}// конец функции

2.png

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

уберите перенос строки, должно быть так

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

а в последней строке файлов должен быть перенос строки

а лучше выложите весь проект (у меня всё скомпилировалось, правда в HI-TECH Software PICC-18 с закомментированной строкой "__CONFIG..." )

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 час назад, dm37 сказал:

уберите перенос строки, должно быть так

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

а в последней строке файлов должен быть перенос строки

а лучше выложите весь проект (у меня всё скомпилировалось, правда в HI-TECH Software PICC-18 с закомментированной строкой "__CONFIG..." )

Я убрал перенос строки к сожалению не помогло. Удивился бы очень. да кристал правильный выбрал при создании проекта визард, и ещё теперь уточнил в Configure->Select Device там тоже он выбран. Да и ещё перед этим проектом что я выложил были другие которые компилировались без проблем.

Вот такой например всё ок:

#include //pic16f628a /* тестовая программа № 2 из самомучителя*/

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

#define knopka RB4 // кнопка

#define diod RA0 // светодиод

void podgot (void); // подготовка МК

void main (void)

{ podgot();

diod = knopka; } // === подготовка МК

void podgot (void)

{ TRISA = 0b00000000; // направление работы ножек порта А

TRISB = 0b00010000; // направление работы ножек порта В

CMCON = 0x07; // отключение компараторов

PORTA = 0; // очищаем порт А

PORTB = 0; // очищаем порт Б

RBPU = 0; // подтягивающие R (0-вкл, 1-выкл) }  

Я думал я весь проект вам выложил а что ещё нужно подскажите? если это поможет продвижению дела

5.png

1 час назад, Стальной сказал:

Как конкретно звучит ошибка?

Не понимаю, зачем в проекте второй файл, как он связан с основным?

Ошибка  в output показана, больше ничего неизвестно. Вот что имел ввиду автор : 

1) в разных файлах удобнее группировать функции по решению определенных задач (индикация, опрос клавиатуры, логика работы устройства, работа с EEPROM, управление другими устройствами, протоколыI2C, 1- Wire, RC5 и т.п.);

2) с каждым файлом визуальнее проще и нагляднее работать да и код не упирается «простынёй» в пол;

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

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

2 часа назад, dm37 сказал:

уберите перенос строки, должно быть так

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

а в последней строке файлов должен быть перенос строки

а лучше выложите весь проект (у меня всё скомпилировалось, правда в HI-TECH Software PICC-18 с закомментированной строкой "__CONFIG..." )

Прошу прощения, вот так должно это выглядеть, но сути не меняет ошибка так и остаётся, просто я менял подставлял, да и напутал и получилось так что на месте главного исходника я кинул код програм тест 2  который кстати один успешно компилировался. Сори.

7.png 

Мда а присмотревшись код программы в главном файле и есть программа которая отдельно и компилировалась, это я просто уже сейчас присмотрелся. Но то что оно не работает не понятно! Вот так тебе и 2 исходника :)

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

5 часов назад, Ganster89 сказал:

Исходя из результатов поиска в сети,  нашёл себе подходящую информацию

попробуйте начать с нормальных сайтов

http://www.pic24.ru/doku.php/osa/articles/modules

http://www.pic24.ru/doku.php/osa/articles/encoding_without_errors

и попутно это должно стать настольной книгой

и 99% вопросов отпадут сами собой...

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

@Ganster89 выложите всю папку с файлами проекта (архив), может что с настройками не так.

попробуйте закомментировать строку "__CONFIG..." и скомпилировать, как писал выше, у меня всё скомпилировалось

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

Я всегда главный файл называю main.c и как сделал ТС ни разу не пробовал. Может компилятор не может понять чего и как собрать?

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

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

11 час назад, dm37 сказал:

@Ganster89 выложите всю папку с файлами проекта (архив), может что с настройками не так.

попробуйте закомментировать строку "__CONFIG..." и скомпилировать, как писал выше, у меня всё скомпилировалось

 

21 час назад, Ganster89 сказал:

Я убрал перенос строки к сожалению не помогло. Удивился бы очень. да кристал правильный выбрал при создании проекта визард, и ещё теперь уточнил в Configure->Select Device там тоже он выбран. Да и ещё перед этим проектом что я выложил были другие которые компилировались без проблем.

Вот такой например всё ок:

#include //pic16f628a /* тестовая программа № 2 из самомучителя*/

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

#define knopka RB4 // кнопка

#define diod RA0 // светодиод

void podgot (void); // подготовка МК

void main (void)

{ podgot();

diod = knopka; } // === подготовка МК

void podgot (void)

{ TRISA = 0b00000000; // направление работы ножек порта А

TRISB = 0b00010000; // направление работы ножек порта В

CMCON = 0x07; // отключение компараторов

PORTA = 0; // очищаем порт А

PORTB = 0; // очищаем порт Б

RBPU = 0; // подтягивающие R (0-вкл, 1-выкл) }  

Я думал я весь проект вам выложил а что ещё нужно подскажите? если это поможет продвижению дела

5.png

Ошибка  в output показана, больше ничего неизвестно. Вот что имел ввиду автор : 

1) в разных файлах удобнее группировать функции по решению определенных задач (индикация, опрос клавиатуры, логика работы устройства, работа с EEPROM, управление другими устройствами, протоколыI2C, 1- Wire, RC5 и т.п.);

2) с каждым файлом визуальнее проще и нагляднее работать да и код не упирается «простынёй» в пол;

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

Я закоментировал но что то нехочет, я правильно понял?  //__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS); просто закоментировать?

Я скину 2 папки microchip и HI-TECH Software 

 

HI-TECH Software.rar

Microchip.rar

Написано что максимально можно скинуть до 10 метров а скинуло всё :) хм, это хорошо

20 часов назад, IMXO сказал:

попробуйте начать с нормальных сайтов

http://www.pic24.ru/doku.php/osa/articles/modules

http://www.pic24.ru/doku.php/osa/articles/encoding_without_errors

и попутно это должно стать настольной книгой

и 99% вопросов отпадут сами собой...

Спасибо  за дополнительную инфу

10 часов назад, Vovka сказал:

Я всегда главный файл называю main.c и как сделал ТС ни разу не пробовал. Может компилятор не может понять чего и как собрать?

main это правильно :) здесь пока хочется видеть что оно компилируется 

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

@Ganster89 ну не нужно было всё что у вас есть нам отправлять, нужна была только папка \Microchip\Project\

попробуйте так:

Project->Select Language Toolsuite->HI-TECH Universal Toolsuite

в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe

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

11 час назад, Vovka сказал:

Я всегда главный файл называю main.c и как сделал ТС ни разу не пробовал. Может компилятор не может понять чего и как собрать?

да пофиг как назван главный файл, я ТСу привел ссылку как делаются модули , вместо того что бы потратить 10минут на прочтение и написать правильно модуль, времени ТС хернёй занимается

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

У меня все собралось как только я в проекте выбрал компилятор

 

 

2.jpg

На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие

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

 @Ganster89  всё таки проверьте ещё раз символ завершения строки в конце файлов. У файла Untitledd.c не корректное завершение строки. Похоже при копировании с сайта не то вставилось в файл. Удалите несколько последних символов в конце файлов (обоих) и нажмите Enter.

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

На сайте у автора похоже ошибка, надо
- папку HI-TECH Software скопировать в C:\Program Files
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\resources\PICC9.50PL2_REG.reg
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH PICC Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE

При этом варианте компилятор постоянно ругается на использование устаревших опций компилятора, не обращайте внимания (можете потом разобраться и задать опции вручную Project->Build Option->Project->PICC Compiler-> Use Alternate Settings).

а можно (версия PRO)
- запустить HCPICP-pro-9.60PL5.exe
- выбрать 45 дней бесплатного использования (либо искать сломаную)
- запустить MPLABConfig.exe из какого-нибудь места, например из \HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe вашего архива
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH Universal Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe

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

В 04.01.2017 в 09:18, dm37 сказал:

 @Ganster89  всё таки проверьте ещё раз символ завершения строки в конце файлов. У файла Untitledd.c не корректное завершение строки. Похоже при копировании с сайта не то вставилось в файл. Удалите несколько последних символов в конце файлов (обоих) и нажмите Enter.

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

На сайте у автора похоже ошибка, надо
- папку HI-TECH Software скопировать в C:\Program Files
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\resources\PICC9.50PL2_REG.reg
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH PICC Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE

При этом варианте компилятор постоянно ругается на использование устаревших опций компилятора, не обращайте внимания (можете потом разобраться и задать опции вручную Project->Build Option->Project->PICC Compiler-> Use Alternate Settings).

а можно (версия PRO)
- запустить HCPICP-pro-9.60PL5.exe
- выбрать 45 дней бесплатного использования (либо искать сломаную)
- запустить MPLABConfig.exe из какого-нибудь места, например из \HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe вашего архива
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH Universal Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe

Это что получается у меня получилось ?:)) Я вобщем и пробывал установить вашу 9.60 версию что то там тоже не пошло из за кривых рук :) потом всё удалил заново 9.50 установил и всё порядочек, что то  я там мудрувал непонятно вобщем. Я потом пошол методом - первый то у меня сам по себе компилировался и я решил что сейчас полностью буду исследовать второй файл а оно бац и заработало, видно запущено 2 проэкта test1,test2. А теперь мне интересно а почему у Vovka Скомпилировало более обширную информацию чем у меня ? А у меня просто BUILD SUCCEEDED: Thu Jan 05 21:42:34 2017 ? 

10.png

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

В 04.01.2017 в 09:18, dm37 сказал:

 @Ganster89  всё таки проверьте ещё раз символ завершения строки в конце файлов. У файла Untitledd.c не корректное завершение строки. Похоже при копировании с сайта не то вставилось в файл. Удалите несколько последних символов в конце файлов (обоих) и нажмите Enter.

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

На сайте у автора похоже ошибка, надо
- папку HI-TECH Software скопировать в C:\Program Files
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\resources\PICC9.50PL2_REG.reg
- запустить C:\Program Files\HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH PICC Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE

При этом варианте компилятор постоянно ругается на использование устаревших опций компилятора, не обращайте внимания (можете потом разобраться и задать опции вручную Project->Build Option->Project->PICC Compiler-> Use Alternate Settings).

а можно (версия PRO)
- запустить HCPICP-pro-9.60PL5.exe
- выбрать 45 дней бесплатного использования (либо искать сломаную)
- запустить MPLABConfig.exe из какого-нибудь места, например из \HI-TECH Software\PICC\9.50\bin\MPLABConfig.exe вашего архива
- выбрать компилятор Project->Select Language Toolsuite->HI-TECH Universal Toolsuite, в поле Location должно быть C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe

Это что получается у меня получилось ?:)) Я вобщем и пробывал установить вашу 9.60 версию что то там тоже не пошло из за кривых рук :) потом всё удалил заново 9.50 установил и всё порядочек, что то  я там мудрувал непонятно вобщем. Я потом пошол методом - первый то у меня сам по себе компилировался и я решил что сейчас полностью буду исследовать второй файл а оно бац и заработало, видно запущено 2 проэкта test1,test2. А теперь мне интересно а почему у Vovka Скомпилировало более обширную информацию чем у меня ? А у меня просто BUILD SUCCEEDED: Thu Jan 05 21:42:34 2017 ? 

Я вас понял разный то разный, так значит у меня все равно что то не так? просто у него чёткий результат а у меня просто BUILD SUCCEEDED: Thu Jan 05 21:42:34 2017. А если я другой код напишу всегда будет BUILD SUCCEEDED: Thu Jan 05 21:42:34 2017 ? Я вот за это

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

Советую поставить XC8 компилятор. Для начала, хватит халявной версии. Потом, если нужно будет, "купите" полную. Отличаются только оптимизацией.

По сабжу. Ответ от IMXO с сылкой - самый верный. Но вы, действительно, вместо того, чтобы потратить 10-20 минут на чтение, занимаетесь фигнёй, стараясь что-либо сделать методом тыка и не понимая что делаете. 

 

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

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

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

    • Да хоть еще 10 карт приобретите, если не понимаете что для мощного потока нужен совсем другой стандарт  32 гиговая карта за 1к ?  Вы реально знаете толк в извращениях, за такие деньги минимум люди берут на 64 гига и как раз нужного стандарта но вы этого не понимаете и поэтому всё стоит на месте.   Вам для информации  FHD прут на ура.
    • Таким образом, таблицу надо скорректировать.
    • если забыть про радиатор) 
    • Доброго времени суток. Столкнулся с проблемой: не получается скачать пакет STM32F4 (пробовал и другие, ошибка та же) при нажатии кнопки install появляется ошибка (первый скриншот). Такое ощущение, что CubeIDE не может подключиться к сети, постоянно появляется окно как на втором скиншоте. Подскажите как можно исправить проблему?
    • Я вас конечно уважаю, но хамить мне не надо. Все УНЧ что я создавал сначала до идеала дорабатывались в симуляторе, и только потом собирались. В 98% случаев они сразу работали корректно. Были исключения, но там проблемы были в разводке платы и деталях а не симуляторе. Тот же мой VAC 2.0 ПОЛНОСТЬЮ совпал по результатам тестов в железе с результатами тестов в симуляторе.  Эта схема это простейший ВК в AB классе к которому подключили ОУ для усиления напряжения. Нет ни единой причины этой схеме работать некорректно или плохо. Единственные 2 варианта почему будет работать плохо/не работать, это либо накосячено при сборке или детали обвязки неисправны, либо сам ОУ палëный. Качество работы этой схемы очень сильно будет зависеть от качества ОУ и симулятор тут не при чëм. И опять же, этой схеме уже больше 30 лет и еë собирали сотни человек! Если собрано на нормальных деталях, эта схема будет работать как надо и выдаст качественный звук. 
    • У многих в голове "битые ячейки". Ясно сказано, что работает видео в помещении, опробовано десятки раз. Весь снятый материал в лесу и в поле пошёл в корзину и также опробовано не один раз. Приобретена новая карта за 1К. Видео ещё хуже, чем с тех "чудо флешек". https://disk.yandex.ru/i/Ww52T3leg99VxA
    • Сорри, вопрос звучит не однозначно. Меня интересовало - нужен ли вынос наружу головок или не нужен, а не их расположение на передней панели относительно друг друга.
×
×
  • Создать...