int main(int argc, char **argv) { if (argc == 1) { printf("%s <команда>\nin -чтение данных из порта,установленых на ввод\nout-установка состояния порта,установленного на вывод.\n", argv[0]); return 1; } else if (argc == 2) { if(strcmp(argv[1], "out") == 0) mcp_state_out(); else if(strcmp(argv[1], "in") == 0) mcp_state_in(); else printf("Нет такой команды\n"); return 1; } if(strcmp(argv[1], "out") == 0) { if (argc != 4) { printf("Настройка порта: %s <порт> <состояние>\n", argv[0]); return 1; } int mcppin = atoi(argv[2]); int mcpst = atoi(argv[3]); mcp_write (mcppin,mcpst); } else if(strcmp(argv[1], "in")== 0) { if (argc != 3) { printf("Чтение одного порта: %s <порт>\n", argv[0]); mcp_state_in(); return 1; } int mcppin = atoi(argv[2]); printf ("%d\n",mcp_read (mcppin)); } return 0; }
/**************************************************************************** * \brief Initialize communication with CAN controller * * \return SUCESS/FAILURE ****************************************************************************/ uint8_t mcp_init() { uint8_t tmp; SPI_init(); mcp_reset(); tmp = mcp_read(MCP_CANSTAT); if ((tmp & MODE_MASK) != MODE_CONFIG) { printf("MCP2515 NOT configured properly\n"); return 1; } return 0; }
int mcp_ready_to_send(int reg){ char rtsreg = 0x00; switch(reg){ case 0: rtsreg = TXB0CTRL; break; case 1: rtsreg = TXB1CTRL; break; case 2: rtsreg = TXB2CTRL; break; default: return -1; } uint8_t status = mcp_read(rtsreg); if((status & 0b00001000) == 8){ return 0; } else{ return 1; } }