i must have the code for detecting a missin g pulse? do some one have some for me to see?
G !
The standard problem.
If you have a question, you must supply a complete problem description.
It sounds like you may have a g sensor - but we don't know which, or how it is connected. And we don't know why you would have lost G pulse to even figure out that you have lost. Exactly how do you loose it?
If you do not know enough to give a complete problem description, then neither you nor we may have a chance of knowing the answer.
And how do you distinguish a missing G pulse from a missing F or H pulse...?
Per, I must disagree. There is nothing wrong with providing an 'answer' with the same thoroughness as the question.
Answer (start here...)
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; --============================================================================ -- ENTITY for "The Case Of The Missin G Pulse" -- --============================================================================ entity mPulse is Port ( -------------------------------------------------------------- -- IO port definitions -- -------------------------------------------------------------- RST : in std_logic; -- Reset all states to known values Clock : in std_logic; -- The time-base Pulses : in std_logic; -- The incoming pulse train Enable : in std_logic; -- Enables the function Missin : out std_logic -- The result (without the 'G') ); end mPulse;
And then you simply write the architecture as needed. It almost writes itself.
--Cpt. Vince Foster 2nd Cannon Place Fort Marcy Park, VA
lol gatmal
i made mistake!!!!! alrigt!!!!!!!
it is {{{not}}} a missin g pulse . it is a missing pulse.
aneybody answer me now plz?????
"it is a missing pulse.
aneybody answer me now plz?"
Sure, but first, describe "a missing pulse"?
I stand corrected. Will try to redeem myself.
// \note The following library is dependant on the current // geographical location (latitude + longitude + // distance from the mean earth radius) moon // location, speed and travel direction, and sensor // orientation, since the g pulse // detector is calibrated relative to the local // gravitational levels (and influences of coriolis // forces) at the sensor location. // \todo A laser gyro and GPS tracker should be integrated // for automatic adjustments of the reference limits // for the g pulse sensor, and to allow detect failures // to be reported in relation to the GPS reference time. // \note Calibration or orientation differences between // G and H pulse sensors will affect the reliability of // the error detector. The H pulse detector should normally // be calibrated with a higher detect level (percentage // depending on current security classification) to // make sure that a too sensitive H pulse sensor generates // alarms when the G pulses are just below the detection // levels. bool have_seen_g_pulse; bool any_g_missing; bool last_g_missing; unsigned detector_timeout; timestamp time_last_failure; timestamp time_first_failure; void init(void) { // Initialized to true even if no G pulse seen yet, // to make sure we don't get a false error in case // the supervision is started between a G and an H // pulse. have_seen_g_pulse = true; any_g_missing = false; last_g_missing = false; comm_failure = false; detector_timeout = get_now() + COM_FAILURE_TMO; clear_timestamp(time_first_failure); clear_timestamp(time_last_failure); } void report_g_pulse(void) { if (detector_timeout()) { if (!any_g_missing) { get_timestamp(time_first_g_missing); } get_timestamp(time_last_g_missing); last_g_msising = true; any_g_missing = true; } have_seen_g_pulse = true; last_g_missing = false; detector_timeout = get_now() + COM_FAILURE_TMO; } void report_h_pulse(void) { if (!have_seen_g_pulse || detector_timeout()) { // Since everyone knows that H always follows G, // a detect of H without a G implies a lost // G. if (!any_g_missing) { get_timestamp(time_first_g_missing); } get_timestamp(time_last_g_missing); last_g_msising = true; any_g_missing = true; } // Arm detector. have_seen_g_pulse = false; detector_timeout = get_now() + COM_FAILURE_TMO; comm_failure = false; } bool detector_timeout() { return get_now() > detector_timeout; } bool have_mmissed_last_g_pulse(timestamp* when) { if (last_g_missing) { if (when) *when = time_last_g_missing; return true; } if (detector_timeout()) { if (!any_g_missing) { get_timestamp(time_first_g_missing); any_g_missing = true; } get_timestamp(time_last_g_missing); last_g_missing = true; comm_failure = true; if (when) *when = time_last_g_missing; return true; } return false; } bool have_missed_any_g_pulse() { if (any_g_missing) { if (when) *when = time_last_g_missing; return true; } if (detector_timeout()) { if (!any_g_missing) { get_timestamp(time_first_g_missing); any_g_missing = true; } get_timestamp(time_last_g_missing); last_g_missing = true; comm_failure = true; if (when) *when = time_last_g_missing; return true; } return false; }
Well done Per! NP Complete!
thxxx
i will tr yit now
Hello,
It would appear that some people here have too much spare time on their hands!?
Clearly, but Per is still my hero!
<admire>Clearly, but Per is still my hero!</admire>
I think that this forum should show pictures of all the top posters. Then we could all see the true beauty of wisdom.
robhan visan,
A way to detect it is to monitor the pulses, determine the time between them, and then determine if a pulse is missing based upon the expected time it should have occurred.
Pseudo-code:
if( pulse ) { capture time difference in time = (current time) - (previous time); if( difference > expected time ) { missing pulse has occured } else { missing pulse has not occured } }
a close 'C' approximation:
#define EXPECTED_TIME_BETWEEN_PULSES 50 // >50ms means too much time void pulse_isr( void ) // a logic pulse interrupts CPU { static unsigned int current_time = 0; static unsigned int previous_time = 0; int difference; current_time = Get_Timestamp( ); // needs a timing routine accessor difference = ( current_time - previous_time ); if( difference > EXPECTED_TIME_BETWEEN_PULSES ) { Flag_Missing_Pulse = TRUE; // the flag that say's "Missing" } else { Flag_Missing_Pulse = FALSE; } previous_time = current_time; // for next time }
This example will let you know that a missing pulse occurred one pulse AFTER it has been 'missed.'
There are better ways to do this, but this is just an example.
I hope you get a good grade on this assignment.
NOTE: Per still needs some redeeming... his "H follows G" rule doesn't account for the field-tested sobriety research data collected over the past 30+ years. So the real-world missing pulse detector must not rely on this H-G relationship.
P.S. FYI... I found Jack's photo...
inpraiseofsardines.typepad.com/.../sardine_man_1.jpg
But my code _does_ watch out for a timeout between two G pulses, in case you have problems with the H detector, or for some reason have managed to run the alphabet in the reverse order :)
View all questions in Keil forum