Страница 1 из 1

В железе не работает программа на СИ

Добавлено: Ср ноя 09, 2011 21:57:47
380v
Знающие! Подскажите пожалуйста, я начинающий в этом деле, пишу программу на си (просто-так для обучения), компилирую, загоняю её в протеус, все в порядке все ок, пошиваю PIC и никаких признаков жизни. Дальше пишу пограмму на пик-бейсике с теми-же функциями по той-же схеме, компилирую, загоняю в протеус все ок, и в железе все ок, все работает. Не пойму в чем дело, может у меня с настройками Hi-Tech что-то не то. И еще - программа написанная на си в ic-prog выглядит примерно так - в начале присутствует код в три строки, дальше пусто (3FFF), и в самом конце остальная часть программы. Что я делаю не так? помогите. Вот код:

Код: Выделить всё

#include <htc.h>
__CONFIG (MCLREN & XT & WDTDIS);
#include "bits_macros.h"

void main (void)
{
CMCON = 0x07;
TRISB = 4;
PORTB=1;
while(1)
   {
   if (BitIsClear(PORTB,2))
      {
      while(BitIsClear(PORTB,2));
      InvBit(PORTB,3);
      };
   };
};


вот еще один:

Код: Выделить всё

#include <htc.h>
#include "stdio.h"
#include "delay.h"
#include "lcd.h"

#define plus_f RB0
#define minus_f RB1
#define shag_p RB2
#define enable RA2

char lcd_buffer[8];
unsigned int freq;
unsigned char shag;

void spi (void)
{
      switch (shag)
      {
         case 1: enable=1; break;
         case 5: enable=0; break;
         case 10: enable=1; break;
         case 50: enable=0; break;
         case 100: enable=1; break;
      };
};

void vivod (void)
{
   if (freq<1000)
   {
   sprintf(lcd_buffer,"  %u%u%ukHz",freq/100,(freq%100)/10,(freq%100)%10);
   }
   else
      {
      if (freq<10000)
         {
         sprintf(lcd_buffer," %u%u%u%ukHz",freq/1000,(freq%1000)/100,((freq%1000)%100)/10,((freq%1000)%100)%10);
         }
         else
            {
            sprintf(lcd_buffer,"%u%u%u%u%ukHz",freq/10000,(freq%10000)/1000,((freq%10000)%1000)/100,(((freq%10000)%1000)%100)/10,(((freq%10000)%1000)%100)%10);
            };
      };
   lcd_goto(0x00);
   lcd_puts(lcd_buffer);

   if (shag<10)
   {
   sprintf(lcd_buffer,"    %ukHz",shag);
   }
   else
   {
      if (shag<100)
      {
      sprintf(lcd_buffer,"   %u%ukHz",shag/10,shag%10);
      }
      else
      {
         sprintf(lcd_buffer,"  %u%u%ukHz",shag/100,(shag%100)/10,(shag%100)%10);
      };
   };
   lcd_goto(0x40);
   lcd_puts(lcd_buffer);
spi();   
};

void frequency (void)
{
   if (minus_f==0)
   {
      freq=freq-shag;
      if (freq<500){freq=30000;};
      DelayMs(150);
      vivod();
   };
   
   if (plus_f==0)
   {
      freq=freq+shag;
      if (freq>30000){freq=500;};
      DelayMs(150);
      vivod();
   };
};

void step (void)
{
      if (shag_p==0)
   {
      while(shag_p==0);
      switch (shag)
      {
         case 1: shag=5; break;
         case 5: shag=10; break;
         case 10: shag=50; break;
         case 50: shag=100; break;
         case 100: shag=1; break;
      };
   vivod();
   };
};

void main (void)
{
   freq=7000;
   shag=1;
   lcd_init();
   vivod();
 while(1)
   {
   frequency();
   step();

   };
};


контроллер - PIC16F628a

Re: В железе не работает программа на СИ

Добавлено: Ср ноя 09, 2011 22:19:38
urry
мало информации.
если интуичить - xt фьюз - это резонатор с частотой до 4 мегагерц, 4 и выше - только hs, поменяйте.

Re: В железе не работает программа на СИ

Добавлено: Чт ноя 10, 2011 21:51:59
380v
попробовал HS ничего не помогло, пробовал кварц на 2 МГц при XT ничего не помогло, пробовал внутренний RC тоже-самое. хотя я ничего не пойму в даташите написано что XT это кварц на 4 МГц, а HS 8 и выше, тем более что в пик-бейсике работает, и это не первая моя программа написанная на пик-бейсике и все работали с битом конфигурации XT с кварцем на 4 МГц. все эксперементы я провожу на контроллере PIC16F628a в MPLAB v.8.40, HI-TECH 9.65 PRO. я подозреваю что я что-то не так настроил или установил (касательно HI_TECH), может мне кто-нибудь опишет подробную настройку HI-TECH. в пик-бейсике я уже написал не одну программу и все они работали как в протеусе так и в железе, программатор экстрапик - прошивший уже не один десяток контроллеров через ic-prog и все они работали. а тут я не знаю что делать, посматривал другие форумы и ничего для себя не нашел, пробовал загонять чужие HEX файлы написанные в HI_TECH и все они тоже работали, а что у меня не так не понимаю :cry:

Re: В железе не работает программа на СИ

Добавлено: Чт ноя 10, 2011 22:56:06
urry
забыть про про версию хайтека и работать на стд ?
Несколько лет назад я попробовал перейти на про - больше не хочу. Хотя на такой элементарной проге даже про работать должен. Никаких особых нюансов нет.
И, - слово эксперимент пишется через и...

Re: В железе не работает программа на СИ

Добавлено: Сб ноя 12, 2011 15:09:21
380v
пробовал ставить стд ничего не помогло. сейчас поставил микроси и все работает, и я доволен, на микроси и останусь :) . хай-тек снёс :evil: .

Re: В железе не работает программа на СИ

Добавлено: Сб ноя 12, 2011 16:07:37
dosikus
380v писал(а):пробовал ставить стд ничего не помогло. сейчас поставил микроси и все работает, и я доволен, на микроси и останусь :) . хай-тек снёс :evil: .

Весьма печальный факт . Да и опыта вам это не прибавит , при первой же неудаче бросить...

Re: В железе не работает программа на СИ

Добавлено: Сб ноя 12, 2011 17:30:09
380v
а сколько-же можно мучаться? уже столько сайтов перелопатил, и ни у кого такой проблемы не было, и никто не может толком ничего рассказать и объяснить, хотя-бы порядок установки и настройки. я наверняка что-то делаю не так (ведь у других работает), а что не так не знаю. сколько не читал все очень просто. установил и все. а у меня какие-то бока, и спросить не у кого.

Re: В железе не работает программа на СИ

Добавлено: Сб ноя 12, 2011 17:40:42
dosikus
Для начала, вы не тот форум выбрали ...
http://www.microchip.su/forumdisplay.php?f=14

Re: В железе не работает программа на СИ

Добавлено: Сб ноя 12, 2011 23:56:38
urry

Код: Выделить всё

а сколько-же можно мучаться? уже столько сайтов перелопатил, и ни у кого такой проблемы не было, и никто не может толком ничего рассказать и объяснить, хотя-бы порядок установки и настройки. я наверняка что-то делаю не так (ведь у других работает), а что не так не знаю. сколько не читал все очень просто. установил и все. а у меня какие-то бока, и спросить не у кого.

выложите тот проект, который не идет, причем полностью.
(с) Чудес не бывает.
Свободу выбора никто не отнимает, за хайтек обидно. Кто-то прочитает этот пост и решит, что заморачиваться с хайтеком незачем. А это не так.

Re: В железе не работает программа на СИ

Добавлено: Вс ноя 13, 2011 16:19:19
380v
Решил опять поставить хайтек. установил откомпилировал в очередной раз свой проект, как и раньше он в протеусе работает. программирую пик, и случилось чудо, оно работает, и я счастлив :)) . только я так и не понял, что же было раньше, почему он раньше не работал. вот мой проект полностью:

Re: В железе не работает программа на СИ

Добавлено: Вс ноя 13, 2011 16:39:29
380v
попробую еще прикрутить энкодер и лм7000, думаю что теперь у меня должно все получиться. и еще меня мучает вопрос. почему программа в контроллере располагается таким интересным образом - почти вся программа в самом конце, а не в начале памяти?