S5info_H14
/
APP3
Problematique
main.cpp
- Committer:
- joGenie
- Date:
- 2014-02-09
- Revision:
- 0:dc7095ab4963
- Child:
- 1:261bb31628e8
File content as of revision 0:dc7095ab4963:
#include "mbed.h" Serial pc(USBTX, USBRX); //const bool preambule[8] = {false, true, false, true, false, true, false, true}; //const bool start_end[8] = {false, true, true, true, true, true, true, false}; bool Trame[16] = {false, true, false, true, true, true, true, false, false, false, true, false, false, true, true, true}; void readTrame() { pc.printf("Duree impulsion : %d microsecondes.\n\r", LPC_TIM2->CR1/(SystemCoreClock/1000000)); LPC_TIM2->IR = 0xFF; } void sendTrame(bool *trame) { for (int a = 0; a < 16; a++) { if (trame[a]) { LPC_PWM1->MR1 = 1; LPC_PWM1->MR2 = SystemCoreClock/2; } else { LPC_PWM1->MR1 = SystemCoreClock/2; LPC_PWM1->MR2 = 1; } pc.printf("trame: %d\n\r", trame[a]); while(LPC_PWM1->IR != 0x01); LPC_PWM1->IR = 0xFF; } } void initialize() { // Set system control LPC_SC->PCONP |= (1 << 22) | (1 << 6); // Enable Timer2 et PWM LPC_SC->PCLKSEL0 |= (1 << 12); // PClk PWM = CCLK LPC_SC->PCLKSEL1 |= (1 << 12); // PClk Timer2 = CCLK // Set pin connection LPC_PINCON->PINSEL0 |= (3 << 10); // Pin 29 Capture LPC_PINCON->PINSEL4 |= (1 << 2); // Pin 25 PWM //Initialize Timer2 for capture NVIC_SetVector(TIMER2_IRQn, uint32_t(readTrame)); LPC_TIM2->TC = 0; // Initialize Time Counter LPC_TIM2->PC = 0; // Initialize Prescale Counter LPC_TIM2->PR = 0; // Initialize Prescale Register LPC_TIM2->TCR |= (1 << 1); // Reset Timer Control Register LPC_TIM2->IR = 0xFF; // Reset Interrupt Register LPC_TIM2->CCR |= (1 << 5) | (1 << 4) | (1 << 3); // Initialize Capture Control Register LPC_TIM2->CTCR |= (1 << 2) | (1 << 0); // TC is incremented on rising edge LPC_TIM2->TCR = 0x01; // Start Timer Control Register //Initialize PWM LPC_PWM1->MCR |= (1 << 1) | (1 << 0); // Initialize Match Control Register Interrupt/Reset LPC_PWM1->PCR |= (1 << 10) | (1 << 2); // Initialize PWM Control Register Output/Double-edge LPC_PWM1->MR0 = SystemCoreClock; // Period LPC_PWM1->LER |= (1 << 2) | (1 << 1); // Initialize Latch Enable Register LPC_PWM1->TCR |= (1 << 0); // Enable counter LPC_PWM1->IR = 0xFF; // Reset Interrupt Register } int main() { initialize(); sendTrame(Trame); while(true); }