Jump to content

aureliokta

Members
  • Content Count

    3
  • Joined

  • Last visited

  1. Hi, have you managed to put SD Card to work with TM4C1294XL? Do you have some tips? I´m facing a hard time trying...
  2. The code uses Pin M6 and push the data over serial. The variables "largest" and "lowest" helps to tune the code, in accord with the operation frequency.
  3. I´am using TM4C1294XL and I wasn't able to communicate, so I changed your code a little bit and is working, its not very polished but works.... So here is the code to EK launchpad. #include <stdint.h> #include <stdbool.h> #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/gpio.h" #include "drivers/pinout.h" #include "driverlib/pin_map.h" #include "driverlib/rom.h" #include "driverlib/rom_map.h" #include "driverlib/sysctl.h" #include "driverlib/uart.h" #include "driverlib/timer.h" #include "utils/uartstdio.h" int temp; int humidity; uint32_t g_ui32SysClock; #ifdef DEBUG void __error__(char *pcFilename, uint32_t ui32Line) { } #endif void ConfigureUART(void) { ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); ROM_GPIOPinConfigure(GPIO_PA0_U0RX); ROM_GPIOPinConfigure(GPIO_PA1_U0TX); ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTStdioConfig(0, 115200, g_ui32SysClock); } int ReadDHT() { // bit buffers & timeout char bitcount; char byte; char bits[5] = {0,0,0,0,0}; unsigned int bitints[6]; long timerval; int clockMhz; unsigned int loopCnt = 10000; #define MY_PIN_PERIPH SYSCTL_PERIPH_GPIOM #define MY_PIN_PORTBASE GPIO_PORTM_BASE #define MY_PINNR GPIO_PIN_6 #define MY_TIMER_PERIPH SYSCTL_PERIPH_TIMER0 #define MY_TIMERBASE TIMER0_BASE #define MY_TIMER TIMER_B SysCtlPeripheralEnable(MY_TIMER_PERIPH); TimerConfigure(MY_TIMERBASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_ONE_SHOT); SysCtlPeripheralEnable(MY_PIN_PERIPH); ROM_GPIOPinTypeGPIOOutput(MY_PIN_PORTBASE, MY_PINNR); GPIOPinWrite(MY_PIN_PORTBASE, MY_PINNR, 0x0); // #loops = loops_per_us*time_in_us = time in us * loops/us = time_in_us *(clockfreq/10000000) SysCtlDelay((g_ui32SysClock/3)/30 ); // -> 30 ms ROM_GPIOPinTypeGPIOInput(MY_PIN_PORTBASE, MY_PINNR); loopCnt = g_ui32SysClock/100; while(GPIOPinRead(MY_PIN_PORTBASE, MY_PINNR)) { loopCnt = loopCnt -1; if (loopCnt == 0) return 0; } loopCnt = g_ui32SysClock/100; while(!(GPIOPinRead(MY_PIN_PORTBASE, MY_PINNR))) //0 { loopCnt = loopCnt -1; if (loopCnt == 0) return 0; } loopCnt = g_ui32SysClock/100; while(GPIOPinRead(MY_PIN_PORTBASE, MY_PINNR)) { loopCnt = loopCnt -1; if (loopCnt == 0) return 0; } // start receiving 40 bits char i; bitcount = 7; byte = 0; int conta = 0; int timerval2=0; int largest = 0; int lowest = 99999; for (i=0; i < 40; i++) { loopCnt = g_ui32SysClock/100; while(!(GPIOPinRead(MY_PIN_PORTBASE, MY_PINNR))) { loopCnt = loopCnt -1; if (loopCnt == 0) return 0; } TimerDisable(MY_TIMERBASE, MY_TIMER); TimerConfigure(MY_TIMERBASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_ONE_SHOT); TimerLoadSet(MY_TIMERBASE, MY_TIMER, g_ui32SysClock/4000); TimerEnable(MY_TIMERBASE, MY_TIMER); timerval = TimerValueGet(MY_TIMERBASE, MY_TIMER); loopCnt = g_ui32SysClock/100; while(GPIOPinRead(MY_PIN_PORTBASE, MY_PINNR)) { loopCnt = loopCnt -1; if (loopCnt == 0) return 0; } timerval2 = TimerValueGet(MY_TIMERBASE, MY_TIMER); conta = timerval - timerval2; if (conta>largest) largest = conta; if (conta<lowest) lowest = conta; if ((conta) > (1000)) bits[byte] |= (1 << bitcount); if (bitcount == 0) { bitcount = 7; byte++; }else{ bitcount--; } } bitints[0] = ((unsigned int) bits[0] & (0x000000FF)); bitints[1] = ((unsigned int) bits[1] & (0x000000FF)); bitints[2] = ((unsigned int) bits[2] & (0x000000FF)); bitints[3] = ((unsigned int) bits[3] & (0x000000FF)); bitints[4] = ((unsigned int) bits[4] & (0x000000FF)); if(((bitints[0] + bitints[1] + bitints[2] + bitints[3]) & (0x000000FF)) == bitints[4]){ temp = bitints[2]; humidity = bitints[0]; return 1; }else{ return 0; } } int main(void) { g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 40000000); PinoutSet(false, false); ROM_GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_1); ConfigureUART(); UARTprintf("Its runing at : %d\n",g_ui32SysClock); while(1) { // // Turn on D1. LED 1 // LEDWrite(CLP_D1, 1); SysCtlDelay(g_ui32SysClock / 3); //%1s Delay its required because if the sensor is ready to fast the comunication goes down. LEDWrite(CLP_D1, 0); SysCtlDelay(g_ui32SysClock / 3); if(ReadDHT() == 0) { UARTprintf("Erro!\n"); } else { UARTprintf("Temp %d !\n",temp); UARTprintf("Hum %d !\n",humidity); } } }
×
×
  • Create New...