Easyelectronics.ru

Электроника для всех
Текущее время: 18 дек 2018, 19:01

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: RFID 125 кГц на stm8s003f3
СообщениеДобавлено: 20 фев 2018, 20:14 
Только пришел

Зарегистрирован: 25 май 2013, 12:44
Сообщения: 6
Доброго времени суток всем! Пытаюсь переделать код с AVR Atmega8 читалки RFID брелков на 125 кГц под stm8s003f3 c использованием SPL. Подскажите в чем я заблуждаюсь? В исходнике используются внешние прерывания. На stm8s с этим проблема. Вот кусок кода из исходника с прерыванием по переполнению.
Код:

ISR (TIMER0_OVF_vect)
{
if (GICR & (1<<INT0)) //если ожидали внеш прерывание
RfidFlags |= bTIM0_OVF; // - отметить переполнение

else{ //если внеш прерывания были выключены
if (RFID_IN_PIN & RFID_IN_LINE) // - запомнить уровень линии
RfidFlags |= bLINE_VAL;
else
RfidFlags &= ~bLINE_VAL;
GICR |= (1<<INT0); //включить внешние прерывани¤ от INT0
GIFR = (1<<INTF0); //сбросить возможно проскочившее прерывание
}
}
Код:


У меня этот кусок выглядит так:
Код:


INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
if (EXTI->CR1 != EXTI_CR1_RESET_VALUE) //если ожидали внеш прерывания
RfidFlags |= bTIM0_OVF; // - отметить переполнение

else{ //если внеш прерывания были выключены
if (GPIO_ReadInputPin(GPIOD, GPIO_PIN_3)) // - запомнить уровень линии
RfidFlags |= bLINE_VAL;

else
RfidFlags &= ~bLINE_VAL;

EXTI->CR1 &= (uint8_t)(~EXTI_CR1_PDIS);
EXTI->CR1 |= (uint8_t)((uint8_t)(EXTI_SENSITIVITY_RISE_FALL) << 6); //включить внешние прерывание от INT0

}
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);

}
Код:

А вот кусок кода из исходника из внешнего прерывания, где они выключаются
Код:

ISR (INT0_vect)
{
uint8_t TimerTemp = TCNT0;
TCNT0 = 0x100 - (RFID_PERIOD_LEN * 3 / 4);//счетчик таймера настроить на 3\4 длины периода RFID бита данных
GICR &= ~(1<<INT0); //выключить внешнее прерывание
GIFR = (1<<INTF0); //на случай ВЧ сигнала сбросить возможно проскочившее повторное прерывание
Код:


У меня этот кусок выглядит так:
Код:

INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)
{
uint8_t TimerTemp = TIM4->CNTR;
TIM4->ARR = 0x100 - RFID_PERIOD_34;
EXTI->CR1 = EXTI_CR1_RESET_VALUE; // сбрасываю внешние прерывания
Код:


Подскажите, пожалуйста, может что-то не так делаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFID 125 кГц на stm8s003f3
СообщениеДобавлено: 24 фев 2018, 01:25 
Только пришел

Зарегистрирован: 25 май 2013, 12:44
Сообщения: 6
Разобрался сам. Спасибо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB