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® 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® 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® 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