Проблема с PIC16F628a.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Пн фев 22, 2016 14:31:14

Сообщение FedorVetrov80 »

:o Проблема с PIC16F628a. Запрограммировано на Микро Си, откомпилировано. Но Протеусе работает нормально. Но вот в железе работает
не правильно. Программатор Екстра Пик все читает и пишет. Может фьюзы стоят не правильно, но я проверил при прошивке?
вот прога чисто для проверки
#define voda porta.f0 //--ДАТЧИК ВОДЫ
#define temp porta.f1 //--датчик температуры

#define prg1 porta.f2 //--код программы 0 бит
#define prg2 porta.f3 //--код программы 1 бит

#define pit porta.f4 //--контроль питания

#define otshim portb.f0 //--отжим
#define revers portb.f1 //--реверс двигателя
#define motor portb.f2 //--включение двигателя

#define klap1 portb.f3 //--клапан 1
#define klap2 portb.f4 //--клапан 2

#define ten portb.f5 //--нагреватель
#define sliv portb.f6 //--слив воды

#define error portb.f7 //--ошибка

unsigned cnt; // Определение переменной cnt
int prer; //прерывания
int minn; //минуты
int sek; //секунды
int cik; //счетчик цикла
int konpr; //конец программы
//------------------------------------------------------------------
void interrupt() {
prer++; // В случае прерывания увеличить cnt на
//TMR0 = 0; // Возврат TMR0 в начальное состояние
INTCON = 0x20; // Бит T0IE установлен, bit T0IF очищен
if (prer == 10) {
//error = ~error; }
if (konpr == 0) {error = ~error;}
prer = 0;
sek++; // счет секунд
}
if (sek == 60) { // счет минут
sek = 0;
// error = ~error;
minn++;
}
if (minn = 60) {minn = 0;}
//--проверка аварий


}

//----------------
void vodaf() { //-набор воды
do {
klap2 = 1;
} while(voda == 1);
klap2 = 0;
}
//-----------------------------------------------------------------------------
void tenf() { //--нагрев воды
ten = 1;
motor = 1;
do {
if (voda == 1) {goto end_ten;}
delay_ms(200);
} while(temp == 1);
end_ten:
motor = 0;
ten = 0;
}
//-----------------------------------------------------------------------------
void slivf() { //-слив воды
ten = 0;
klap1 = 0;
klap2 = 0;
sliv = 1;
motor = 1;
do {
delay_ms(200);
}
while (voda == 0);
delay_ms(500);
motor = 0;
sliv = 0;
}
//-----------------------------------------------------------------------------
void poloskan() { //--полоскание
cik =0;
vodaf();
do {
motor = 1;
delay_ms(2000);
motor = 0;
revers = ~revers;
delay_ms(1000);
cik++;
}
while (cik < 2);
revers =0;
motor = 0;
slivf();
}
//-----------------------------------------------------------------------------
void otshimf() { //--отжим белья
otshim = 1;
cik = 0;
do {
motor = 1;
delay_ms(2000);
motor = 0;
delay_ms(700);
cik++;
}
while (cik < 2);
otshim = 0;
motor = 0;
}
//-----------------------------------------------------------------------------
void main() { //dvdf
OPTION_REG = 0x256; // Назначение предделителя для TMR0
// ANSEL = 0; // Порты I/O настроены как цифровые
// ANSELH = 0;
TRISB = 0; // Все входы порта B настроены на вывод
PORTB = 0x0; // Сброс порта B
TMR0 = 0; // TMR0 считает от 0 до 255
INTCON = 0xA0; // Разрешить прерывания по TMR0
sek = 0; // секунды
minn = 0; //минуты
cik = 0;
konpr = 0;
//---------------
vodaf();
tenf();
//--стирка
do { // Бесконечный цикл
motor = 1;
delay_ms(2000);
motor = 0;
revers = ~revers;
delay_ms(2000);
cik++;
} while(cik < 2);
delay_ms(1000);
slivf();
delay_ms(1000);
poloskan();
delay_ms(1000);
otshimf();
//-------конец--------------
konpr = 1;
error = 1;
}
Вложения
stiralkaEm.jpg
(159.31 КБ) 435 скачиваний
Последний раз редактировалось FedorVetrov80 Вт фев 23, 2016 14:01:08, всего редактировалось 1 раз.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

Възъваю дух Ванги. Она мне скажет что там у вас случилось.

Примите, что въ ничего не знаете про то что въ делаете и подумайте, что вам надо чтоб поняли что делали.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

Сообщение shindax »

Покажите схему хотя-бы, для начала.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 164
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

FedorVetrov80 писал(а)::o Проблема с PIC16F628a. ...
Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

Сообщение shindax »

Родэрик писал(а):...Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать.
Что проверил??? ТС ни схемы, ни прошивки не выкладывал, даже о сути устройства не упоминал. Тоже по-Ванге?
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 164
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

shindax писал(а):
Родэрик писал(а):...Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать.
Что проверил??? ...
Вот именно..... что?
В том то всё и дело, каков вопрос - таков ответ. Я думаю, что на такие темы в подобном духе и надо отвечать, дабы искоренить их.
Если б ему на полном серьёзе без лишних пояснений один ответил, что он не сохраняет fsr в прерываниях, а другой, что mclr висит в воздухе..... итд, то ему пришлось бы как-то реагировать и включать мозг, а это уже кое что, это уже опыт,..... таким макаром, глядишь, и вопросы начнут адекватно формулироваться.
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

Сообщение shindax »

Родэрик писал(а):... таким макаром, глядишь, и вопросы начнут адекватно формулироваться.
:D Может быть! Но пока-что, в этой ветке только я немного ох...л. :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

FedorVetrov80, случайно ошибся и залез с начало ветки. Заметил, что тъ дал программу и схему.

Я на MicroC не писал, но

в начале должно стоят что-то похоже на

#include "16f628a.h"
#include "pic.h"
скачайте откуда-то какую-то программу на MicroC и посмотрите или прочтите

не знаю как на MicroC назначаются фюзъ. На ASM ето так:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON& _EXTCLK_OSC &_CP_OFF &_LVP_OFF&_MCLRE_OFF
на HiTech - так
__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);
и здесь должно бъть что-то такое.

При инициализации (в начало main () ) должно стоят что-то вроде
CMCON = 0x07;
ето отключение компараторов в 628А

В interrupt-е не видел как въ обнуляете флага възвавшим преръвание. Для TMR0 ето должно бъть что-то такое
if(INTCON.TMR0IF)
{ ...
...
INTCON.TMR0IF = 0;
}

Схему не смотрел.

Возмите документацию на 628а и ознакомтесь с ней. Она (пока не влезете на все 101% в МК должна всегда бъть с вами)
Думаю, что в нете и на MikroC найдется литература.

Я пишу на асемблере и если не знаю нечто то смотрю в файле P16F628A.inc - ето то-же самое как 16F628A.h(или что-то подобное) для MikroC

PS: Посмотрел несколько програм написаннъх на MikroC. Скорее всего CONFIG слово в MikroC делается в среде. Где-то устанавливаются фюсъ. Ето должем сказать человек работавшии с MikroC.

http://www.mikroe.com/pdf/mikroc_pic_pr ... c_v100.pdf вот здесь на стр. 8 едет слово об установке CONFIG-a
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Ответить

Вернуться в «PIC»