diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -42,7 +42,7 @@ char* itoa(int i, char b[]){ shifter = shifter/10; }while(shifter); *p = '\0'; - do{ //Move back, inserting digits as u go + do{ //Move back, inserting digits as you go *--p = digit[i%10]; i = i/10; }while(i); @@ -99,15 +99,6 @@ int main(void) while(1) { - temp = SPI_I2S_ReceiveData(SPI2); - //ssd1306_DrawString("Temp: ", 1, 40); - char tempstr[5]; - itoa(temp, tempstr); - ssd1306_DrawString("Temp: ", 3, 40); - //char test = temp + 0x30; - //sprintf(tempstr, "%d", test); - ssd1306_DrawString(tempstr, 3, 70); - //ssd1306_block_write(); // Process sensor inputs [TODO: 5hz?] @@ -150,22 +141,35 @@ int32_t d = 1; // Process things void process() { - // Read MAX temp sensor + // Assert CS GPIO_ResetBits(MAX_CS); + Delay(50); - // Assert CS // This may not clock at all... might need to send 16 bits first - uint8_t retval = 0;//SPI_I2S_ReceiveData(SPI2); + SPI_I2S_SendData(SPI2, 0xAA); // send dummy data + SPI_I2S_SendData(SPI2, 0xAA); // send dummy data + uint16_t retval = SPI_I2S_ReceiveData(SPI2); + + char tempstr[9]; + itoa(retval, tempstr); + ssd1306_DrawString("Temp: ", 1, 40); + ssd1306_DrawString(tempstr, 1, 70); + // Deassert CS GPIO_SetBits(MAX_CS); if((!retval || (temp & 0x2) != 0)) - return; // Comms error - this is happening right now + { + ssd1306_DrawString("!TempCOMMS", 3, 35); + //return; // Comms error - this is happening right now + } - if((temp & 0x4)!= 0) - return; // Open thermocouple - + else if((temp & 0x4)!= 0) + { + ssd1306_DrawString("!OpenThermocouple", 3, 40); + //return; // Open thermocouple + } temp = (temp & 0x7FF8) >> 5; @@ -392,22 +396,22 @@ void init_spi(void) SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16; + SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); /* Enable the SPI */ // MAX IC - //SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx; + SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; // Andysworkshop - SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; // From andysworkshop - SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; // same - // Can be used for CS... SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; - SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; - //SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; - //SPI_InitStructure.SPI_CRCPolynomial = 7; + SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // From andysworkshop + SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // same + SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; + SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; + SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; + SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure); SPI_Cmd(SPI2, ENABLE); /* Enable the SPI */ } @@ -525,34 +529,10 @@ void init_gpio(void) { /*Configure GPIO pin : PA */ GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; - GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; + GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz; GPIO_Init(GPIOA, &GPIO_InitStruct); } - - - - -#ifdef USE_FULL_ASSERT - -/** - * @brief Reports the name of the source file and the source line number - * where the assert_param error has occurred. - * @param file: pointer to the source file name - * @param line: assert_param error line source number - * @retval None - */ -void assert_failed(uint8_t* file, uint32_t line) -{ - /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - - /* Infinite loop */ - while (1) - {} -} -#endif - // vim:softtabstop=4 shiftwidth=4 expandtab