app4

Dependencies:   mbed-rtos mbed CRC16

Fork of S5info_APP2 by Éric Bisson

Committer:
JoeyDionne
Date:
Tue Mar 07 00:54:26 2017 +0000
Revision:
11:b27d1a83f688
Parent:
10:8b066285c2e0
Child:
12:a55f77a0e188
Child:
14:bd909277eb13
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ericbisson 7:5501dbea5650 1 #include "mbed.h"
ericbisson 0:c637467eeb8f 2 #include "rtos.h"
ericbisson 7:5501dbea5650 3 #include "bit.h"
ericbisson 8:5b87b1f9d91f 4 #include "uart.h"
ericbisson 1:b3ae0d9f02ad 5
ericbisson 8:5b87b1f9d91f 6 const float HALF_PERIOD = 0.05; // secondes
ericbisson 2:c6465d4e82d2 7
ericbisson 7:5501dbea5650 8 Serial pc(USBTX, USBRX, 9600);
ericbisson 7:5501dbea5650 9 Serial uart(p13, p14, 9600);
ericbisson 8:5b87b1f9d91f 10 Thread ThreadLecture;
ericbisson 2:c6465d4e82d2 11
JoeyDionne 11:b27d1a83f688 12 //test
JoeyDionne 11:b27d1a83f688 13
ericbisson 7:5501dbea5650 14 bool bIsHalfPeriod = false;
ericbisson 7:5501dbea5650 15
ericbisson 7:5501dbea5650 16 extern "C" void RIT_IRQHandler(void) {
ericbisson 7:5501dbea5650 17 //clear flag
ericbisson 7:5501dbea5650 18 LPC_RIT->RICTRL |= bit0; //write 1 to clear bit
ericbisson 5:e878d87782ce 19
ericbisson 7:5501dbea5650 20 bIsHalfPeriod = !bIsHalfPeriod;
ericbisson 1:b3ae0d9f02ad 21 }
ericbisson 1:b3ae0d9f02ad 22
ericbisson 7:5501dbea5650 23 void p14_interrupt()
ericbisson 7:5501dbea5650 24 {
ericbisson 8:5b87b1f9d91f 25 // On turn off les interrupts de lecture une fois qu'on a détecter un message
ericbisson 8:5b87b1f9d91f 26 uart.attach(NULL, uart.RxIrq);
ericbisson 8:5b87b1f9d91f 27
ericbisson 7:5501dbea5650 28 // On envoie le signal au thread de lecture
ericbisson 8:5b87b1f9d91f 29 ThreadLecture.signal_set(1);
ericbisson 7:5501dbea5650 30 };
ericbisson 1:b3ae0d9f02ad 31
ericbisson 7:5501dbea5650 32 void read()
ericbisson 7:5501dbea5650 33 {
ericbisson 7:5501dbea5650 34 while(true)
ericbisson 7:5501dbea5650 35 {
ericbisson 8:5b87b1f9d91f 36 // Attente passive d'un message entrant
ericbisson 8:5b87b1f9d91f 37 uart.attach(&p14_interrupt, uart.RxIrq);
ericbisson 8:5b87b1f9d91f 38 ThreadLecture.signal_wait(1);
ericbisson 2:c6465d4e82d2 39
ericbisson 8:5b87b1f9d91f 40 // Lis le message. Retourne une exception si il y a une erreur
ericbisson 10:8b066285c2e0 41 vector<char> message = uart_read(uart);
ericbisson 2:c6465d4e82d2 42
ericbisson 8:5b87b1f9d91f 43 if (!message.empty())
ericbisson 8:5b87b1f9d91f 44 {
ericbisson 8:5b87b1f9d91f 45 // Affiche le message à l'écran
ericbisson 8:5b87b1f9d91f 46 pc.printf(&message[0], message.size());
ericbisson 8:5b87b1f9d91f 47 }
ericbisson 1:b3ae0d9f02ad 48 }
ericbisson 7:5501dbea5650 49 };
ericbisson 3:3ecbcc05bc85 50
ericbisson 7:5501dbea5650 51 void rit_init()
ericbisson 4:87e9b434bb4d 52 {
ericbisson 7:5501dbea5650 53 LPC_SC->PCONP |= bit16; //Power Control for Peripherals register: power up RIT clock
ericbisson 7:5501dbea5650 54 LPC_SC->PCLKSEL1 |= (bit26 && bit27); //Peripheral clock selection: divide clock by 8 (run RIT clock by 12.5MHz)
ericbisson 7:5501dbea5650 55 LPC_RIT->RICOUNTER = 0; //set counter to zero
ericbisson 8:5b87b1f9d91f 56 LPC_RIT->RICOMPVAL = 250000000 * HALF_PERIOD; //interrupt tick every HALF_PERIOD
ericbisson 7:5501dbea5650 57 LPC_RIT->RICTRL |= bit1; // clear timer when counter reaches value
ericbisson 7:5501dbea5650 58 LPC_RIT->RICTRL |= bit3; // enable timer
ericbisson 7:5501dbea5650 59
ericbisson 7:5501dbea5650 60 //enable interrupt
ericbisson 7:5501dbea5650 61 NVIC_SetPriority(RIT_IRQn, 31);
ericbisson 7:5501dbea5650 62 NVIC_EnableIRQ(RIT_IRQn);
ericbisson 7:5501dbea5650 63 };
ericbisson 4:87e9b434bb4d 64
ericbisson 2:c6465d4e82d2 65 int main() {
ericbisson 7:5501dbea5650 66 rit_init();
ericbisson 0:c637467eeb8f 67
ericbisson 8:5b87b1f9d91f 68 ThreadLecture.start(read);
ericbisson 0:c637467eeb8f 69
ericbisson 3:3ecbcc05bc85 70 while(true) {
ericbisson 7:5501dbea5650 71 // TODO: Mettre ici le code pour l'input et l'envoie de message
ericbisson 8:5b87b1f9d91f 72 uart.printf("12345");
ericbisson 7:5501dbea5650 73 wait_ms(100);
ericbisson 0:c637467eeb8f 74 }
ericbisson 7:5501dbea5650 75 };