Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 7372800UL
- #include <avr/io.h>
- #include <stdlib.h>
- #include <util/delay.h>
- #include <avr/interrupt.h>
- #include "lcd.h"
- void write2lcd(uint16_t val){
- lcd_clrscr();
- char adcStr[16];
- itoa(val, adcStr, 10); //pretvara int u string ovisno o bazi (dec - 10, bin - 2)
- lcd_puts(adcStr);
- }
- ISR(ADC_vect){ //dok konverzija zavrsi skoci na ADC vektor jer smo enableali vektor za prekid (adie)
- uint16_t val = ((ADC * 5.0/1024) - 0.5) * 1000/10; //5 je referentni napon, drugo je broj odjeljaka(?)
- //ovo *1000 znaci pretvordba u mV, i /10 radi drugog stupca u datasheetu
- write2lcd(val);
- }
- int main(){
- //init LCDa
- DDRD = _BV(4);
- TCCR1A = _BV(COM1B1) | _BV(WGM10);
- TCCR1B = _BV(WGM12) | _BV(CS10);
- OCR1B = 50;
- lcd_init(LCD_DISP_ON);
- lcd_clrscr();
- //init TC0
- //init ADCa
- ADMUX = _BV(REFS0) | 3; //jer je kanal 0, a kako njegova vrijednost iznosi binarnom zapisu stupnja kanal (0 = 0; 4 = 4) mozemo imat samo pomak za 4, i ovisi koja je vrijednost tu na taj PA port spojimo
- ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADIE); // odabrali smo prescaler 64 jer nebitno
- sei();
- while(1){
- ADCSRA |= _BV(ADSC); // RUČNO POKRETANJE
- _delay_ms(100);
- }
- }
Add Comment
Please, Sign In to add comment