#define F_CPU 8000000
#define LCD_LINES 4
#define LCD_DISP_LENGTH 20
#define LCD_PORT PORTB ///< port for the LCD lines
#define LCD_DATA0_PORT LCD_PORT ///< port for 4bit data bit 0
#define LCD_DATA1_PORT LCD_PORT ///< port for 4bit data bit 1
#define LCD_DATA2_PORT LCD_PORT ///< port for 4bit data bit 2
#define LCD_DATA3_PORT LCD_PORT ///< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 ///< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 ///< pin for 4bit data bit 1
#define LCD_DATA2_PIN 6 ///< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 ///< pin for 4bit data bit 3
#define LCD_RS_PORT PORTC ///< port for RS line
#define LCD_RS_PIN 7 ///< pin for RS line
#define LCD_RW_PORT PORTC ///< port for RW line
#define LCD_RW_PIN 6 ///< pin for RW line
#define LCD_E_PORT PORTC ///< port for Enable line
#define LCD_E_PIN 5 ///< pin for Enable line
#include "s/g.h"
#include "s/rprintf.c"
#include "s/lcd.c"
#include "s/adc.c"
#include "util/delay.h"
//! main functie, start programma, moet altijd aanwezich zijn
int main(void){
outb(DDRA, 0x0);
uartInit(UART_FULL, 19200);
rprintfInit(uartSendByte);
rprintf("UART PRESENTn");
lcdInit(LCD_DISP_ON);
// adcInit(ADC_clokc_prescaleer, ADC_referentie);
// Prescalers: 128, 64, 32, 16, 8, 4, 2
// hoe groter de prescaler (128) hoe naukeuriger
// en stabieler de waarden zullen zijn
// Referentie: AVCC, AREF, interne 2.56V
adcInit(ADC_P128, ADC_AVCC);
u16 adcWaarde;
u08 buffer[4];
rprintf("ADC testn");
while(1){
// waarde van ADC channel 7 (PA7)
// op de Mega16 zijn 8 channels beschikbaar PA0..7
adcWaarde = adcGet(7);
// Via uart zenden
rprintf("ADC: %dn", adcWaarde);
// op LCD tonen
lcdClr();
lcdPuts("ADC test");
lcdGotoXY(0, 1);
// decimaal
lcdPuts( itoa(adcWaarde, buffer, 10) );
lcdGotoXY(0, 2);
// binair
lcdPuts( itoa(adcWaarde, buffer, 2) );
_delay_ms(500);
}
return 0;
}