реклама на сайте
подробности

 
 
> Простецкий код на си подскажите где туплю, PIC на си
Vny4ek
сообщение Apr 20 2011, 16:48
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 145
Регистрация: 11-01-08
Пользователь №: 34 001



Подскажите пожалуйста начал разбираться с мплаб и HI-TECH
такой код простой, по переполнению таймера меняет состояние одной из ножек
и по нажатию кнопки (появлению там единицы) должен подать на RA3
проверяю в протеусе подцепил кнопку на RA0 подаю +5в туда но это событие не обрабатывается
а если в коде меняю параметр в условии на противоположном то условие выполняется (вывод на RA3 единицу и запрет прерывания)
вот сам код
Код
#include    <htc.h>

/*
*    Interrupt test for PIC
*
*    Copyright (C)1997 HI-TECH Software.
*    Freely distributable.
*/
#define BUTTON    RA0    //bit 1 of PORTC
static volatile long    count;
static volatile bit    bad_intr;

void
main(void)
{
    /* setup stuff */

    T0CS = 0;        // Timer increments on instruction clock
    TRISA = 0x01;        // Port A is input
    TRISB = 0xFE;        // Port B bit 0 is output
    T0IE = 1;        // Enable interrupt on TMR0 overflow
    GIE = 1;        // Global interrupt enable

        CLRWDT();    // Idly kick the dog


//RA3=1;
while(1){
if (BUTTON==1){RA3=1; GIE=0;};
};


}//End of main

static void interrupt
isr(void)            // Here be interrupt function - the name is
                // unimportant.
{
    if(!T0IF)        // Was this a timer overflow?
        bad_intr = 1;    // NO! Shock horror!
    count++;        // Add 1 to count - insert idle comment
    T0IF = 0;        // Clear interrupt flag, ready for next
    PORTB ^= 1;        // toggle bit 0 of Port B, to show we're alive
}

заранее спасибо

Сообщение отредактировал Vny4ek - Apr 20 2011, 16:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genius1
сообщение Apr 23 2011, 17:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 14-05-08
Пользователь №: 37 515



1. Обязательно предопределять фьюзы (CONFIG).

2. Аналоговые функции порта PORTA при ненадобности отключать. Как уже было сказано, для этого выключить компаратор в CMCON0. Во многих PIC также нужно определять PORTA как цифровой в настройках АЦП.

3. Обязательна задержка против дребезга.

4. Настройка пред/пост делителя используемого таймера.

5. В обработке прерывания от таймера видимо все-таки правильнее будет как-то так:

CODE
static void interrupt isr(void) // Here be interrupt function - the name is
// unimportant.
{
if(T0IF)
{ // Was this a timer overflow?
count++; // Add 1 to count - insert idle comment
T0IF = 0; // Clear interrupt flag, ready for next
PORTB ^= 1; // toggle bit 0 of Port B, to show we're alive
}
else {bad_intr = 1;}// NO! Shock horror!
}


Сообщение отредактировал Genius1 - Apr 23 2011, 17:08
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vny4ek   Простецкий код на си подскажите где туплю   Apr 20 2011, 16:48
- - Vny4ek   Пипец 40 просмотров и 0 ответов Я понял в чем оши...   Apr 21 2011, 05:10
|- - xemul   Цитата(Vny4ek @ Apr 21 2011, 09:10) Пипец...   Apr 21 2011, 13:41
|- - ViKo   Цитата(xemul @ Apr 21 2011, 16:41) ... пр...   Apr 21 2011, 13:49
- - sargein   Во-первых, выключите аналоговые функции порта А Во...   Apr 21 2011, 06:31
- - Vny4ek   ну я пытаюсь проверить переполнился ли таймер (дот...   Apr 21 2011, 09:13
- - sargein   Цитата(ViKo @ Apr 21 2011, 16:49) Когда т...   Apr 21 2011, 13:59
- - ViKo   Там по проверке выполняется только bad_intr = 1; А...   Apr 21 2011, 14:07
- - sargein   а кстати по таймеру, тут нигде явно не задается ск...   Apr 21 2011, 14:20
- - Vny4ek   Извините, просто поставил MPLAB и попытался задей...   Apr 21 2011, 15:22
|- - xemul   Цитата(Vny4ek @ Apr 21 2011, 19:22) проц ...   Apr 21 2011, 16:06
- - Vny4ek   Ну то что имею по этому и взялся за этот проц CONF...   Apr 21 2011, 16:44
|- - xemul   Цитата(Vny4ek @ Apr 21 2011, 20:44) Забыл...   Apr 21 2011, 17:47
- - sargein   Смотреть в даташит пункт 3.1 PORTA and TRISA Reg...   Apr 21 2011, 17:10


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016