---------- X-Sun-Data-Type: text X-Sun-Data-Description: text X-Sun-Data-Name: text X-Sun-Content-Lines: 27 Hello folks, there was some (good) response about my new "Multi process Kernel". So I will post it soon. Have some patient, because I have do some other jobs too. To avoid too much questions later I'm describing details more precise in the source now. I intend to post the MpK next week. (Put the ZIP-files onto our public server ftp.ntb.ch and to takdsign). BTW: MpK sounds a little bit too proud! So don4t blame me afterwards... -Michael //// __0__ '(o o)' __0__ (_____)--------ooO-(,)-Ooo-------------------------------------(_____) | / | Kellenberger Michael | \ | | / | (electronics engineer,BSc) | \ | | / | Institute for integrated microsystems ( IMS / MEMS ) | \ | | / | Neu Technikum Buchs Phone: +41-81-755 34 44 | \ | | / | CH-9470 Buchs/SG Fax: +41-81-756 54 34 | \ | |___| Switzerland Email: kellenbe@sparc1.ntb.ch |___| (_____)--------------------------------------------------------(_____) 0 0 PS: The first introduction of MpK I will add... ---------- X-Sun-Data-Type: default X-Sun-Data-Name: MPK.DES X-Sun-Content-Lines: 127 ; ; #.ASM ; ============= ; -MpK 1.0- with interrupt handler for PIC16LC71 ; ;************************************************************************** ; ;Creator : M.Kellenberger, 18.11.93, IMS, Neu Technikum Buchs,CH-9470 Buchs ;System : Boxer Editor, MPALC, MPSTART, PDC.BAT(4DOS) ;Target : Microchip PIC 16C71 ; ;History MpK: ;V 0.0 21.10.93 mik Definitions, systemlabel start with "_"! ;V 0.1 22.10.93 mik System design and description ;V 0.1a 25.10.93 mik Add "#" to user-changeable lines ;V 0.1b 15.11.93 mik Made systembody faster (20MHz) ;V 0.1c 16.11.93 mik MpK Kernel via simulater tested! ;V 0.2 25.11.93 mik RxError, RxBusy and Cmds! ;V 0.3 13. 1.94 mik RS-485 Enable implemented ;V 0.4 21. 1.94 mik Compiler flags _Tst,_MHz,_RS implemented ;V 0.5 27. 1.94 mik Compiler flags _Tst into TstDbg implemented ;V 0.6 28. 1.94 mik Compiler flags _WDT implemented ;V 0.7 8. 2.94 mik Ext_Cmd is 001T'0000 (Flag T is now also for EXT Cmds) ; 10. 2.94 mik reset condition into Cmd ;V 0.8 21. 2.94 mik CRC added, _Peven, _Parity deleted ;V 0.9 21. 2.94 mik CRCs/r added ; ; Tree projects were (are) launched with this body... ; - Intelligent sensor to messure thread tension. (sensation!) ; Gave the kick to design MpK! ; - Front end for a "laser pattern generator" (step tracker) ; - Switched capacitor controller. (->private company) ; ...beta test passed! ; ; Remarks: - "easy to learn and use" (J.Wagner) ; - "good programming philosophy"(L.Grecco) ; - "short time to release" (G.Staufert) ; - "don't bother about basic stuff, ; it's managed by the MpK" (L.Grecco) ; - "they got it" (M.Kellenberger) ; ;V 1.0 23. 6.94 mik Last test, more text, first public release! ; ;User programmers revision: ;V 1.0 ##.##.## ___ First attempt: # ; ;******************************************************************* ; ; Description: ; ============ ; ; 1. Multi process Kernel System body (design and tested only for PIC16C71): ; -------------------------------------------------------------------------- ; ; The MpK is designed as an (empty) programm body for several perposes: ; * Management of all interrupt launched processes. ; * Management for cyclic processes via RTCC (one timebase). ; * Usage of as little amount of PIC resources as possible for the MpK. ; * Serial communication up to 19.6kBd (half/full duplex). ; * Simple serial protocol. Ability to address 253 nodes (RS485) optionaly. ; * So far 1(or2)-byte-command supported -> may cause any action in the ; main process. (see chapter 2) ; * Quick realisation of user programms with that (and other) needs.. ; ; ; The MpK consists of (a user defineable body for): ; * Predefined register- and macrosets (see also new "PicReg.equ" and ; "Pic71.mac") ; * Proper initialization of HW and status/option registers, ; * An INTerruptHANDLER (with simple priority managment), ; * One process for each interrupt source (managed by INTHANDLER), ; * 4 cyclic processes: (the cycle time base is managed by ; the RTCC-int.handler) ; - Tx, Rx0, Rx1: ; for a half/full duplex communication (RS232/485->driver needed) ; - Adjust- or user-process: ; for cyclic time adjustment or an other user defined cyclic ; process that base on that RTCC timebase. ; ; * May launch the AD-conversion repeatedly ; (calculated out of the cycle timebase) ; * One (empty) MAIN (user) process ; (suggestion: round-robin-scheduler, see chapter 2). ; * Serial communication is half/full duplex and may be setup easly. ; (acts almost like a built in SCI) ; * Semaphore (flags) for data transfer to/from MpK. ; ; Options: ; * One FSR during interrupt cycle and one other FSR during main cycle. ; * Simple implementation of a protokoll (-> chapter 2). ; * Simple implementation of CRC for sending and receiving line. ; * Simple implementation of 254 addressed nodes (RS485). ; ; ; Resources used by MpK: ; * INT interrupt as serial data receiver. ; * RB0,RB1 (and optional RB3 for TxEn) pin. ; * RTCC and its interrupt as cycle time base generator. ; * Prescaler (in some cases not, see calculations). ; * Unused Flags RP1, IRP and "ADCnused" (see PicReg.equ). ; * Ports RP0, RB1 for Rx and Tx. ; * Port RP2 TxEnable if "RS485-half duplex mode" is used, else free. ; * Only 7 Byte MpK reserved fileregisters including 1 command bytes. ; * Two more reserved bytes if two FSRs are desired. ; * Two more reserved bytes if CRC (Rx and Tx) is desired. ; * WDT is embedded. ; * All other interrupts are embedded. ; ; ; ; ; ; ; 2. Philosophy of the MpK ; ------------------------ ; The idea for this MpK came up when I had to design a controller for ; my thread sensors. I wanted to create source code that is easy to ; expand and maintain. Also there was the idea to split up the ; whole problem into two parts: ; - The background running processes (put into MpK): ; SCI, AD sampler, MUX switcher, periodic actions, ... ; - The main program (pseudo processes): ; Protocol, cmd actions, data analising, ... ; All should be usable for other projects! ; ;