elektronek

Mirda Lizner - tester Zenerek

May 4th, 2020
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. /*
  2.  * ATTINY13A - clock 1,2MHz
  3.  * PB2 - vstup z delice 1:10
  4.  * PB3 - TM1637-CLK
  5.  * PB4 - TM1637-DIO
  6.  * pouzita knihovna: https://github.com/lpodkalicki/attiny-tm1637-library
  7.  */
  8.  
  9. #define F_CPU 1200000ul
  10. #include <util/delay.h>
  11. #include <avr/io.h>
  12. #include "tm1637/tm1637.h"
  13.  
  14. void adc_init();
  15. uint16_t adc_read();
  16.  
  17. int main(void)
  18. {
  19.     TM1637_init(1/*enable*/, 5/*brightness*/);
  20.     adc_init();
  21.  
  22.     while (1) {
  23.         uint16_t analog=adc_read();
  24.         uint16_t milivolty  = (uint16_t)(uint32_t)(analog * 1000ul / 1023 * 5);
  25.         TM1637_display_digit(0, milivolty/1000);
  26.         TM1637_display_digit(1, milivolty/100 % 10);
  27.         TM1637_display_digit(2, milivolty/10 % 10);
  28.         TM1637_display_digit(3, milivolty % 10);
  29.         _delay_ms(200);
  30.     }
  31. }
  32.  
  33. void adc_init()
  34. {
  35.     DIDR0 = (1<<ADC1D); // PB2 ADC1 disable Digital
  36.     ADMUX = (1<<MUX0);  // PB2 select mux
  37.     ADCSRA = (1<<ADEN)|(1<<ADPS1)|(1<<ADPS0);
  38. }
  39.  
  40. uint16_t adc_read()
  41. {
  42.     ADCSRA |= (1<<ADSC);        // Start konverze
  43.     while(ADCSRA & (1<<ADSC));  // Cekame nez konverze probehne
  44.     return ADC;                 // vratime vysledek
  45. }
Add Comment
Please, Sign In to add comment