Форум » Для начинающих. » не работает код на C » Ответить

не работает код на C

Che: Вот код. проще уже некуда. в Протеусе работает, а когда заливаю в пик то светодиод не горит. Использую MPlab с компилятором CCS, Программатор PICkit 2. Может надо какую нибудь волшебную строчку добавить, связанную с особенностью ccs компилятора? #include <16F628A.h> #byte PORTB=0x006 #byte TRISB= 0x086 #bit b3=PORTB.3 void main() { TRISB=0; PORTB=0; b3=1; }

Ответов - 43, стр: 1 2 All

Che: да забыл, pic16F628A

ОКТОГЕН: вообще всё неправильно, я конечно не знаю как там надо писать в ccs компиляторе но void main() { TRISB=0; PORTB=0; b3=1; } само по себе для контроллера неверное. надо так void main() { while(1) // тут располагается вся часть программы которая должна быть зациклена { TRISB=0; PORTB=0; b3=1; while(1) {} // здесь после перевода вывода b3 в высокое состояние программа и застрянет } }

Che: ну первоначально было так : void main() { while (1) { TRISB=0; PORTB=0; b3=1; while (1){ delay_ms(250); b3=0; delay_ms(250); b3=1; } } } это я упростил так как не работало. т.е. дело не в этом


ОКТОГЕН: угу а ну всё тогда ясно код компилируется нормально значит и работать должен нормально. а ошибка может быть вот в чём, в конфигурации контроллера, дело в том что компилятору всёравно какой вы выбрали режим тактирования мк, также как и протеусу всёравно, а вот в риале это важно, проверьте биты конфигурации.

Алексей: Для начала впишите биты конфигурации для контроллера и попробуйте вот так: [pre2]#include <16F628A.h> #byte PORTB=0x006 #byte TRISB= 0x086 #bit b3=PORTB.3 void main(){ TRISB=0; PORTB=0; b3=1; while (1){ } } [/pre2]

Che: что такое биты конфигурации я еще размыто понимаю, вот файл который автоматически сгенерился и в исполняемом файле инклуд на него. я так понимаю это биты конфигурации, но выставлены они немного не так как надо? #include <16F628A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //No brownout reset #FUSES MCLR //Master Clear pin enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #FUSES RESERVED //Used to set the reserved FUSE bits #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)

Che: И еще в MPlab я все время жму export hex file , и там стоит галочка congigurations bits, так что их за меня mplab ставит. Получается что он не верно их ставит что ли? и когда я писал на ассемблере и так же вставлял биты конфигурации то все работала

dosikus: Che пишет: И еще в MPlab я все время жму export hex file , То есть прошиваете вы не из MPLAB а из оболочки pickit2 ? И MCLR у вас без подтяжки ...

Che: То есть прошиваете вы не из MPLAB а из оболочки pickit2 ? Да И MCLR у вас без подтяжки ... Это что?

dosikus: Che пишет: Это что? Это элементарные грабли , на которые налетает практически каждый новичок. Вот так и появляются легенды- " В протеусе работает, а в живую нет" . Резистор на 10КОм с MCLR на VDD (+ питания). Или же прошить и запустить(Programmer-> Release from Reset) в MPLAB .

Che: что то я запутался. как его в mplab его запускать. Programmer-> Release from Rese ничего не поисходит

dosikus: Попытка телепатии №2 . Реальную не протеусовскую схему выложите . И если можно фото устройства с двух сторон...

dosikus: Che пишет: что то я запутался. как его в mplab его запускать. Programmer-> Release from Rese ничего не поисходит Ну а прошили в MPLAB ? Питание от pickit2 или внешнее ?

Che: или я не так что то делаю или не в это дело

Che: прошил. питание от pickit2

dosikus: Далее - есть генерация на кварце ? Если не можете проверить или нечем и не уверены в работоспособности кварца и обвязки , есть вариант перестроить на INTRC генератор.

Che: и если схема не верна, то как она работала когда я на ассемблере заливал код?

dosikus: Che пишет: то как она работала когда я на ассемблере заливал код? Это просмотрел , извиняюсь... Проект запакуйте и здесь выложите .

Che: http://www.fayloobmennik.net/1277924

Che: http://www.fayloobmennik.net/1277939 а это я попробовал на компиляторе Hi-tech похожий код. результат аналогично печальный

dosikus: На каком pin(ножке) проверяете и как ?

dosikus: Прошейте этим http://www.fayloobmennik.net/1278027

Che: ко всем выходам PortB у меня светодиоды подключены

dosikus: Затем этим http://www.fayloobmennik.net/1278037

Che: не работает

dosikus: Che пишет: И еще в MPlab я все время жму export hex file Это ни к чему . *.hex создается в папке проекта .

dosikus: Che пишет: не работает Значит фузы вы не прошиваете . Какое значение в оболочке pickit2 битов конфигурации при экспорте hex ? Извиняюсь - при импорте...

Che: не работают оба.

Che: http://clip2net.com/s/1oofQ

dosikus: Проект на асме выложите, который работает .

Che: http://www.fayloobmennik.net/1278145

dosikus: Пробуйте http://www.fayloobmennik.net/1278169

dosikus: И этот http://www.fayloobmennik.net/1278175

Che: первый не заработал , второй заработал.

dosikus: Che пишет: второй заработал. Вот теперь слушайте : Схема у вас НЕ РАБОЧАЯ . Во первых нет подтяжки на MCLR , во вторых кварц у вас НЕ РАБОЧИЙ. Фузы что в вашем асм проекте что в последней моей прошивке включают INTRC и отключают MCLR. Сеанс телепатии окончен... [pre2] #include <16F628A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //No brownout reset #FUSES NOMCLR //Master Clear pin enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #use delay(clock=4000000) #byte PORTB=0x06 #byte TRISB= 0x86 #bit b3=PORTB.3 void main() { TRISB=0; PORTB=0; while (1) { delay_ms(250); b3=1; delay_ms(250); b3=0; } } [/pre2]

dosikus: Модераторы , почистите пожалуйста эти гадания...

Che: ох, а как мне так сделать? включить INTRC и отключить MCLR на С?

Che: а вижу)) все ок. спасибо

dosikus: Che пишет: ох, а как мне так сделать? включить INTRC и отключить MCLR на С? См код выше . #FUSES INTRC #FUSES NOMCLR

dosikus: Che пишет: спасибо Не за что . Обращайтесь , пока в отпуске... Кстати кварц то какой ? Где брали ? Какие конденсаторы ?



полная версия страницы