Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

В чём разница в программировании под PIC16 и PIC24 на Си?

Пт июл 20, 2012 16:01:28

Хочу сделать тембрблок для усилка, нашёл очень годный проект, который можно взять за основу, на этом сайте с кодом на Си под PIC16F628. В программе в принципе разобрался более-менее. До этого все свои проекты на PIC16Fxxx и PIC18fxxx прогал на PicBasicPro, а вот сейчас после курса Си в универе захотелось перейти на этот язык полностью.

Скажите пожалуйста, какие трудности могут возникнуть при партировании этого проекта на PIC24 ? Ну разобраться с портами ввода-вывода это понятно, а вот в плане серьёзных поправок в коде, есть-ли какие-нибудь подводные камни?

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 16:11:56

Дык... для вас там всё будет "подводные камни"...
Но самое основное... не все PIC24 имеют EEPROM...

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 16:23:45

Ну это понятно что контроллер необходимо брать с EEPROM, а вот какие ещё могут быть проблемы? Ознакомился со статьёй - http://www.gamma.spb.ru/articles.php?i=45 вроде "глобально" различий нет. Я честно говоря не особо понимаю какие могут возникнуть проблемы при переносе на PIC24, ибо это не знакомое для меня семейство контроллеров, а в программировании на Си под микроконтроллеры у меня нет опыта, об этом я уже писал... Можно чуть по подробнее о "подводных камнях" :)

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 16:31:36

Вы предлагаете угадать... где и на чём вы завтра споткнётесь??? :))
Странная постановка вопроса...

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 16:37:25

Ну Вам наверное, как более опытному Си программисту наверняка очевидны моменты, из-за которых данный проект возможно не запустится на PIC24 :) Я же не прошу переписать за меня этот проект, а просто намекните с чем могут возникнуть проблемы, тогда буду хоть знать в каком направлении гуглить :wink:

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 17:06:54

Для справки:
В качестве жертвы выбрал микроконтроллер PIC24F16KA102T-I/SO

Сейчас покачаю компилятор под Mplab X и буду пробовать.

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 17:12:38

Mplab X я бы не советовал...
И в вашем проекте... исходник какой-то кривой... разбираться лень...

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 17:14:28

А в какой IDE лучше компилировать, что посоветуете под C30 ?

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Пт июл 20, 2012 20:02:00

Ну вот, поставил компилятор, создал проект и попытался впихнуть код в первозданном виде.

Изображение

Как я понимаю, компилятору не нравится как я обращаюсь к eeprom и ещё он не понимает что такое INTF, INTE, RBIE, INTCON, CMCON, INTEDG, GIE и.т.д.

