summaryrefslogtreecommitdiff
path: root/include/object
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2019-11-05 14:13:04 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2019-11-05 14:13:04 +0100
commitf75f7840daa6a44402076d67abaffb2675e20afb (patch)
tree9ac54ee280766ed5f80d31f696e959d478161cdc /include/object
parentc45354687f93c651441e8a9abeb21b16140de581 (diff)
PTALog: Add PTALOG_GPIO_BEFORE (toggle GPIO before instead of during transition)
Diffstat (limited to 'include/object')
-rw-r--r--include/object/ptalog.h37
1 files changed, 25 insertions, 12 deletions
diff --git a/include/object/ptalog.h b/include/object/ptalog.h
index 808eef8..01aac8f 100644
--- a/include/object/ptalog.h
+++ b/include/object/ptalog.h
@@ -6,6 +6,9 @@
#ifdef PTALOG_GPIO
#include "driver/gpio.h"
+#ifdef PTALOG_GPIO_BEFORE
+#include "arch.h"
+#endif
#endif
#ifdef PTALOG_TIMING
@@ -13,6 +16,13 @@
#endif
class PTALog {
+
+ private:
+ PTALog(const PTALog& copy);
+#ifdef PTALOG_GPIO
+ uint8_t sync_pin;
+#endif
+
public:
typedef struct {
uint8_t transition_id;
@@ -31,12 +41,12 @@ class PTALog {
uint8_t log_index;
#ifdef PTALOG_GPIO
- PTALog(uint8_t pin_number) : log_index(0), sync_pin(pin_number) {}
+ PTALog(uint8_t pin_number) : sync_pin(pin_number), log_index(0) {}
#else
PTALog() : log_index(0) {}
#endif
- inline void passTransition(uint8_t transition_id)
+ void passTransition(uint8_t transition_id)
{
log[log_index].transition_id = transition_id;
if (log_index < max_entry) {
@@ -45,18 +55,18 @@ class PTALog {
}
#ifdef PTALOG_TIMING
- inline void passNop(Counter& counter)
+ void passNop(Counter& counter)
{
kout << "[PTA] nop=" << counter.value << "/" << counter.overflow << endl;
}
#endif
- inline void reset()
+ void reset()
{
log_index = 0;
}
- inline void startBenchmark(uint8_t id)
+ void startBenchmark(uint8_t id)
{
kout << "[PTA] benchmark start, id=" << dec << id << endl;
#ifdef PTALOG_GPIO
@@ -64,7 +74,7 @@ class PTALog {
#endif
}
- inline void stopBenchmark()
+ void stopBenchmark()
{
kout << "[PTA] benchmark stop" << endl;
}
@@ -86,7 +96,14 @@ class PTALog {
inline void startTransition()
{
+#ifdef PTALOG_GPIO_BEFORE
gpio.write(sync_pin, 1);
+ arch.sleep_ms(10);
+ gpio.write(sync_pin, 0);
+ arch.sleep_ms(10);
+#else
+ gpio.write(sync_pin, 1);
+#endif
}
#ifdef PTALOG_WITH_RETURNVALUES
@@ -103,19 +120,15 @@ class PTALog {
#endif
{
#ifdef PTALOG_GPIO
+#ifndef PTALOG_GPIO_BEFORE
gpio.write(sync_pin, 0);
#endif
+#endif
#ifdef PTALOG_TIMING
log[log_index - 1].timer = counter.value;
log[log_index - 1].overflow = counter.overflow;
#endif
}
-
- private:
- PTALog(const PTALog& copy);
-#ifdef PTALOG_GPIO
- uint8_t sync_pin;
-#endif
};
#endif