/* adc adatok időközönkénzi kiírása külső eepromba, próbálkozás

 *a program alapául szolgáló forrás:
      PICCOLO project
      Copyright (c) 2009-2010 Istvan Cserny (cserny@atomki.hu)
 *
 */

#include "piccolo_all.h"
#include <i2c.h>
#include <adc.h>
#define USE_OR_MASKS  		//"VAGY" művelettel egyesíthető makrók legyenek
#define RD16_ON 0x80   		//T1CON közvetlen írásához ez a "jó" makró
#include "timers.h"   		//T1CON makróit akarjuk használni
#include <eepromkez.c>


/*


*/


/*** VÁLTOZÓK ********************************************************/
unsigned int adat;
char uc,uv;
//char led[8];
int ix,			//ciklushoz
	mem, 			//amit kiolvas a memóriából
	menteni;		//jelzés a mentésre
long int ido_1;
volatile unsigned char hour, 	// óra
			min,   	//perc
			sec;   	//másodperc


/*** INTERRUPT KISZOLGÁLÓ ELJÁRÁSOK **********************************/
#if defined(USE_INTERRUPT)
	///Magas prioritású programmegszakítás kiszolgálása
	#pragma interrupt hi_isr
	void hi_isr() {
	#if defined(USB_INTERRUPT)
	    USBDeviceTasks(); //--- USB programmegszakítás kiszolgálása
	#endif  //USB_INTERRUPT
	}
	///Alacsony prioritású programmegszakítás kiszolgálása
	#pragma interruptlow lo_isr
	void lo_isr() {
		
		if (PIR1bits.TMR1IF && PIE1bits.TMR1IE) {
        if ((sec+=2)>59) { 	//két másodpercenként történik megszakítás
            sec=0;
            mLED_1_Toggle();		//lássam megy e, villog a led mindig, ide jön majd a hőmérő mentésének az időzítése
            if (++min>59) {		//ez is egy átvett rész
                min=0;
                if (++hour>23) hour=0;
            }
        }
        PIR1bits.TMR1IF=0;   	//Timer1 interrupt jelzőbitjének törlése
    }

			
	}
#endif //USE_INTERRUPT

/*********************************************************************
 *    FŐPROGRAM:  USB CDC demo                                       *
 *********************************************************************/
void main(void)

 {
//unsigned char SW1_state;

  ADCON0 = 0;			
  ADCON1 = 0;
  
OpenI2C(MASTER,SLEW_OFF);	// I2C megnyitása
//-- A megszakítási rendszer inicializálása -----------------
    RCONbits.IPEN=1;   		//Kétszintű megszakítási mód beállítása
    INTCONbits.GIEH=1;   	//A magas prioritású interrupt engedélyezése
    INTCONbits.GIEL=1;   	//Az alacsony prioritású interrupt engedélyezése
    InitializeSystem();   	//USB, LEDport, SW1 inicializálása
//-- Timer1 konfigurálása saját órával (T1OSC)
    T1CON = RD16_ON    		//TMR1 16-bites írás/olvasás mód
            | T1_PS_1_1   	//Nincs előosztás
            //| T1_OSC1EN_off   	//T1OSC bekapcsolása
            //| T1_SYNC_EXT_ON  	//Külső bemenőjel szinkronizálása
            | T1_SOURCE_INT; 	//Külső jelforrás lépteti a TMR1 számlálót
    TMR1H=0;               	//TMR1 törlése
    TMR1L=0;
    IPR1bits.TMR1IP=0;   	//Timer1 megszakítás alacsony prioritású legyen
    PIR1bits.TMR1IF=0;   	//Timer1 interrupt jelzőbitjének törlése
    PIE1bits.TMR1IE=1;   	//Timer1 interrupt engedélyezése
    T1CONbits.TMR1ON = 1;    	//Elindítja Timer1-et
mInitSwitch1()
ido_1=1;  
    while (1) {
//--- Új parancsra várunk. A parancs #-jellel kezdődik
        do {
            uv=usb_cdc_getc();
		usb_cdc_putc(';');			            
			            usb_cdc_putc(0x0D);             //Kocsi vissza (CR) csak ellenőrzésnek, minden #a után 1*fut le
			            usb_cdc_putc(0x0A);             //Soremelés (LF)
			



        } while (uv!='#');
        uc=usb_cdc_getc();
        switch (uc){
	        case 'a':{
		        
			        	
			            mem = ExtEERead(ix);		//ha ezt a két sort kiveszem elküldia ";"-őt,
			            usb_cdc_putc(mem);		// ha benne van, nem megy
			            usb_cdc_putc(';');			            
			            usb_cdc_putc(0x0D);             //Kocsi vissza (CR)
			            usb_cdc_putc(0x0A);             //Soremelés (LF)
			        
				        }
	        
	       } 
        
        




       /* usb_cdc_putc(0x0D);             //Kocsi vissza (CR)
        usb_cdc_putc(0x0A);             //Soremelés (LF)*/

			
			
    } //while
}     //main
/******** Főprogram vége *********************************************/
