@@ -77,126 +77,136 @@ template <class T> // easy printing multiple variables with separator ','
7777}
7878*/
7979void SWscope::start (byte _channels, int _preSamples,
80- unsigned int _recordLenght) {
81- ptr = samples = triggerPtr = preSamples = triggered = 0 ;
82- stopPtr = 32767 ;
83- samplingOn = 1 ;
84- channels = _channels;
85- recordLenght = maxScopeBytes / (sizeof (short ) * channels);
86- if (_recordLenght <= recordLenght)
87- recordLenght = _recordLenght;
88- if (abs (_preSamples) <= recordLenght)
89- preSamples = _preSamples;
80+ unsigned int _recordLenght)
81+ {
82+ ptr = samples = triggerPtr = preSamples = triggered = 0 ;
83+ stopPtr = 32767 ;
84+ samplingOn = 1 ;
85+ channels = _channels;
86+ recordLenght = maxScopeBytes / (sizeof (short ) * channels);
87+ if (_recordLenght <= recordLenght)
88+ recordLenght = _recordLenght;
89+ if (abs (_preSamples) <= recordLenght)
90+ preSamples = _preSamples;
9091}
9192
92- void SWscope::showIfReady () {
93- if (!canShow)
94- return ;
95- canShow = 0 ;
96- Serial.begin (115200 ); // HIER doen Serial part moet buiten de bibliotheek
97- // interrupts(); // hoeft niet
98- while (!Serial)
99- ; // wait on Serial Monitor
100- Serial << " \n usPerDiv: " << usPerDiv << " \n ptr, values " ;
101- ptr = stopPtr;
102- do {
103- if (channels == 1 )
104- Serial << endl << ptr, ringBuffer.chA [ptr];
105- if (channels == 2 )
106- Serial << endl << ptr, ringBuffer.chAB [ptr][0 ], ringBuffer.chAB [ptr][1 ];
107- if (channels == 3 )
108- Serial << endl
109- << ptr,
110- ringBuffer.chABC [ptr][0 ], ringBuffer.chABC [ptr][1 ],
111- ringBuffer.chABC [ptr][2 ];
112- if (channels == 4 )
113- Serial << endl
114- << ptr,
115- ringBuffer.chABCD [ptr][0 ], ringBuffer.chABCD [ptr][1 ],
116- ringBuffer.chABCD [ptr][2 ], ringBuffer.chABCD [ptr][3 ];
117- if (ptr == triggerPtr)
118- Serial << " trigger" ;
119- ptr = calcPtr (ptr + 1 );
120- } while (ptr != stopPtr);
121- stopPtr = 32767 ;
93+ void SWscope::showIfReady ()
94+ {
95+ if (!canShow)
96+ return ;
97+ canShow = 0 ;
98+ Serial.begin (115200 ); // HIER doen Serial part moet buiten de bibliotheek
99+ // interrupts(); // hoeft niet
100+ while (!Serial)
101+ ; // wait on Serial Monitor
102+ Serial << " \n usPerDiv: " << usPerDiv << " \n ptr, values " ;
103+ ptr = stopPtr;
104+ do {
105+ if (channels == 1 )
106+ Serial << endl
107+ << ptr,
108+ ringBuffer.chA [ptr];
109+ if (channels == 2 )
110+ Serial << endl
111+ << ptr,
112+ ringBuffer.chAB [ptr][0 ], ringBuffer.chAB [ptr][1 ];
113+ if (channels == 3 )
114+ Serial << endl
115+ << ptr,
116+ ringBuffer.chABC [ptr][0 ], ringBuffer.chABC [ptr][1 ],
117+ ringBuffer.chABC [ptr][2 ];
118+ if (channels == 4 )
119+ Serial << endl
120+ << ptr,
121+ ringBuffer.chABCD [ptr][0 ], ringBuffer.chABCD [ptr][1 ],
122+ ringBuffer.chABCD [ptr][2 ], ringBuffer.chABCD [ptr][3 ];
123+ if (ptr == triggerPtr)
124+ Serial << " trigger" ;
125+ ptr = calcPtr (ptr + 1 );
126+ } while (ptr != stopPtr);
127+ stopPtr = 32767 ;
122128}
123129
124130void SWscope::stop () { stopPtr = calcPtr (ptr + 1 ); }
125131
126132void SWscope::probeA (short valueA) // 1 channel
127133{
128- if (samplingOn) {
129- ringBuffer.chA [ptr] = valueA;
130- sampleControl ();
131- }
134+ if (samplingOn) {
135+ ringBuffer.chA [ptr] = valueA;
136+ sampleControl ();
137+ }
132138}
133139
134140void SWscope::probeAB (short valueA, short valueB) // 2 channels
135141{
136- if (samplingOn) {
137- ringBuffer.chAB [ptr][0 ] = valueA;
138- ringBuffer.chAB [ptr][1 ] = valueB;
139- sampleControl ();
140- }
142+ if (samplingOn) {
143+ ringBuffer.chAB [ptr][0 ] = valueA;
144+ ringBuffer.chAB [ptr][1 ] = valueB;
145+ sampleControl ();
146+ }
141147}
142148
143149void SWscope::probeABC (short valueA, short valueB, short valueC) // 3 channels
144150{
145- if (samplingOn) {
146- ringBuffer.chABC [ptr][0 ] = valueA;
147- ringBuffer.chABC [ptr][1 ] = valueB;
148- ringBuffer.chABC [ptr][2 ] = valueC;
149- sampleControl ();
150- }
151+ if (samplingOn) {
152+ ringBuffer.chABC [ptr][0 ] = valueA;
153+ ringBuffer.chABC [ptr][1 ] = valueB;
154+ ringBuffer.chABC [ptr][2 ] = valueC;
155+ sampleControl ();
156+ }
151157}
152158
153159void SWscope::probeABCD (short valueA, short valueB, short valueC,
154- short valueD) // 4 channels
160+ short valueD) // 4 channels
155161{
156- if (samplingOn) {
157- ringBuffer.chABCD [ptr][0 ] = valueA;
158- ringBuffer.chABCD [ptr][1 ] = valueB;
159- ringBuffer.chABCD [ptr][2 ] = valueC;
160- ringBuffer.chABCD [ptr][3 ] = valueD;
161- sampleControl ();
162- }
162+ if (samplingOn) {
163+ ringBuffer.chABCD [ptr][0 ] = valueA;
164+ ringBuffer.chABCD [ptr][1 ] = valueB;
165+ ringBuffer.chABCD [ptr][2 ] = valueC;
166+ ringBuffer.chABCD [ptr][3 ] = valueD;
167+ sampleControl ();
168+ }
163169}
164170
165- void SWscope::sampleControl () { // doen micros weggelaten if(samples == 0)
166- // sample0_us = micros();
167- samples++;
168- ptr = calcPtr (ptr + 1 );
169- if (ptr == stopPtr) {
170- samplingOn = 0 ;
171- canShow = 1 ;
172- unsigned long stop_us; // doen = micros(); // to avoid delay, start with
173- // this
174- usPerDiv = samples > 1 ? (stop_us - sample0_us) / (samples - 1 )
175- : 0 ; // is not exact?
176- }
171+ void SWscope::sampleControl ()
172+ { // doen micros weggelaten if(samples == 0)
173+ // sample0_us = micros();
174+ samples++;
175+ ptr = calcPtr (ptr + 1 );
176+ if (ptr == stopPtr) {
177+ samplingOn = 0 ;
178+ canShow = 1 ;
179+ unsigned long stop_us; // doen = micros(); // to avoid delay, start with
180+ // this
181+ usPerDiv = samples > 1 ? (stop_us - sample0_us) / (samples - 1 )
182+ : 0 ; // is not exact?
183+ }
177184}
178185
179- unsigned int SWscope::calcPtr (int _ptr) {
180- if (_ptr >= recordLenght)
181- return (_ptr - recordLenght); // happens most frequent
182- if (_ptr < 0 )
183- return (_ptr + recordLenght);
184- return _ptr;
186+ unsigned int SWscope::calcPtr (int _ptr)
187+ {
188+ if (_ptr >= recordLenght)
189+ return (_ptr - recordLenght); // happens most frequent
190+ if (_ptr < 0 )
191+ return (_ptr + recordLenght);
192+ return _ptr;
185193}
186194
187- void SWscope::trigger () {
188- if (!triggered) {
189- triggerPtr = ptr;
190- stopPtr = calcPtr (triggerPtr - preSamples);
191- triggered = 1 ;
192- }
195+ void SWscope::trigger ()
196+ {
197+ if (!triggered) {
198+ triggerPtr = ptr;
199+ stopPtr = calcPtr (triggerPtr - preSamples);
200+ triggered = 1 ;
201+ }
193202}
194203
195- void SWscope::testBuffer () {
196- start (1 );
197- for (int i = 0 ; i < 25000 ; i++) {
198- if (i == 0 )
199- trigger ();
200- probeA (i);
201- }
204+ void SWscope::testBuffer ()
205+ {
206+ start (1 );
207+ for (int i = 0 ; i < 25000 ; i++) {
208+ if (i == 0 )
209+ trigger ();
210+ probeA (i);
211+ }
202212}
0 commit comments