| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Проблема с PIC16F628a. https://radiokot.ru/forum/viewtopic.php?f=58&t=127663 |
Страница 1 из 1 |
| Автор: | FedorVetrov80 [ Пн фев 22, 2016 14:50:20 ] | ||
| Заголовок сообщения: | Проблема с 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; }
|
|||
| Автор: | botchin [ Пн фев 22, 2016 16:27:28 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
Възъваю дух Ванги. Она мне скажет что там у вас случилось. Примите, что въ ничего не знаете про то что въ делаете и подумайте, что вам надо чтоб поняли что делали. |
|
| Автор: | shindax [ Вт фев 23, 2016 01:45:15 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
Покажите схему хотя-бы, для начала. |
|
| Автор: | Родэрик [ Вт фев 23, 2016 10:39:58 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
FedorVetrov80 писал(а): :o Проблема с PIC16F628a. ... Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать. |
|
| Автор: | shindax [ Вт фев 23, 2016 11:49:04 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
Родэрик писал(а): ...Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать. Что проверил??? ТС ни схемы, ни прошивки не выкладывал, даже о сути устройства не упоминал. Тоже по-Ванге? |
|
| Автор: | Родэрик [ Вт фев 23, 2016 12:36:35 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
shindax писал(а): Родэрик писал(а): ...Проверил у себя несколько раз, всё работает; скорей всего чип такой попался, пробуй другие, может заработать. Что проверил??? ... Вот именно..... что? В том то всё и дело, каков вопрос - таков ответ. Я думаю, что на такие темы в подобном духе и надо отвечать, дабы искоренить их. Если б ему на полном серьёзе без лишних пояснений один ответил, что он не сохраняет fsr в прерываниях, а другой, что mclr висит в воздухе..... итд, то ему пришлось бы как-то реагировать и включать мозг, а это уже кое что, это уже опыт,..... таким макаром, глядишь, и вопросы начнут адекватно формулироваться. |
|
| Автор: | shindax [ Вт фев 23, 2016 13:19:01 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
Родэрик писал(а): ... таким макаром, глядишь, и вопросы начнут адекватно формулироваться. |
|
| Автор: | botchin [ Вт фев 23, 2016 19:13:43 ] |
| Заголовок сообщения: | Re: Проблема с PIC16F628a. |
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_pro/1st_project_c_pro_pic_v100.pdf вот здесь на стр. 8 едет слово об установке CONFIG-a |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


