gabrielaozegovic

10 - 3

Jan 17th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #define F_CPU 7372800UL
  2.  
  3. #include <avr/io.h>
  4. #include <stdlib.h>
  5. #include <util/delay.h>
  6. #include <avr/interrupt.h>
  7. #include "lcd.h"
  8.  
  9. void write2lcd(uint16_t val){
  10. lcd_clrscr();
  11.  
  12. char adcStr[16];
  13. itoa(val, adcStr, 10); //pretvara int u string ovisno o bazi (dec - 10, bin - 2)
  14.  
  15. lcd_puts(adcStr);
  16.  
  17. }
  18.  
  19. ISR(ADC_vect){ //dok konverzija zavrsi skoci na ADC vektor jer smo enableali vektor za prekid (adie)
  20. uint16_t val = ((ADC * 5.0/1024) - 0.5) * 1000/10; //5 je referentni napon, drugo je broj odjeljaka(?)
  21. //ovo *1000 znaci pretvordba u mV, i /10 radi drugog stupca u datasheetu
  22. write2lcd(val);
  23.  
  24. }
  25.  
  26. int main(){
  27.  
  28. //init LCDa
  29. DDRD = _BV(4);
  30. TCCR1A = _BV(COM1B1) | _BV(WGM10);
  31. TCCR1B = _BV(WGM12) | _BV(CS10);
  32.  
  33. OCR1B = 50;
  34. lcd_init(LCD_DISP_ON);
  35. lcd_clrscr();
  36.  
  37. //init TC0
  38.  
  39. //init ADCa
  40. 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
  41.  
  42. ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADIE); // odabrali smo prescaler 64 jer nebitno
  43. sei();
  44.  
  45. while(1){
  46. ADCSRA |= _BV(ADSC); // RUČNO POKRETANJE
  47.  
  48. _delay_ms(100);
  49.  
  50. }
  51.  
  52. }
Add Comment
Please, Sign In to add comment