//                 Egyszerű fesz mérő. Az LCD vezérlés nincs benne !!

#include "io430.h"
#include "intrinsics.h"
#define ref 322             /* A ref = VCC / ADC10bit = 3,3/1023 = 0,00322
                            hogy ne legyen float = * 100000 = 0,00322 * 100000 = 322              */
#define oszto 413           /* Feszültség osztás. 
            Ellenállás osztóból van kiszámolva = Vout = R1/(R1+R2)
Pl.: Vin = 12, R1 = 15Kohm, R2 = 47Kohm
                                            Vout = (15 / (15 + 47)) * Vin = 0,2419*12 = 2,90
                                   osztó = Vin / Vout = 12 / 2,90 = 4,13                          */
unsigned int akku;

void akku_fesz(void){
  sor(3);                         // kurzor a 3. sorba
  print("Akku fesz:");            // szöveg Lcd-re írása
  lcd_fesz(fesz);
}

void adc(void){
  ADC10CTL1 = INCH_6 + ADC10SSEL_3 + ADC10DIV_3 ;       // A5 bemmenet, ADC óra osztó /4
  ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE;
//-- Vcc & Vss a referencia, ADC10 bekapcsolása és megszakítás engedélyezése --
  ADC10AE0 |= BIT6;                                    //P1.5 Analog bemenet engedélyezése
  ADC10CTL0 |= ENC + ADC10SC;                          // Mintavétel és átalakítás ind
  __low_power_mode_0();                                // LPM0 mód bekapcsolás
  akku = ADC10MEM;                                     // Ad konverzió étréke az ertek-be
}

void main(void){
  
  WDTCTL = WDTPW + WDTHOLD;     // Watchdog tiltás
  BCSCTL1 = CALBC1_1MHZ;        // A gyárilag kalibrált 1 MHz
  DCOCTL = CALDCO_1MHZ;         // DCO frekvencia beállítása
//------------------------- Port beállítások -------------------------------------------------------
  P1SEL |= BIT6;                     // Analóg bemenet
      while(1){
      adc();                         // ADC éerték
      //                               fesz_sz = (akku*(3.3/1023))*4.13;
      fesz_sz = (long)akku * ref;    // A fenti számítások
      fesz_sz *= oszto;
      fesz_sz /= 100000;
      fesz = fesz_sz;                // végeredmény áthelyezése
      akku_fesz();                   // LCD-re írása
      }
}