/* L7+ Program afisare continua date A/D in virgula flotanta pe Terminal. Tx conectat la P1.2 Rx conectat ls P1.3 Convertorul A/D este configurat sa genereze intrupere la sfarsit conversie, rutina de tratare fiind denumita adch. Timpul de conversiei pe 12 biti este de aprox 1,5 microsecunde. La intrarea P2.6 este conectat cursorul unui potentiometru conectat intre 3,3V si GND. In acest mod pot fi generate tensiuni specifice unor senzori cu iesiri analogice. ! In etapa de generare proiect se vor activa optiunile pentru virgula flotanta a functiei printf - altfel nu e posibila afisare, desi nu sunt erori la compilare. */ #include int analog; // rezultat conversie AD void adch() // rutina tratare intrerupere AF { analog = ADC_MEASUREMENT_GetResult(&adc); //lectura data } void delay(int j) { for (int i=0;i<0xffff*j;i++); // temporizare } int main(void) { char ad_float[6]; // bufer date convertor A/D float x; // valoarea tensiunii de la intrare in volti DAVE_Init(); // initializare DAVE ADC_MEASUREMENT_Init(&adc); // este inclusa si in DAVE_Init() while(1U) { ADC_MEASUREMENT_StartConversion(&adc); // genereaza intr. ls sfarsit delay(1); // optional x=5*analog/4096; // conversie in volti sprintf(ad_float, "%1.4f", x); // foloseste lungime buffer UART_Transmit(&UART_0, ad_float, sizeof(ad_float));// afisare tensiune if(!UART_IsTxBusy(&UART_0)) // liber transmisie UART_TransmitWord(&UART_0,'\r'); // inceput linie if(!UART_IsTxBusy(&UART_0)) UART_TransmitWord(&UART_0,'\n'); // linie noua delay(4); } return 0; }