# How to detect peaks in a microcontroller?

In the context of a microcontroller, I have much less memory and far less processing power. This means, I can only buffer a reasonable window of samples (e.g. 16 or 32), and may not be able to use more advanced curve-fitting options, such as this one.

This plot shows the raw data along with filtered output. The filter in this trial is a leaky-integrator, with alpha = 8.

How can I reliably detect that first peak (and trough) to enable the accumulation of the area shown?

A cleaner trial of raw data (sampled every 50ms):

22279
22279
22267
22277
22277
22276
22279
22275
22276
22280
22279
22278
22277
22277
22280
22279
22280
22278
22279
22280
22274
22280
22274
22278
22275
22276
22277
22279
22276
22279
22280
22286
22278
22276
22280
22278
22284
22279
22280
22277
22279
22281
22274
22281
22274
22280
22283
22279
22277
22278
22282
22286
22276
22277
22276
22278
22277
22274
22281
22276
22279
22277
22277
22285
22273
22276
22281
22277
22285
22275
22283
22281
22281
22280
22275
22276
22272
22277
22284
22273
22280
22273
22278
22278
22274
22277
22272
22276
22282
22272
22273
22282
22280
22278
22280
22282
22283
22272
22273
22275
22281
22280
22278
22282
22282
22281
22278
22284
22280
22276
22280
22280
22280
22273
22274
22281
22279
22273
22280
22282
22279
22281
22282
22276
22277
22282
22280
22278
22278
22280
22277
22271
22279
22282
22282
22276
22275
22280
22272
22271
22281
22279
22283
22280
22280
22274
22277
22278
22282
22283
22274
22272
22275
22278
22280
22278
22278
22271
22279
22283
22281
22277
22282
22277
22275
22277
22277
22280
22281
22282
22282
22280
22280
22282
22279
22278
22279
22277
22283
22280
22279
22273
22278
22282
22279
22276
22279
22280
22275
22281
22279
22282
22283
22281
22278
22277
22282
22279
22281
22280
22281
22273
22280
22273
22277
22282
22292
22297
22314
22323
22334
22339
22332
22328
22321
22309
22305
22299
22299
22292
22290
22288
22278
22283
22277
22276
22272
22268
22264
22262
22259
22256
22249
22247
22246
22242
22236
22240
22239
22232
22230
22230
22226
22217
22218
22211
22216
22212
22210
22211
22209
22208
22201
22202
22195
22199
22191
22195
22195
22195
22191
22184
22183
22179
22172
22183
22183
22172
22180
22174
22176
22178
22177
22176
22177
22167
22172
22174
22167
22164
22169
22163
22164
22171
22164
22161
22171
22161
22161
22168
22164
22163
22167
22164
22155
22165
22159
22156
22161
22157
22156
22163
22160
22157
22163
22162
22163
22159
22162
22156
22160
22161
22156
22161
22154
22158
22159
22162
22162
22161
22158
22152
22163
22154
22160
22164
22156
22160
22162
22160
22155
22165
22157
22156
22162
22162
22167
22163
22162
22159
22161
22158
22162
22166
22158
22155
22157
22162
22162
22156
22160
22166
22158
22166
22167
22164
22165
22157
22160
22166
22166
22167
22165
22169
22169
22167
22169
22164
22167
22172
22171
22170
22169
22167
22171
22165
22169
22173
22169
22173
22175
22175
22175
22171
22168
22169
22175
22169
22173
22176
22176
22179
22176
22177
22177
22181
22177
22171
22181
22176
22177
22174
22180
22184
22179
22177
22174
22181
22183
22177
22181
22178
22184
22187
22182
22184
22184
22182
22184
22185
22185
22184
22187
22185
22185
22185
22190
22183
22192
22187
22188
22189
22188
22189
22189
22190
22194
22190
22194
22190
22192
22195
22193
22192
22195
22190
22192
22194
22193
22197
22198
22198
22194
22193
22196
22196
22199
22198
22199
22196
22199
22200
22202
22196
22196
22202
22198
22200
22203
22202
22204
22204
22201
22201
22200
22195
22206
22203
22199
22209
22207
22208
22207
22207
22205
22211
22208
22205
22207
22203
22205
22208
22209
22199
22209
22211
22206
22208
22210
22211
22210
22212
22211
22210
22213
22207
22213
22213
22213
22209
22211
22211
22215
22216
22218
22215
22218
22213
22217
22213
22217
22215
22219
22219
22215
22221
22211
22217
22220
22218
22221
22215
22217
22217
22217
22219
22218
22218
22220
22219
22221
22220
22220
22221
22224
22220
22224
22225
22224
22222
22222
22222
22221
22226
22220
22226
22222
22220
22225
22227
22224
22226
22225
22224
22223
22227
22227
22224
22227
22226
22226
22227
22227
22230
22230
22230
22228
22229
22228
22230
22229
22226
22231
22231
22228
22227
22230
22230
22231
22230
22230
22231
22227
22227
22233
22230
22231
22231
22231
22231
22238
22233
22234
22235
22233
22232
22233
22236
22233
22234
22236
22237
22234
22236
22237
22230
22235
22240
22234
22233
22239
22236
22239
22240
22233
22238
22234
22234
22234
22235
22238
22240
22236
22240
22237
22236
22236
22235
22241
22239
22234
22244
22237
22241
22242
22242
22240
22242
22242
22240
22239
22240
22243
22242
22240
22234
22238
22242
22240
22244
22241
22242
22242
22242
22241
22242
22241
22245
22242
22247
22244
22243
22242
22245
22246
22245
22238
22245
22244
22247
22246
22242
22248
22245
22244
22246
22246
22247
22246
22247
22247
22251
22247
22239
22250
22241
22246
22247
22249
22245
22252
22245
22247
22247
22248
22250
22246
22251
22248
22248
22245
22247
22249
22249
22249
22249
22245
22250
22248
22253
22241
22250
22251
22251
22252
22245
22250
22255
22252
22252
22253
22249
22253
22253
22251
22252
22251
22251
22252
22252
22251
22253
22254
22252
22258
22258
22249
22254
22256
22252
22249
22246
22255
22254
22254
22251
22255
22255
22252
22253
22254
22255
22257
22257
22254
22255
22255
22253
22257
22257
22253
22257
22257
22257
22250
22258
22254
22255
22255
22257
22256
22257
22252
22254
22254
22253
22257
22248
22260
22259
22259
22257
22259
22259
22259
22261
22261
22260
22260
22260
22260
22259
22259
22260
22261
22261
22261
22260
22259
22258
22262
22262
22263
22256
22256
22261
22259
22262
22259
22256
22256
22255
22263
22263
22264
22254
22254
22257
22261
22255
22262
22263
22263
22263
22258
22258
22259
22264
22264
22265
22262
22262
22261
22263
22263
22260
22258
22262
22256
22264
22264
22264
22260
22260
22264
22262
22262
22265
22260
22260
22259
22267
22267
22263
22264
22264
22264
22260
22260
22261
22258
22258
22267
22260
22260
22263
22267
22267
22259
22260
22260
22266
22264
22264
22259
22271
22271
22262
22261
22261
22268
22269
22269
22258
22263
22263
22262
22268
22268
22269
22263
22269
22269
22272
22272
22265
22264
22264
22268
22270
22270
22266
22261
22261
22265
22266
22272
22272
22270
22270
22263
22274
22274
22262
22266
22266
22271
22265
22265
22265
22267
22267
22269
22272
22272
22272
22272
22269
22268
22261
22261
22266
22266
22270
22271
22271
22270
22271
22265
22265
22271
22271
22264
22270
22270
22264
22272
22267
22267
22272
22272
22268
22271
22267
22271
22272
22264
22264
22269
22269
22268
22271
22267
22268
22270
22270
22267
22275
22274
22268
22275
22275
22271
22275
22265
22268
22274
22274
22268
22277
22267
22266
22275
22275
22269
22276
22276
22269
22276
22267
22267
22276
22269
22274
22273
22273
22271
22277
22277
22267
22274
22271
22271
22277
22271
22270
22280
22270
22270
22274
22274
22274
22276
22267
22271
22280
22272
22270
22275
22272
22272
22275
22271
22273
22278
22273
22273
22271
22279
22279
22270
22271
22279
22279
22271
22278
22278
22274
22274
22281
22275
22275
22273
22276
22275
22278
22275
22273
22274
22274
22274
22271
22274
22274
22271
22271
22276
22268
22274
22271
22271
22269
22274
22273
22275
22275
22271
22273
22273
22281
22273
22273
22273
22277
22277
22277
22272
22271
22271
22271
22275
22275
22277
22275
22277
22273
22273
22279
22273
22273
22272
22275
22275
22274
22276
22276
22277
22275
22275
22273
22275
22276
22276
22276
22273
22273
22276
22281
22281
22275
22276
22276
22278
22275
22275
22277
22271
22271
22280
22275
22275
22276
22277
22277
22271
22276
22276
22279
22275
22275
22278
22278
22278
22277
22277
22277
22277
22276
22276
22279
22274
22274
22278
22279
22279
22278
22279
22279
22277
22275
22275
22282
22279
22279
22276
22278
22278
22277
22276
22276
22276
22272
22276
22280
22276
22276
22279
22278
22280
22277
22280
22277
22282
22278
22268
22277
22283
22281
22278
22279
22279
22279
22281
22275
22275
22280
22277
22277
22276
22281
22280
22280
22277
22281
22281
22279
22280
22278
22282
22282
22281
22282
22282
22283
22280
22278
22278
22282
22275
22282
22280
22281
22274
22280
22280
22283
22279
22281
22281
22280
22282
22282
22274
22284
22284
22279
22279
22280
22284
22274
22274
22274
22281
22283
22274
22274
22280
22282
22284
22284
22277
22279
22279
22280
22276
22277
22285
22278
22281
22281
22276
22280
22280
22277
22282
22282
22283
22279
22277
22277
22276
22278
22276
22282
22282
22277
22277
22284
22283
22283
22283
22283
22283
22284
22278
22280
22279
22279
22279
22275
22279
22279
22284
22284
22283
22284
22279
22279
22285
22283
22280
22278
22278
22279
22280
22278
22276
22282
22281
22281
22276
22278
22278
22278
22278
22286
22286
22282
22280
22278
22278
22278
22278
22280
22280
22286
22286
22279
22279
22281
22281
22279
22278
22283
22281
22282
22282
22280
22280
22283
22280
22282
22282
22283
22283
22284
22284
22280
22280
22277
22277
22283
22283
22280
22284
22284
22284
22285
22285
22282
22283
22283
22278
22280
22280
22283
22281
22284
22283
22282
22282
22284
22285
22286
22282
22283
22284
22284
22285
22285
22281
22280
22281
22281
22283
22285
22285
22285
22282
22286
22284
22280
22282
22282
22281
22285
22283
22283
22286
22284
22284
22281
22281
22287
22284
22285
22284
22283
22282
22282
22282
22283
22284
22284
22287
22285
22285
22286
22286
22283
22285
22285
22285
22288
22284
22282
22283
22282
22286
22287
22285
22285
22284
22283
22286
22285
22285
22281
22276
22286
22286
22284
22285
22283
22290
22290
22288
22286
22285
22284
22284
22285
22285
22287
22285
22285
22286
22288
22287
22287
22285
22285
22285
22289
22289
22286
22286
22286
22286
22288
22288
22287
22286
22289
22287
22285
22285
22286
22286
22287
22287
22287
22288
22288
22281
22281
22290
22288
22288
22284
22283
22282
22283
22283
22282
22282
22288
22281
22284
22284
22284
22280
22281
22280
22280
22283
22290
22281
22281
22289
22285
22280
22286
22286
22284
22284
22286
22283
22280
22288
22287
22288
22280
22280
22282
22284
22284
22292
22289
22284
22284
22285
22286
22286
22283
22290
22284
22284
22283
22284
22285
22284
22284
22285
22283
22284
22285
22286
22286
22286
22286
22284
22284
22287
22285
22290
22283
22291
22283
22287
22284
22284
22285
22285
22286
22286
22285
22285
22285
22289
22286
22284
22284
22285
22283
22283
22286
22286
22288
22283
22283
22293
22283
22284
22286
22286
22285
22282
22286
22286
22283
22283
22285
22288
22292
22285
22285
22288
22288
22288
22285
22288
22287
22287
22288
22288
22285
22284
22284
22287
22288
22288
22290
22287
22285
22288
22286
22286
22286
22288
22288
22286
22286
22286
22286
22289
22289
22288
22286
22287
22287
22291
22291
22287
22289
22288
22288
22288
22291
22289
22285
22288
22284
22284
22290
22290
22288
22290
22286
22288
22291
22290
22286
22291
22289
22292
22290
22290
22286
22292
22286
22291
22289
22287
22292
22288
22291
22289
22288
22292
22294
22284
22286
22290
22289
22286
22290
22291
22287
22294
22297
22289
22289
22295
22283
22283
22291
22290
22290
22294
22288
22291
22300
22291
22288
22290
22288
22285
22289
22289
22284
22289
22290
22290
22290
22287
22284
22289
22285
22285
22293
22290
22287
22291
22291
22292
22293
22293
22287
22295
22295
22284
22293
22293
22289
22289
22294
22288
22288
22293
22285
22284
22293
22287
22294
22285
22285
22289
22293
22284
22292
22286
22288
22288
22294
22287
22295
22294
22284
22285
22293
22294
22285
22288
22291
22288
22283
22288
22288
22287
22295
22286
22287
22285
22286
22288
22292
22287
22285
22289
22286
22289
22287
22288
22291
22285
22286
22292
22287
22288
22290
22285
22288
22288
22290
22291
22287
22285
22286
22290
22287
22289
22285
22291
22287
22287
22289
22286
22286
22285
22286
22287
22290
22289
22290
22288
22292
22290
22288
22286
22288
22290
22288
22288
22289
22289
22286
22283
22288
22292
22292
22287
22288
22288
22288
22293
22291
22291
22286
22290
22290
22288
22288
22291
22291
22291
22292
22292
22294
22291
22291
22293
22289
22290
22294
22289
22293
22294
22290
22290
22291
22290
22293
22293
22281
22293
22289
22289
22293
22291
22285
22291
22292
22289
22293
22292
22292
22292
22293
22290
22286
22291
22291
22288
22293
22295
22285
22291
22289
22293
22286
22293
22291
22287
22290
22283
22291
22293
22290
22290
22293
22293
22294
22290
22291
22290
22294
22289
22294
22294
22294
22292
22295
22286
22289
22283
22289
22291
22284
22288
22288
22292
22286
22288
22288
22289
22294
22289
22287
22286
22296
22296
22286
22295
22290
22290
22288
22288
22288
22289
22289
22289
22288
22290
22287
22290
22290
22288
22293
22288
22296
22287
22289
22288
22289
22285
22292
22292
22292
22289
22290
22296
22288
22288
22290
22292
22292
22285
22289
22288
22288
22289
22290
22290
22291
22287
22287
22290
22290
22287
22289
22291
22289
22295
22290
22289
22290
22292
22292
22289
22290
22292
22289
22291
22290
22294
22294
22292
22292
22292
22288
22289
22291
22292
22292
22292
22290
22291
22291
22290