Возникли следующие ошибки:

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `D:/proj/test.X'
make -f nbproject/Makefile-default.mk dist/default/production/test.X.production.hex
make[2]: Entering directory `D:/proj/test.X'
main.c:15: error: syntax error before numeric constant
main.c:15: warning: data definition has no type or storage class
main.c:16: error: syntax error before numeric constant
main.c:16: warning: data definition has no type or storage class
main.c:17: error: syntax error before numeric constant
main.c:17: warning: data definition has no type or storage class
main.c:18: error: syntax error before numeric constant
main.c:18: warning: data definition has no type or storage class
main.c:20: error: syntax error before numeric constant
main.c:20: warning: data definition has no type or storage class
main.c:21: error: syntax error before numeric constant
main.c:21: warning: data definition has no type or storage class
main.c:22: error: syntax error before numeric constant
main.c:22: warning: data definition has no type or storage class
main.c:23: error: syntax error before numeric constant
main.c:23: warning: data definition has no type or storage class
main.c:25: error: syntax error before numeric constant
main.c:25: warning: data definition has no type or storage class
main.c:26: error: syntax error before numeric constant
main.c:26: warning: data definition has no type or storage class
main.c:27: error: syntax error before numeric constant
main.c:27: warning: data definition has no type or storage class
main.c:28: error: syntax error before numeric constant
main.c:28: warning: data definition has no type or storage class
main.c:30: error: syntax error before numeric constant
main.c:30: warning: data definition has no type or storage class
main.c:31: error: syntax error before numeric constant
main.c:31: warning: data definition has no type or storage class
main.c:32: error: syntax error before 'N'
main.c:32: warning: data definition has no type or storage class
main.c:33: error: syntax error before numeric constant
main.c:33: warning: data definition has no type or storage class
main.c:42: error: syntax error before 'stb'
main.c:42: warning: data definition has no type or storage class
main.c:56: error: syntax error before 'void'
main.c: In function 'xxx':
main.c:58: error: 'INTF' undeclared (first use in this function)
main.c:58: error: (Each undeclared identifier is reported only once
main.c:58: error: for each function it appears in.)
main.c:58: error: 'INTE' undeclared (first use in this function)
main.c:60: error: 'RBIF' undeclared (first use in this function)
main.c:60: error: 'RBIE' undeclared (first use in this function)
main.c: In function 'main':
main.c:72: error: 'GIE' undeclared (first use in this function)
main.c:75: error: 'RA4' undeclared (first use in this function)
main.c:66: warning: return type of 'main' is not 'int'
main.c: In function 'podgot':
main.c:86: error: 'INTCON' undeclared (first use in this function)
main.c:89: error: 'CMCON' undeclared (first use in this function)
main.c:91: error: 'RBPU' undeclared (first use in this function)
main.c:93: error: 'INTE' undeclared (first use in this function)
main.c:94: error: 'INTF' undeclared (first use in this function)
main.c:95: error: 'INTEDG' undeclared (first use in this function)
main.c:97: error: 'RBIE' undeclared (first use in this function)
main.c:98: error: 'RBIF' undeclared (first use in this function)
main.c: In function 'key':
main.c:215: error: 'GIE' undeclared (first use in this function)
main.c:216: error: 'RA0' undeclared (first use in this function)
main.c:217: error: 'RB7' undeclared (first use in this function)
main.c:218: error: 'RB6' undeclared (first use in this function)
main.c:219: error: 'RB5' undeclared (first use in this function)
main.c:221: error: 'RA7' undeclared (first use in this function)
main.c:226: error: 'RA6' undeclared (first use in this function)
main.c: At top level:
main.c:245: error: syntax error before 'mut'
main.c:245: warning: data definition has no type or storage class
main.c:246: error: syntax error before 'stb'
main.c:246: warning: data definition has no type or storage class
main.c: In function 'i2c_str':
main.c:280: error: 'RB1' undeclared (first use in this function)
main.c: In function 'i2c_sto':
main.c:283: error: 'RB1' undeclared (first use in this function)
main.c:283: error: 'RB2' undeclared (first use in this function)
main.c: At top level:
main.c:287: error: syntax error before 'mut'
main.c:287: warning: data definition has no type or storage class
main.c:289: error: syntax error before 'stb'
main.c:289: warning: data definition has no type or storage class
main.c: In function 'ir_int':
main.c:304: error: 'GIE' undeclared (first use in this function)
main.c: At top level:
main.c:325: error: syntax error before 'enc_napr'
main.c:325: warning: data definition has no type or storage class
main.c:326: error: syntax error before 'enc_act'
main.c:326: warning: data definition has no type or storage class
main.c: In function 'enc_int':
main.c:330: error: 'GIE' undeclared (first use in this function)
"C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24F16KA102 -MMD -MF build/default/production/main.o.d -o build/default/production/main.o main.c
make[2]: Leaving directory `D:/proj/test.X'
make[1]: Leaving directory `D:/proj/test.X'
make[2]: *** [build/default/production/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 1s)


Что я делаю не так?) Или компилятор не совместим с набором команд используемых в программе...
Вложения
test.X.rar
исходник в mplab x
(10.1 KiB) Скачиваний: 244

Re: В чём разница в программировании под PIC16 и PIC24 на Си

Сб июл 21, 2012 15:08:57

Все.
Простое копирование текста, предназначенного для 16 пика, не даст ничего хорошего для 24.
Читать здесь
http://www.e-reading.org.ua/book.php?book=131468
http://electronix.ru/forum/index.php?sh ... ntry620555
даташит на свой контроллер

Не юзайте пока идех , берите из архива микрочипа мплаб стандартную версию не старше 8.46
Почему - в ее состав (в тулзы) входит visual initializer - архиполезная штуковина, которую они выбросили в старших версиях. Особенно удобно пользоваться пин селектом - переназначение ножек входных и выходных сигналов. Он генерит в проект пару файлов, которые я потом благополучно выбрасываю, переписывая в инициализацию оттуда нужный код.
Ответить