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

 
 
> PIC16, параллельный вызов функции из main() и обработчика прерываний не работ
Almaz1988
сообщение Feb 22 2013, 06:52
Сообщение #1


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

Группа: Участник
Сообщений: 100
Регистрация: 19-09-12
Пользователь №: 73 602



Здравствуйте.
Пишу программу под PIC16f1825 в ( MPLAB X IDE v1.30 + HI-TECH PICC (v9.81) ).
Программа в общем виде состоит из двух блоков: главной функции main() и обработчика прерываний.
Так вот, столкнулся с такой проблемой, что не могу использовать функции параллельно в обоих блоках,
Функции эти:
Код
    itoa_al( char *buff, uint32_t data ); //саописный аналог функции sprintf() для преобразования числа в строку
    uartSendString( char *buff ); // функция отправки строки по uart


Т.е., если я в main() в бесонечном цикле преобразовываю любое число в строку и шлю его по uart'у, то в случае
определенного прерывания, вызывающего эти же две функции по uart'у отсылается не число а нули.

Если в main() эти две функции не использовать, то в обработчике прерывания они срабатывают нормально.

Код:
Код
#include <stdio.h>
#include <stdlib.h>
#include <pic.h>

//.................

static void interrupt isr(void)
{
    //.......................
    itoa_al( buff, 34 );
    uartSendString( buff );
}

int main(int argc, char** argv)
{
    //.........................
    while(1)
    {
         delayMsTimer0( 2000 );
         itoa_al( buff, 34 );
         uartSendString( buff );
    }
}


В чем может быть проблема?

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:35
Рейтинг@Mail.ru


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