Hardware Design: SIE
Sign in or create your account | Project List | Help
Hardware Design: SIE Git Source Tree
Root/
Source at commit 07888ac4c42cdb4dafe37878d15e25f9fe702170 created 13 years 10 months ago. By Juan64Bits, Adding Vm and Vrms measure for Scope example with basic signals | |
---|---|
1 | #include "mainwindow.h" |
2 | #include "ui_mainwindow.h" |
3 | #include <QDebug> |
4 | |
5 | #include <QTime> |
6 | #include <math.h> |
7 | |
8 | MainWindow::MainWindow(QWidget *parent) |
9 | : QMainWindow(parent), ui(new Ui::MainWindow) |
10 | { |
11 | ui->setupUi(this); |
12 | connect(this,SIGNAL(refresh()),ui->Graph, SLOT(repaint())); |
13 | ui->Graph->setPointsPerPlot(120); |
14 | ui->Graph->setVoltsPerDiv(205); |
15 | |
16 | timer1 = new QTimer(this); |
17 | timer1->start(50); |
18 | connect(timer1, SIGNAL(timeout()), this, SLOT(updateGraph())); |
19 | |
20 | ADC1 = new ADCw; |
21 | ADC1->testADC(); |
22 | ADC1->setBufferLen(240); |
23 | ADC1->setClockDiv(ADC_SPI_CLKDIV_MIN); //Max. speed |
24 | ADC1->setMuxChannels(1); |
25 | printf("\nTaking 120 samples by channel at Fs=99KHz (trigger=50ms)\n"); |
26 | } |
27 | |
28 | MainWindow::~MainWindow() |
29 | { |
30 | delete ui; |
31 | } |
32 | |
33 | void MainWindow::updateGraph() |
34 | { |
35 | JZ_REG * dataADC; |
36 | |
37 | int tempD; |
38 | deltaCountCH1=0; deltaCountCH2=0; |
39 | idxCH1=0; idxCH2=0; |
40 | |
41 | dataADC=ADC1->takeSamplesADC(0); |
42 | for(int i=0; i< 240/2; i++) |
43 | { |
44 | tempD = dataADC[i]&0x0FFF; |
45 | //tempD = cos(2.6*PI*i/200)*0x200+0x200; |
46 | ui->Graph->addPoint1(tempD+0x3ff); |
47 | |
48 | sign2_CH1 = getSign(tempD-0x200); |
49 | if((sign1_CH1!=sign2_CH1) & (i>1)) |
50 | deltaCountCH1++; |
51 | |
52 | if((deltaCountCH1>0) & (deltaCountCH1<3)) |
53 | { |
54 | valCH1[idxCH1]= tempD-0x200; |
55 | idxCH1 ++; |
56 | } |
57 | |
58 | sign1_CH1=sign2_CH1; |
59 | |
60 | tempD = (dataADC[i]>>16)&0x0FFF; |
61 | //tempD = cos(5*PI*i/200)*0x200+0x200; |
62 | ui->Graph->addPoint2(tempD); |
63 | |
64 | sign2_CH2 = getSign(tempD-0x200); |
65 | if((sign1_CH2!=sign2_CH2) & (i>1)) |
66 | deltaCountCH2++; |
67 | |
68 | if((deltaCountCH2>0) & (deltaCountCH2<3)) |
69 | { |
70 | valCH2[idxCH2]= tempD-0x200; |
71 | idxCH2 ++; |
72 | } |
73 | |
74 | sign1_CH2=sign2_CH2; |
75 | } |
76 | |
77 | double Vrms=0, Vm=0; |
78 | for(int i=0; i<idxCH1; i++) |
79 | { |
80 | Vrms += pow(valCH1[i],2)/idxCH1; |
81 | Vm += valCH1[i]/idxCH1; |
82 | } |
83 | |
84 | if(deltaCountCH1>2) |
85 | { |
86 | ui->txtVrmsCH1->setText(QString::number(sqrt(Vrms))); |
87 | ui->txtVmCH1->setText(QString::number(Vm)); |
88 | } |
89 | else |
90 | { |
91 | ui->txtVrmsCH1->setText("???"); |
92 | ui->txtVmCH1->setText("???"); |
93 | } |
94 | |
95 | Vrms=0; Vm=0; |
96 | for(int i=0; i<idxCH2; i++) |
97 | { |
98 | Vrms += pow(valCH2[i],2)/idxCH2; |
99 | Vm += valCH2[i]/idxCH2; |
100 | } |
101 | |
102 | if(deltaCountCH2>2) |
103 | { |
104 | ui->txtVrmsCH2->setText(QString::number(sqrt(Vrms))); |
105 | ui->txtVmCH2->setText(QString::number(Vm)); |
106 | } |
107 | else |
108 | { |
109 | ui->txtVrmsCH2->setText("???"); |
110 | ui->txtVmCH2->setText("???"); |
111 | } |
112 | |
113 | emit refresh(); |
114 | } |
115 |
Branches:
master