Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3.  
  4. volatile unsigned int int_tic = 0;
  5. volatile unsigned long tic;
  6.  
  7. long int old_f;
  8.  
  9. #define I2C_ADR 0x3f
  10. #define symbolscount 20
  11. #define stringscount 4
  12.  
  13. int dataPin  = 4;   //Пин подключен к DS входу 74HC595
  14. int latchPin = 6;  //Пин подключен к ST_CP входу 74HC595
  15. int clockPin = 7; //Пин подключен к SH_CP входу 74HC595
  16.  
  17. #define OUT_T 50 //период через который на экране будут обновляться значения частоты
  18.  
  19.  
  20. LiquidCrystal_I2C lcd(I2C_ADR, symbolscount, stringscount); //i2c-адрес, кол-во символов, кол-во строк
  21.  
  22. void setup(){
  23.    delay(1000); //время наподумать
  24.   //Serial.begin(9600);
  25.   pinMode (5, INPUT); // вход сигнала T1 (only для atmega328)
  26.  
  27.   TCCR2A = 1 << WGM21; //CTC mode
  28.   TIMSK2 = 1 << OCIE2A; OCR2A = 124 ; //прерывание каждые 8мс
  29.   TCCR2B = (1 << CS22) | (1 << CS21) | (1 << CS20); //делитель 1024
  30.  
  31.   TCCR1A = 0; TIMSK1 = 1 << TOIE1; //прерывание по переполнению
  32.   TCCR1B = (1 << CS10) | (1 << CS11) | (1 << CS12); //тактировани от входа Т1
  33.  
  34.  
  35.   lcd.begin();
  36.   lcd.backlight();
  37.  
  38.   long int f_out = tic;  
  39. }
  40.  
  41.  
  42. ISR (TIMER1_OVF_vect) {
  43.   int_tic++;
  44. }
  45.  
  46. ISR (TIMER2_COMPA_vect) {
  47.   static byte n = 1;
  48.   if (n == 125) {
  49.     tic = ((uint32_t)int_tic << 16) | TCNT1; //сложить что натикало
  50.     int_tic = 0;
  51.     TCNT1 = 0; n = 0;
  52.   }
  53.   n++;
  54. }
  55.  
  56.  
  57. void loop(){
  58.  
  59.   if (old_f != tic)
  60.     freq_out(tic);
  61.  
  62.   /*for (char x=33; x<=125; x++)
  63.   {
  64.   lcd.print(x); //вывод переменной на дисплей
  65.   delay(250);
  66.  
  67.   if (x==125)
  68.   lcd.clear(); //очистка дисплея
  69.   }*/
  70. }
  71.  
  72.  
  73. void freq_out(long int f) {
  74.   lcd.clear();
  75.   lcd.print(f);
  76.  
  77.   old_f = f;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement