here is the sample: I found this approach easier to have better control from
the master.
Don't hesitate for any questions.

// AutomationEngine assembly source.
> // Used for Temperature and Light Control of Reef Tank
> // March 2010 by Rob Conway
> //
> // BAE0910 Direct Connected to Futurlec 4 channel opto Realy Board
> // Channel 0 & 1 Relay has been replaced with a Mosfet IRF540
> //
> // RELAY Ch#   BAE0910 Ch#   Ribbon Cable    USAGE
> // Output 0    PWM1          (Brown)         Cooling Fan
> // Output 1    PWM2         (Orange)        Heater
> // Output 2    PIO           (Yellow)        Main Light
> // Output 3    OUT           (Blue)          Refugium Light
> //
> //
> // VARIABLES:
> //  ON / OFF TIMES  (Seconds)
> //   L_UserN  ON time for Relay1   Seconds since Midnight
> //   W_UserL  Duration for PIO       Duration for relay ON time, seconds
> //   W_USERI  decrementing variale with time remaining until realy1 is
> turned OFF
>
>
> #include "bae0910.inc"
>
> #eeprom 0, 0      // start_page, end_page
> #org  $00      // Code generated at address specified.
>
> begin:
>     NOP     // Allow auto start of process #0 on poweron, first byte of
> page0 should be a NOP
> init:
>
>     //your initialisation code here
>     SET.B    B_TPM1C,4    // Pre Scaler (1us resolution)
>     SET.W    W_PERIOD1,10000    // 10,000us = 100Hz
>     SET.W    W_DUTY1,10001    // Set PWM1 Output OFF
>     START 1, relay1process   // this independant process will monitor USERI
> for action
> main:
>     PUSH.L    L_RTC
>     PUSH.L  L_USERN
>     SUB.L             //compare current time with sheduled time
>     AIS    -4             //restore stack
>     BNE notnow1         // if strictly equal, start cycle (may be true
> twice within the same second, but this is harmless)
>     SET.W  W_USERI, W_USERL // set duration to decounting variable USERI,
>                             // this will invite process1 to turn on for
> duration
>                             // this approach allows master check remaining
> time
>                             // and also start/interrupt actions.
> notnow1:
>     //similar code for relay2
>
>
>     WAIT    10    //not too long to ensure that each seconds are seen by
> the loop
>     JMP main
>
> relay1process: // asynchronous process for relay1 control, the input is
> USERI variable representing duration in seconds
>     SET.W    W_DUTY1,10001  // turn off relay1
>     WAIT    1
>     CMP.W    W_USERI,0
>     BEQ        relay1process
>     CLR.W     W_DUTY1 // turn on relay1
> loop_till_end1:
>     WAIT     16          //wait one second
>     DEC.W    W_USERI
>     BGR        loop_till_end1  // master may set directly to 0 to stop
> relay action, in this case USERI may become negative
>     CLR.W    W_USERI // set to zero in case of -1
>     BRA        relay1process
>




2010/3/27 Rob Conway <rjcon...@bigpond.com>

>  I thought it would be easier having the ON time in seconds since midnight
> so I can compare direct to RTC.
> The length of time the output is ON needs to be able to vary between 1
> minutes to 12 hrs.  I know I could hard code the ON / OFF time into the
> stack however whilst I still have user variables I may as well use them.
>
>  -----Original Message-----
> *From:* Pascal Baerten [mailto:pascal.baer...@gmail.com]
> *Sent:* Saturday, March 27, 2010 6:59 PM
> *To:* OWFS (One-wire file system) discussion and help
> *Subject:* Re: [Owfs-developers] BAE0910 AE Timed output code
>
> Hi Rob,
> Sorry, I was busy to unexpeted work during this week and worked very late
> everyday.
> You have to use the firmware I sent earlier.
>
> I would create a main process that evaluate start conditions and initate
> sub process that handle the action until duration.
>
> some comments in your code below.
>
> I will write you a sample skeleton later today.
>
> Pascal
>
>
>
> 2010/3/27 Rob Conway <rjcon...@bigpond.com>
>
>>  Hi,
>>
>> I was hoping to get some feedback on the AE engine and creating some
>> simple output timers based upon energizing outputs based on time of day.  I
>> can already set the RTC from the HOST and it resets at midnight, so the RTC
>> represents seconds since midnight.
>>
>> This is what I am trying to achieve on the stack
>>
>>     IF RTC > ON_TIME and RTC <(ON-TIME+DURATION)
>>     then DUTY1,0
>>     else DUTY1,10001
>>
>> This is some rough code I thought I could use however not tested, I wanted
>> to know if I was on the correct track and if the stack can handle maths
>> results that go negative.
>>
> yes,
> for Byte, values above 127 are considered negative
> for Word, values above 32767 are considered negative
> for Long, values above 2147483647 are considered negative
>
>
>>
>  //  ON / OFF TIMES  (Seconds)
>> //   L_UserN  ON time for Relay1   Seconds since Midnight
>> //   W_UserL  Duration for PIO       Duration for relay ON time, seconds
>>
> what's the max duration? ,maybe fit in 255 range or 65535  to use B or W
> instead variable.
>
>>
>>
>> relay1_ctl:
>> CMP.L    L_RTC,L_USERL
>> BLE        relay1_off
>>
>> PUSH.L    L_RTC          //Get time since midnight
>> PUSH.L   L_USERN      //  get user ON time in seconds since midnight
>> SUB                             // Find out how many seconds difference
>> between RTC and on time
>> CMP.W     @-1, W_USERL    // See if difference is less than Duration, if
>> so the output should be ON
>>
> as operands are L_ types, use CMP.L, also, @-4 needed for the L_ type who
> require 4 bytes
> important to retore stack pointer to inital value  after stack operation
> AIX -4
>
>>  BGR        relay_off
>> BLE         relay_on
>> END
>>
>> relay1_on
>> SET.W    W_DUTY1,0
>> BRA Relay2_ctl
>>
>> Relay1_off
>>  SET.W    W_DUTY1,10001
>>  BRA Relay2_ctl
>>
>>
>>  relay2_ctl:
>> ~ code similar to relay 1
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Download Intel&#174; Parallel Studio Eval
>> Try the new software tools for yourself. Speed compiling, find bugs
>> proactively, and fine-tune applications for parallel performance.
>> See why Intel Parallel Studio got high marks during beta.
>> http://p.sf.net/sfu/intel-sw-dev
>> _______________________________________________
>> Owfs-developers mailing list
>> Owfs-developers@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/owfs-developers
>>
>>
>
>
> --
> Pascal
> www.brain4home.eu
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 9.0.791 / Virus Database: 271.1.1/2772 - Release Date: 03/27/10
> 06:33:00
>
>
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Owfs-developers mailing list
> Owfs-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/owfs-developers
>
>


-- 
Pascal
www.brain4home.eu
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to