* Author: tom * * Copyright (c) 2011 Thomas M. Sasala. All right reserved. * * This work is licensed under the Creative Commons * Attribution-NonCommercial-ShareAlike 3.0 Unported License. * To view a copy of this license, visit * http://creativecommons.org/licenses/by-nc-sa/3.0/ * or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, * California, 94041, USA. */ #include "Lcd.h" /** Create instance */ Lcd LCD = Lcd(); /** * Constructor */ Lcd::Lcd() { lcdPort = SoftwareSerial(LCD_RX_PIN,LCD_TX_PIN); } /** * Initializes the display * */ void Lcd::initialize() {
int main(void) { uint16_t CalcCRC16(uint8_t data_array[], int data_lenght); int i; /////////////////////OSCYLATOR 32MHZ/////////////////////////////////////////// init_osc32(); ////KONFIGURACJA ADC//////////////////////////////////////////////////////////////// konfiguracja_adc(); /////////UART//////////////////////////////////////////////////////////////////////// PORTC_OUTSET = PIN7_bm; //Let's make PC7 as TX PORTC_DIRSET = PIN7_bm; //TX pin as output PORTC_OUTCLR = PIN6_bm; PORTC_DIRCLR = PIN6_bm; //PC6 as RX setUpSerial(); /////////////////////////////////////////////////////////////////////////////// PORTF_DIR=PIN0_bm; //PORTF_OUTSET=PIN0_bm; //zapalenie diody PORTC.DIRSET = PIN0_bm; // pin C0 jako wyjœcie PORTC.DIRSET = PIN1_bm; // pin C0 jako wyjœcie ////////////////////////Flip//////////////////////////////////////////////// PORTE.DIRCLR = PIN5_bm; // pin E5 jako wejœcie PORTE.PIN5CTRL = PORT_OPC_PULLUP_gc; // podci¹gniêcie do zasilania ////////////////////////////Klawisze gora do³ prawo lewo////////////////////////////////////////// PORTF.DIRCLR = PIN1_bm|PIN2_bm|PIN5_bm|PIN6_bm; PORTF.PIN1CTRL = PORT_OPC_PULLUP_gc|PORT_ISC_FALLING_gc; PORTF.PIN2CTRL = PORT_OPC_PULLUP_gc; PORTF.PIN5CTRL = PORT_OPC_PULLUP_gc; PORTF.PIN6CTRL = PORT_OPC_PULLUP_gc; ///////////////////////////////////Przerwanie INT0///////////////////////////////////////////////////// init_int0(); //////////////////////////TIMER0////////////////////////////////////////////////////// timer(); //////////////////////W£¥CZENIE PRZERWAÑ////////////////////////////////////////// sei(); // globalne w³¹czenie przerwañ //////////////////////////////////////////////////////////////////////////////////////// LcdInit(); // inicjalizacja sterownika LCD LcdGoto(0,0); Lcd("*Inzynierka_DiagBoX*"); // wyœwietlenie napisu LcdGoto(20,0); Lcd("Przedstawia:"); LcdGoto(25,1); Lcd("Marek Wudarczyk"); _delay_ms(1000); LcdClear(); while (1){ LcdClear(); LcdGoto(0,0); LcdDec(ADC); LcdGoto(5,0); Lcd("CNT = "); LcdDec(TCC0.CNT); LcdGoto(0,1); LcdDec(TCC0.PER); LcdGoto(20,1); Lcd("czas:"); LcdDec(c); i=usart_getc(); if(i==2){ while(1){ uint8_t i,j=0; i=usart_getc(); uint16_t ADC = ADC_GetResults(); uint8_t buff[] = {mlody_bajt(ADC),stary_bajt(ADC)}; buff[2] = mlody_bajt(CalcCRC16(buff,2)); buff[3] = stary_bajt(CalcCRC16(buff,2)); while(j<4){ sendChar(buff[j]); j++; } LcdClear(); Lcd("CRC:"); LcdDec(buff[2]); _delay_ms(10); if(i == 2){ break; } } i=0; } if(i==1){ PORTF_OUTTGL=PIN0_bm; i=0; } if(!(PORTE.IN & PIN5_bm)) /* je¿eli przycisk FLIP jest wciœniêty*/ { while(1){ uint32_t licz; licz++; if((licz>15100)&&(PORTE.IN & PIN5_bm)){ licz=0; c+=10; break; } } } _delay_ms(100); } }