본문 바로가기

interrupt8

Interrupt Nesting & SW Priorization [공개] 관련문서 https://software-dl.ti.com/C2000/docs/c28x_interrupt_nesting/html/index.html C28x Interrupt Nesting In most cases a system will only require one or two interrupts to be nested. This is easily handled by the example shown previously. There is, however, an example provided by which covers possibilities for every single interrupt in the group. This example software-dl.ti.com PIE 그룹과 채널 디폴트 우선순.. 2023. 2. 25.
STM32 ] CAN Interrupt CAN 통신 송수신 이전글 : 2023.01.29 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 송수신 STM32 ] CAN 송수신 CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 eteo.tistory.com bxCAN 의 interrupt source 1. Transmit Request Completed 2. Frame is received in RX FIFO0 3. Frame is r.. 2023. 1. 31.
TMS320F28388D ] 타이머, Timer Interrupt 사용하기 TMS320F28388D 모델에는 32bit Timer가 CPU당 각 3개씩 총 6개가 있다. 특이한 것은 Timer1,2 인터럽트는 각각 INT13, INT14에 연결되어 있고 Timer0는 PIE Interrupt Group 1의 7번째로 자리잡고 있다. 매뉴얼 153페이지 벡터 테이블 CPU0 TIMER가 higher priority를 가지고 그 다음이 CPU1 TIMER 그리고 CPU2 TIMER 이다. CPU 타이머 레지스터는 다음과 같다. 먼저 카운터 레지스터의 설명을 살펴보자. TIM 레지스터는 SYSCLOCK 을 Prescaler값(TDDR+1)으로 분주한 clock cycle 에 따라 감소하고 그러다 0에 도달하면 Period 레지스터(PRD)에 있는 값으로 reload 되며 타이머 인터.. 2022. 12. 5.
TMS320F28388D ] Watchdog Timer 사용하기 Watchdog Timer 는 그 단어에서 유추할 수 있는 그대로 CPU를 감시하면서 시간을 계수하는 회로로, 프로그램이 의도치 않게 비정상적으로 중단되거나 무한루프(Infinite Loop)에 빠지는 등 시스템 통제가 불가능한 상황에서 자동으로 시스템을 리셋하는 하드웨어 기능이다. 내부에 있는 8비트 Watchdog 업 카운터가 최대 값인 0xFF을 넘어 overflow 되면 리셋(또는 인터럽트)이 일어나는데 Watchdog Timer에 의한 CPU리셋을 원하지 않는다면 타이머의 카운터가 최대 값에 도달하기 전에 카운터 값을 0으로 초기화(Clear)하는 코드가 실행되어야 한다. 즉, 칩이 실행하는 프로그램이 안정적이고 연속적으로 동작하려면, 프로그램 상에서 Watchdog Timer에 설정된 시간주기.. 2022. 12. 3.
STM32 ] UART DMA, IDLE Line Interrupt 를 통한 데이터 수신 (Ring Buffer) 코드 출처 : https://controllerstech.com/uart-dma-with-idle-line-detection/ 이전에 UART로 원하는 형식의 데이터를 수신할 때는 패킷의 종료를 뜻하는 특정 문자를 끝에 넣거나 개행 문자를 넣어서 인터럽트 안에서 버퍼에 복사해 처리해야했는데 이 때는 수신될 데이터의 길이 또는 범위를 미리 알고 있어야 했다. 다음은 UART가 IDLE Line을 감지하고 발생시키는 Interrupt를 활용하여 사전에 길이를 알 수 없는 데이터를 효과적으로 수신하는 방법이다. CubeMX 설정 파라미터 세팅은 그대로 두고 DMA 세팅으로 가서 RX Request를 추가한다. Mode는 Normal으로 한다. Direction은 Peripheral To Memory 이고 By.. 2022. 8. 18.
STM32 ] FreeRTOS + Semaphore ISR 사용 예제 추가설명 되지 않은 기타 설정은 이전 글과 동일하다. 2022.08.08 - [MCU/STM32 (ARM Cortex-M)] - STM32 ] FreeRTOS 사용해보기 STM32 ] FreeRTOS 사용해보기 정의 RTOS는 실시간 시스템을 위해 개발된 운영체제로, 멀티태스킹 환경에서 Task 처리시간을 일관되게 유지하기 위한 용도로 사용한다. RTOS는 시분할 시스템 하에서 우선순위 기반 스케줄링을 통 eteo.tistory.com 예제 코드 출처 : https://m.blog.naver.com/eziya76/220951244572 Mutex는 ISR(Interrupt Service Routine)에서 신호를 보내는게 불가능한데 세마포어는 ISR에서 신호를 보낼 수 있다. Task 중 세마포어를 대기.. 2022. 8. 8.
STM32 ] Timer 인터럽트를 사용하여 ADC 값 받기 + 그래프 보면서 디버깅하는 팁 ADC : Analogue to Digital Converter, 아날로그 신호를 디지털 신호로 변환하는 것으로 샘플링(Sampling), 양자화(Quantizing), 부호화(Coding) 과정을 거친다. 샘플링 : 아날로그 파형을 디지털 형태로 변환하기 위해 표본을 취하는 것 양자화 : 표본화된 각 점을 어느 정도 resolution 으로 표현할지 정해 변환하는 것. 예를들어 8비트면 256단계로 세분화 부호화 : 앞의 단계를 거친 디지털 정보를 2진수로 표현하는 것 ADC를 인터럽트방식으로 사용하면 끊임없이 인터럽트가 트리거되어 다른 부분에 문제를 일으킨다. Timer 인터럽트와 ADC 폴링방식을 사용하여 ADC의 샘플링 주기를 조절하는 방법을 소개한다. 먼저 테스트를 위해 사용할 것은 아두이노에 .. 2022. 6. 17.
STM32 , Timer Interrupt 타이머 인터럽트 사용하기 (TIM2) 이전의 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 글에서 이어진다. 2022.05.23 - [MCU/STM32 (ARM Cortex-M)] - STM32 , 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 ( + Timer 사용 방법 ) STM32 , 동기식 / 비동기식 카운터 프로그래밍으로 구현하기 ( + Timer 사용 방법 ) 4비트 상향 카운터 4비트 하향 카운터 main.h 먼저 main.h 에 플립플롭에 필요한 변수들을 묶어 구조체로 정의해주었다. 함수에 매개변수를 여러개 둘 필요없이 보다 간략하게 짤 수 있다. /* USER CODE eteo.tistory.com 프로젝트 파일은 위 글 똑같고 while문 내에서 지역변수를 토글시키며 HAL_Delay(500) 한 이전버전과 달리 T.. 2022. 5. 25.
반응형