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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 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
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

мало информации.
если интуичить - xt фьюз - это резонатор с частотой до 4 мегагерц, 4 и выше - только hs, поменяйте.
Контактная информация:
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 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:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

забыть про про версию хайтека и работать на стд ?
Несколько лет назад я попробовал перейти на про - больше не хочу. Хотя на такой элементарной проге даже про работать должен. Никаких особых нюансов нет.
И, - слово эксперимент пишется через и...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 380v »

пробовал ставить стд ничего не помогло. сейчас поставил микроси и все работает, и я доволен, на микроси и останусь :) . хай-тек снёс :evil: .
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

380v писал(а):пробовал ставить стд ничего не помогло. сейчас поставил микроси и все работает, и я доволен, на микроси и останусь :) . хай-тек снёс :evil: .
Весьма печальный факт . Да и опыта вам это не прибавит , при первой же неудаче бросить...
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 380v »

а сколько-же можно мучаться? уже столько сайтов перелопатил, и ни у кого такой проблемы не было, и никто не может толком ничего рассказать и объяснить, хотя-бы порядок установки и настройки. я наверняка что-то делаю не так (ведь у других работает), а что не так не знаю. сколько не читал все очень просто. установил и все. а у меня какие-то бока, и спросить не у кого.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Для начала, вы не тот форум выбрали ...
http://www.microchip.su/forumdisplay.php?f=14
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

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

а сколько-же можно мучаться? уже столько сайтов перелопатил, и ни у кого такой проблемы не было, и никто не может толком ничего рассказать и объяснить, хотя-бы порядок установки и настройки. я наверняка что-то делаю не так (ведь у других работает), а что не так не знаю. сколько не читал все очень просто. установил и все. а у меня какие-то бока, и спросить не у кого.
выложите тот проект, который не идет, причем полностью.
(с) Чудес не бывает.
Свободу выбора никто не отнимает, за хайтек обидно. Кто-то прочитает этот пост и решит, что заморачиваться с хайтеком незачем. А это не так.
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 380v »

Решил опять поставить хайтек. установил откомпилировал в очередной раз свой проект, как и раньше он в протеусе работает. программирую пик, и случилось чудо, оно работает, и я счастлив :)) . только я так и не понял, что же было раньше, почему он раньше не работал. вот мой проект полностью:
Вложения
GSS_628a_HI-TECH.rar
(125.5 КБ) 153 скачивания
Родился
Сообщения: 13
Зарегистрирован: Вс ноя 29, 2009 15:32:13

Сообщение 380v »

попробую еще прикрутить энкодер и лм7000, думаю что теперь у меня должно все получиться. и еще меня мучает вопрос. почему программа в контроллере располагается таким интересным образом - почти вся программа в самом конце, а не в начале памяти?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»