//*****************************************************************************
// File Name : test.c
//
// Title : Priklad na pouzitie kniznice avrlib a stampplot
// Revision : 1.0
// Notes :
// Target MCU : Atmel AVR series
// Editor Tabs : 4
//
// Revision History:
// When Who Description of change
// ----------- ----------- -----------------------
// 18-Nov-2005 balogh Created the program
//*****************************************************************************
//----- Include Files ---------------------------------------------------------
#include <avr/io.h> // include I/O definitions (port names, pin names, etc)
#include <avr/signal.h> // include "signal" names (interrupt names)
#include <avr/interrupt.h> // include interrupt support
#include "global.h" // include our global settings
#include "uart.h" // include uart function library
#include "rprintf.h" // include printf function library
#include "a2d.h" // include A/D converter function library
#include "timer.h" // include timer function library (timing, PWM, etc)
#include "lcd.h"
//----- Begin Code ------------------------------------------------------------
int main(void)
{
u08 a=0;
int i,j;
// inicializacia kniznicnych funkcii
// initializacia UART (seriova linka)
uartInit();
// nastavime prenosovu rychlost 9600 baudov pre v/v funkcie (napr. rprintf)
uartSetBaudRate(9600);
// inicializacia v/v funkcie rprintf
// - ako parameter pouzijeme 'uartSendByte' co znamena, ze
// vsetky funkcie z kniznice rprintf.h budu mat vystup presmerovany
// na seriovu linku
// - rprintf mozeme pouzit na cokolvek, co zvlada znakovy vystup
// Staci si napisat vlastnu funkciu, ktora ma jediny parameter typu
// unsigned char a preinicializujete rprintf so smernikom na tuto funkciu:
// napriklad takto: rprintfInit(lcdSendByte);
rprintfInit(uartSendByte);
// zapneme a inicializujeme A/D prevodnik
a2dInit();
// inicializujeme aj casovace
timerInit();
// a posleme na seriovu linku (do nejakeho terminalu na PC) kratku spravu,
// ze az potialto vsetko fungovalo...
rprintf("\r\nInicializacia a pripojenie OK!\r\n");
/* Inicializacia a konfiguracia programu na kreslenie grafov */
timerPause(500); // Kratka 500 ms prestavka aby sa
// vyprazdnil buffer v PC
rprintf("!RSET\r"); // Reset vymaze okno
rprintf("!TITL Lahky Priklad\r"); // Nazov okna
rprintf("!SPAN 0, 255\r"); // Rozpatie pre analogove veliciny
rprintf("!PNTS 300\r"); // Pocet bodov ktore kreslime
rprintf("!TMAX 30\r"); // Casova os 30 sekund (t.j. Tvz=0,1 s)
rprintf("!MAXS\r"); // Na konci stoj
rprintf("!TSMP ON\r"); // Casove znacky ANO
rprintf("!CLRM\r"); // Vymaz okienko na spravy
rprintf("!PLOT ON\r"); // Kreslenie ANO
rprintf("!RSET\r"); // Restart s novymi parametrami
// Kratka 200 ms prestavka aby sa
timerPause(200); // vyprazdnil buffer v PC
DDRA = 0x00; // Kvoli AD prevodniku
PORTA = 0x00;
rprintf("Kreslenie zacina: \r\n"); // sprava pre uzivatela do okienka pri grafe
/* Cyklus v ktorom si kreslime jednu analogovu velicinu a dve cislicove */
for (i=1;i<300;i++) // nakreslime 300 bodov
{
rprintf("%d\r",a2dConvert8bit(1)); // Dekadicke cislo sa chape ako hodnota pre graf
// Ak chceme kreslit v zlozitejsej verzii viac velicin, oddeluju sa ciarkou:
// rprintf("%d,%d\r",a2dConvert8bit(0),a2dConvert8bit(1));
rprintf("%%%d%d\r",(inb(PIND)&0x04?1:0),(inb(PIND)&0x10?1:0));
// Retazec %01 sa zobrazi ako dve bitove premenne, nula a jednotka
timerPause(100); // "Perioda vzorkovania" 0,1 s
}
rprintf("Koniec prekazky - hotovo!\r\n");
/*
// display a bargraph of the analog voltages on a2d channels 0,1
while(1)
{
lcdProgressBar(a2dConvert8bit(1), 255, 16);
lcdGotoXY(0,1);
rprintf("x: %d", a2dConvert8bit(1));
rprintf(" No.: %d", a++);
//lcdGotoXY(0,1);
//lcdProgressBar(a2dConvert8bit(1), 255, 20);
//rprintf(" Y: %d", a2dConvert8bit(1));
}
*/
return 0;
}