#include "main.h" #include "delay.h" #include "deviceSetup.h" #include "usart.h" #include "ascii.h" #include "timer.h" #include "i2c.h" void timer_test(timerNo_t timer, pinNo_t pin) { timerInitCounter(timer, 4000, 999, downCounting); timerSart(timer); for(int i = 0; i < 10 ; i++) { while(!timerGetUpdateInterrupt(timer)); timerClearUpdateInterrupt(timer); pinToggle(pin); } pinWrite(pin,0); } void timer_capture_compare_test(timerNo_t timer) { uint16_t i = 0; timerInitCounter(timer, 100, 99, downCounting); // We use pin PA3 (Arduino header A2) //timerInitOutputCompare(timer, toggle, 4, pinA3, 2,0, 300); timerInitOutputCompare(timer, pwm_normal, 2, pinB3, 2,0, 900); timerSart(timer); while(1){ delayMs(200); timerSetCounterCompareValue(timer, 2, i); i += 10; if(i>99) i = 0; } } int main(int argc, char *argv[]) { uint8_t i = 0; uint8_t slaveAddress = 0xC0; uint8_t registerToRead = 0x00; uint8_t charTosend = 0; char buffer [8]; // making array with all available timers //timerNo_t timers[MAX_TIMER_CHANNEL_COUNT] = {timer_1, timer_2, timer_3, timer_14, timer_16, timer_17}; delayInitMs(8000000, 1000); // Clock Freq and Divider for ARM library pinConfig(pinB3, output, pushPull, def_res, def_speed); pinConfig(pinA0, input, def_stage, pullDown, def_speed); setupInit(); // This is the sescond call of System init the assebly start code is calling it before the main. usartInit( usart2, pinA2, pinA15, 115200, eight, NO_PARITY_CTRL, noFlowControl); //clears screen and send the wellcome messgae print_Usart(usart2, ASCII_clear); print_Usart(usart2, "Hello to our KED project\n\r"); //blinks 10 times to indicate the sicsessfull init if the device for(i = 0 ; i < 2 ; i++) { delayMs(100); pinToggle(pinB3); delayMs(100); } pinWrite(pinB3,0); // Pin configuration for i2c pinInit(pinB6); pinInit(pinB7); pinConfig(pinB6, alternate, openDrain, none, veryFast);// I2C SCL pinConfig(pinB7, alternate, openDrain, none, veryFast);// I2C CSA pinSetAlternate(pinB6, 1); pinSetAlternate(pinB7, 1); i2c_t i2c_1; i2c_1.channelNo = I2C_CH_1; i2c_1.mode = i2cModeMaster; i2c_1.address = 0x33; i2c_1.addressSecond = 0; i2c_1.addressCount = i2cAddressCountSingle; i2c_1.addressSize = i2cAddressSizeSevenBits; i2c_1.speed = i2cSpeedStandart; i2c_1.opperationMode = i2cOpperationPolling; i2c_1.streching = i2cClockStrechingDisable; i2c_1.timing = 0x2000090E; // Taken from stm code generator i2c_1.wakeOn = i2cWakeUpDisabled; i2c_1.state = i2cNotInitialized; print_Usart(usart2, "I2C init started\n\r"); i2cInit(&i2c_1); print_Usart(usart2, "I2C initialized\n\r"); print_Usart(usart2, "I2C_BASE->ISR & I2C_ISR_TXIS : "); i2cMasterRecieve(&i2c_1,slaveAddress,®isterToRead,&charTosend); buffer[0] = charTosend>>4; //4 MSB buffer[1] = charTosend& ((1 << 3)); //4 LSB usartSendChar(usart2, 0x30); usartSendChar(usart2, 'x'); usartSendChar(usart2, buffer[0]+0x30); usartSendChar(usart2, buffer[1]+0x30); print_Usart(usart2, "\n\r"); print_Usart(usart2, "All is working fine\n\r"); while(1) { delayMs(100); pinToggle(pinB3); delayMs(100); } return 1; }