This makes Amplitude Modulated Pulse Train, which can be regarded as the discretized wave of the signal. Pulse Train can be defined by frequency and duty cycle, which can be temporarily changed, referring to PWM.

Dependents:   Interference_Simple

Files at this revision

API Documentation at this revision

Comitter:
aktk
Date:
Fri Feb 21 05:29:09 2020 +0000
Branch:
35e9675a
Parent:
7:5eae3f90d161
Child:
9:80a5ef57af11
Commit message:
Added RecalcRulsebaseParameter() and set/get-Frequency/Period_pPulse-_Signal()

Changed in this revision

AMPulseTrain.cpp Show annotated file Show diff for this revision Revisions of this file
AMPulseTrain.h Show annotated file Show diff for this revision Revisions of this file
--- a/AMPulseTrain.cpp	Mon Jan 13 19:04:11 2020 +0000
+++ b/AMPulseTrain.cpp	Fri Feb 21 05:29:09 2020 +0000
@@ -9,7 +9,7 @@
     Carrier(arg_carrier),
     Signal(arg_signal)
 {
-    setFrequency_Carrier(Carrier->getFrequency());
+    RecalcPulsebaseParameter();
 }
 
 
--- a/AMPulseTrain.h	Mon Jan 13 19:04:11 2020 +0000
+++ b/AMPulseTrain.h	Fri Feb 21 05:29:09 2020 +0000
@@ -40,15 +40,17 @@
     /// AM Signal
     AMSignal  * const Signal;
 
-
+    /// register callback called every clock (not carrier pulse edges)
     void attachCallback_asClock(
         Callback<void(bool,  AMPulseTrain*)> arg_callback
     );
 
+    /// register callback called every carrier pulse edges
     void attachCallback_asPulseEdge(
         Callback<void(bool,  AMPulseTrain*)> arg_callback
     );
 
+    /// register callback as AMSignalExpression
     void attachAMSignalExpression(
         Callback<uint16_t(AMPulseTrain*)> arg_callback
     );
@@ -56,20 +58,34 @@
     void setFrequency_Carrier( uint32_t const arg_freq )
     {
         Carrier->setFrequency(arg_freq);
-        m_AMSIGNAL_PERIOD_PER_PULSE = Signal->getPeriod_us() / Carrier->getPeriod_us();
-        m_AMSIGNAL_PWIDTH_PER_PULSE = 500 / Carrier->getPeriod_us();
+        RecalcPulsebaseParameter();
     }
-    
-    uint32_t getFrequency_Carrier(){return Carrier->getFrequency();}
-    
+
+    void setFrequency_Signal( uint32_t const arg_freq )
+    {
+        Signal->setFrequency(arg_freq);
+        RecalcPulsebaseParameter();
+    }
+
+    uint32_t getFrequency_Carrier()
+    {
+        return Carrier->getFrequency();
+    }
+
     uint16_t getClockperiod_us();
-    
+
     void incrementClock();
-    
-    uint16_t getPeriod_pPulse_Signal(){return m_AMSIGNAL_PERIOD_PER_PULSE;}
-    
-    uint16_t getPWidth_pPulse_Signal(){return m_AMSIGNAL_PWIDTH_PER_PULSE;}
-    
+
+    uint16_t getPeriod_pPulse_Signal()
+    {
+        return m_AMSIGNAL_PERIOD_PER_PULSE;
+    }
+
+    uint16_t getPWidth_pPulse_Signal()
+    {
+        return m_AMSIGNAL_PWIDTH_PER_PULSE;
+    }
+
 private:
 
     Callback<void(bool,  AMPulseTrain*)> m_callback_asClock;
@@ -83,6 +99,11 @@
 
     uint16_t m_AMSIGNAL_PERIOD_PER_PULSE;
     uint16_t m_AMSIGNAL_PWIDTH_PER_PULSE;
+    void RecalcPulsebaseParameter()
+    {
+        m_AMSIGNAL_PERIOD_PER_PULSE = Signal->getPeriod_us() / Carrier->getPeriod_us();
+        m_AMSIGNAL_PWIDTH_PER_PULSE = 500 / Carrier->getPeriod_us();
+    }
 };
 
 #endif
\ No newline at end of file