Count CAN frames read in one cycle
This commit is contained in:
		@ -33,6 +33,10 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
extern canFrame framebuffer[CANFRAMEBUFFERSIZE];
 | 
					extern canFrame framebuffer[CANFRAMEBUFFERSIZE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern uint32_t framebufferwritepointer;
 | 
				
			||||||
 | 
					extern uint32_t framebufferreadpointer;
 | 
				
			||||||
 | 
					extern uint32_t frames_read;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
 | 
					void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
 | 
				
			||||||
                               uint32_t interrupt_flags);
 | 
					                               uint32_t interrupt_flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "stm32g4xx_hal_fdcan.h"
 | 
					#include "stm32g4xx_hal_fdcan.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 3 should be programmed with CAN id 2
 | 
					// 3 should be programmed with CAN id 2
 | 
				
			||||||
@ -19,8 +20,9 @@
 | 
				
			|||||||
const uint16_t slave_CAN_id_to_slave_index[7] = {
 | 
					const uint16_t slave_CAN_id_to_slave_index[7] = {
 | 
				
			||||||
    0, 1, 2, 3, 4, 5, 6}; // TODO: Make this pretty pls
 | 
					    0, 1, 2, 3, 4, 5, 6}; // TODO: Make this pretty pls
 | 
				
			||||||
canFrame framebuffer[CANFRAMEBUFFERSIZE] = {0};
 | 
					canFrame framebuffer[CANFRAMEBUFFERSIZE] = {0};
 | 
				
			||||||
uint32_t framebufferwritepointer;
 | 
					uint32_t framebufferwritepointer = 0;
 | 
				
			||||||
uint32_t framebufferreadpointer;
 | 
					uint32_t framebufferreadpointer = 0;
 | 
				
			||||||
 | 
					uint32_t frames_read = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CAN_Init(FDCAN_HandleTypeDef* hcan) {
 | 
					void CAN_Init(FDCAN_HandleTypeDef* hcan) {
 | 
				
			||||||
  HAL_FDCAN_Stop(hcan);
 | 
					  HAL_FDCAN_Stop(hcan);
 | 
				
			||||||
@ -51,6 +53,7 @@ void CAN_Init(FDCAN_HandleTypeDef* hcan) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
 | 
					uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
 | 
				
			||||||
 | 
					  frames_read = 0;
 | 
				
			||||||
  while (framebufferreadpointer != framebufferwritepointer) {
 | 
					  while (framebufferreadpointer != framebufferwritepointer) {
 | 
				
			||||||
    framebufferreadpointer++;
 | 
					    framebufferreadpointer++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -59,6 +62,7 @@ uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    canFrame rxFrame = framebuffer[framebufferreadpointer];
 | 
					    canFrame rxFrame = framebuffer[framebufferreadpointer];
 | 
				
			||||||
 | 
					    frames_read++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((rxFrame.FrameID & SLAVE_STATUS_BASE_ADDRESS) ==
 | 
					    if ((rxFrame.FrameID & SLAVE_STATUS_BASE_ADDRESS) ==
 | 
				
			||||||
        SLAVE_STATUS_BASE_ADDRESS) {
 | 
					        SLAVE_STATUS_BASE_ADDRESS) {
 | 
				
			||||||
 | 
				
			|||||||
@ -61,11 +61,6 @@ extern FDCAN_HandleTypeDef hfdcan1;
 | 
				
			|||||||
extern SPI_HandleTypeDef hspi1;
 | 
					extern SPI_HandleTypeDef hspi1;
 | 
				
			||||||
/* USER CODE BEGIN EV */
 | 
					/* USER CODE BEGIN EV */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern uint8_t framebufferwritepointer;
 | 
					 | 
				
			||||||
extern uint8_t framebufferreadpointer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* USER CODE END EV */
 | 
					/* USER CODE END EV */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/******************************************************************************/
 | 
					/******************************************************************************/
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user