Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

- adc12 timings correction

- adc tutorial, web update


git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/wsim@188 c0ef0dea-404d-0410-ad65-84cceb5f200a
  • Loading branch information...
commit a5ecc38307e77989781dc73f081363d1be63673b 1 parent 7a880c1
afraboul authored
506 LICENSE
View
@@ -0,0 +1,506 @@
+
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat � l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-�-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
75 arch/msp430/msp430_adc12.c
View
@@ -16,16 +16,18 @@
/* ************************************************** */
/* ************************************************** */
+#define ADC12_VERBOSE_LEVEL 4
+#define ADC12_DEBUG_LEVEL_2
+
#if defined(DEBUG)
-#define HW_DMSG_ADC12(x...) HW_DMSG(x)
+#define HW_DMSG_ADC12(x...) VERBOSE(ADC12_VERBOSE_LEVEL,x)
#else
#define HW_DMSG_ADC12(x...) do { } while (0)
#endif
-#define DEBUG_LEVEL_2
-#if defined(DEBUG_LEVEL_2)
-#define HW_DMSG_2_DBG(x...) HW_DMSG(x)
+#if defined(ADC12_DEBUG_LEVEL_2)
+#define HW_DMSG_2_DBG(x...) VERBOSE(ADC12_VERBOSE_LEVEL,x)
#else
#define HW_DMSG_2_DBG(x...) do { } while (0)
#endif
@@ -45,6 +47,11 @@ tracer_id_t MSP430_TRACER_ADC12INPUT[ADC12_CHANNELS];
/* ************************************************** */
/* ************************************************** */
+#define ADC12_NONE 0
+#define ADC12_CHANN_PTR 1
+#define ADC12_RND 2
+#define ADC12_WSNET 3
+
int msp430_adc12_channels_valid[ADC12_CHANNELS];
char msp430_adc12_channels_name[ADC12_CHANNELS][MAX_FILENAME];
uint16_t* msp430_adc12_channels_data[ADC12_CHANNELS];
@@ -150,7 +157,7 @@ int msp430_adc12_find_inputs()
}
HW_DMSG_ADC12("msp430:adc12: channel %02d = %s\n",id, filename);
- msp430_adc12_channels_valid[id] = 1;
+ msp430_adc12_channels_valid[id] = ADC12_CHANN_PTR;
strncpy(msp430_adc12_channels_name[id], filename, MAX_FILENAME);
}
return 0;
@@ -166,7 +173,7 @@ int msp430_adc12_read_inputs()
uint32_t smpl;
for(chan=0; chan < ADC12_CHANNELS; chan++)
{
- if (msp430_adc12_channels_valid[ chan ])
+ if (msp430_adc12_channels_valid[ chan ] == ADC12_CHANN_PTR)
{
FILE* f;
int val;
@@ -211,7 +218,7 @@ int msp430_adc12_delete_inputs()
int i;
for(i=0; i < ADC12_CHANNELS; i++)
{
- if (msp430_adc12_channels_valid[i])
+ if (msp430_adc12_channels_valid[i] == ADC12_CHANN_PTR)
{
free(msp430_adc12_channels_data[i]);
msp430_adc12_channels_data[i] = NULL;
@@ -220,27 +227,39 @@ int msp430_adc12_delete_inputs()
return 0;
}
-uint16_t msp430_adc12_sample_input(int channel_x)
+uint16_t msp430_adc12_sample_input(int hw_channel_x)
{
- uint16_t sample;
- if (msp430_adc12_channels_valid[channel_x])
+ uint16_t sample = 0;
+ switch (msp430_adc12_channels_valid[hw_channel_x])
{
- HW_DMSG_2_DBG("msp430:adc12: sample for input channel %d - %s\n",
- channel_x, msp430_adc12_channels_name[channel_x]);
+ case ADC12_NONE:
+ /* default mode */
+ HW_DMSG_ADC12("msp430:adc12: 0xeaea sample for input channel %d\n", hw_channel_x);
+ sample = 0xeaea;
+ break;
+
+ case ADC12_CHANN_PTR:
+ HW_DMSG_2_DBG("msp430:adc12: sample for input channel %d - %s\n",
+ hw_channel_x, msp430_adc12_channels_name[hw_channel_x]);
- sample = msp430_adc12_channels_data[ channel_x ][ MCU.adc12.chann_ptr[channel_x] ] ;
+ sample = msp430_adc12_channels_data[ hw_channel_x ][ MCU.adc12.chann_ptr[ hw_channel_x ] ] ;
- MCU.adc12.chann_ptr[channel_x] ++;
- if (MCU.adc12.chann_ptr[channel_x] == msp430_adc12_channels_data_max[channel_x])
+ MCU.adc12.chann_ptr[ hw_channel_x ] ++;
+ if (MCU.adc12.chann_ptr[ hw_channel_x ] == msp430_adc12_channels_data_max[ hw_channel_x ])
{
- MCU.adc12.chann_ptr[channel_x] = 0;
+ MCU.adc12.chann_ptr[ hw_channel_x ] = 0;
}
- }
- else
- {
- HW_DMSG_ADC12("msp430:adc12: random sample for input channel %d\n",channel_x);
+ break;
+
+ case ADC12_RND:
+ HW_DMSG_ADC12("msp430:adc12: random sample for input channel %d\n", hw_channel_x);
sample = random();
+ break;
+
+ case ADC12_WSNET:
+ break;
}
+
return sample & 0x0FFF; /* 12 bits */
}
@@ -255,7 +274,7 @@ int msp430_adc12_init(void)
for(i=0; i<ADC12_CHANNELS; i++)
{
MSP430_TRACER_ADC12INPUT[i] = 0;
- msp430_adc12_channels_valid[i] = 0;
+ msp430_adc12_channels_valid[i] = ADC12_NONE;
msp430_adc12_channels_data[i] = NULL;
msp430_adc12_channels_data_max[i] = 0;
strcpy(msp430_adc12_channels_name[i], "none");
@@ -274,7 +293,7 @@ int msp430_adc12_init(void)
MSP430_TRACER_ADC12STATE = tracer_event_add_id(1, "adc12_enable", "msp430");
for(i=0; i<ADC12_CHANNELS; i++)
{
- if (msp430_adc12_channels_valid[i])
+ if (msp430_adc12_channels_valid[i] != ADC12_NONE )
{
MSP430_TRACER_ADC12INPUT[i] = tracer_event_add_id(16, trace_names[i], "msp430");
}
@@ -346,6 +365,7 @@ void msp430_adc12_update(void)
MCU.adc12.adc12clk_temp += MCU.adc12.adc12osc_increment;
MCU.adc12.adc12clk_increment = MCU.adc12.adc12clk_temp / (MCU.adc12.ctl1.b.adc12divx + 1);
MCU.adc12.adc12clk_temp = MCU.adc12.adc12clk_temp % (MCU.adc12.ctl1.b.adc12divx + 1);
+ MCU.adc12.adc12clk_counter += MCU.adc12.adc12clk_increment;
/* FIXME:: MSC is not taken into account */
if (MCU.adc12.ctl1.b.shp == 1)
@@ -438,15 +458,19 @@ void msp430_adc12_update(void)
* DIR = 0 // Direction = 0:input 1:output
*/
HW_DMSG_ADC12("msp430:adc12: sampling on config %d hw_channel %d (%s) [%"PRId64"]\n",
- MCU.adc12.current_x, MCU.adc12.mctl[MCU.adc12.current_x].b.inch,
+ MCU.adc12.current_x,
+ MCU.adc12.mctl[MCU.adc12.current_x].b.inch,
trace_names[MCU.adc12.mctl[MCU.adc12.current_x].b.inch],
MACHINE_TIME_GET_NANO());
+
MCU.adc12.sample = msp430_adc12_sample_input(MCU.adc12.mctl[MCU.adc12.current_x].b.inch);
-
+
ADC12_TRACER_INPUT( MCU.adc12.mctl[MCU.adc12.current_x].b.inch, MCU.adc12.sample );
MCU.adc12.state = ADC12_STATE_CONVERT;
+ MCU.adc12.adc12clk_reftime = MCU.adc12.adc12clk_counter;
MCU.adc12.sampcon --;
+
}
else
{
@@ -459,9 +483,8 @@ void msp430_adc12_update(void)
/***************/
case ADC12_STATE_CONVERT:
CHECK_ENC();
- if (MCU.adc12.adc12clk_increment > 12)
+ if (MCU.adc12.adc12clk_counter > (MCU.adc12.adc12clk_reftime + 12))
{
- MCU.adc12.adc12clk_increment -= 12;
HW_DMSG_ADC12("msp430:adc12: convert = 0x%04x (%d) \n",MCU.adc12.sample,MCU.adc12.sample);
MCU.adc12.state = ADC12_STATE_STORE;
}
2  arch/msp430/msp430_adc12.h
View
@@ -252,6 +252,7 @@ struct msp430_adc12_t {
int adc12osc_temp;
uint32_t adc12osc_cycle_nanotime;
+ uint64_t adc12clk_counter;
int adc12clk_increment;
int adc12clk_temp;
@@ -264,6 +265,7 @@ struct msp430_adc12_t {
int sampcon;
int current_x;
uint16_t sample;
+ uint64_t adc12clk_reftime; /* used to measure time between sampcon low and convert */
};
/* ************************************************** */
41 doc/wsim-tutorials/telosb-tinyos/wsim.xml
View
@@ -80,6 +80,47 @@
<!-- ============================================================ -->
+<chapter id="run">
+ <title>WSim and Tossim</title>
+ <para>
+ WSim is a full platform simulator/emulator. The purpose of WSim is
+ to have a precise hardware model on which we can run the full
+ binary that could be used otherwise to flash the target. This
+ precision level allows WSim to gather precise performance data on
+ the code it runs including mechanisms like software frequency
+ scaling, peripheral and interrupt latencies, precise power
+ consumption, etc. The result of the simulation is precise with regards
+ to the target device assembly instructions so that a precise observation
+ of the embedded software can be build from the simulation.
+ </para>
+ <para>
+ TOSSIM relies on . This means that the application TinyOS code is
+ compiled for the machine TOSSIM runs on. Target specific modules
+ like hardware drivers in the TinyOS component hierarchy are
+ replaced at compile time by native modules that will simulate
+ peripherals at the TinyOS API level. This simulation level implies
+ that the real target binary is not generated. TOSSIM is thus
+ limited to functional simulation and has a very limited feedback
+ for performance and precise timings within the simulation. However,
+ since the simulation is simpler than using WSim it is also faster.
+ </para>
+ <para>
+ From the programmers' point of view, especially while debuging
+ applications, WSim and TOSSIM are quite different in what we can
+ observe at the TinyOS component level interface. TOSSIM simulates
+ components behavior and gives back information at the TinyOS
+ programming. WSim, in contrast, uses assembly instruction and
+ provides feedback at C source level
+ (the <computeroutput>app.c</computeroutput> file generated
+ by <computeroutput>nesc</computeroutput>). Although TinyOS includes
+ compiler helpers to go back from the <computeroutput>app.c</computeroutput>
+ to TinyOS components we do not use this feature in this tutorial
+ and we will present how to debug TinyOS application starting from
+ <computeroutput>app.c</computeroutput> file.
+ </para>
+
+</chapter>
+
<!-- ============================================================ -->
<!-- ============================================================ -->
<!-- ============================================================ -->
2  doc/wsim-tutorials/wsn430-adc/Makefile
View
@@ -24,7 +24,7 @@ html: wsim.html
upload: html
rsync -ruz -e ssh --delete htdocs/ \
- afraboul@scm.gforge.inria.fr:/home/groups/wsim/htdocs/tutorials/wsim
+ afraboul@scm.gforge.inria.fr:/home/groups/wsim/htdocs/tutorials/msp430-adc
# scp wsim.pdf afraboul@scm.gforge.inria.fr:/home/groups/wsim/htdocs/tutorials/
pdf: wsim.pdf
BIN  doc/wsim-tutorials/wsn430-adc/figures/adc12.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/wsim-tutorials/wsn430-adc/figures/adc12_s1.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/wsim-tutorials/wsn430-adc/figures/adc12_s2.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  doc/wsim-tutorials/wsn430-adc/figures/adc12trunc.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
197 doc/wsim-tutorials/wsn430-adc/wsim.xml
View
@@ -94,7 +94,17 @@
<title>Basic usage</title>
<para>
The simulation model of the ADC12 only considers the numerical part of the block.
+ The msp430 embedded software interface is thus the same as the real target
+ with respect to timings and input sources.
</para>
+ <figure id="adc12hw">
+ <title>ADC12 / MSP430 embedded software interface</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="figures/adc12.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
</sect1>
<sect1>
@@ -106,26 +116,170 @@
</para>
<para>
- 12 -> dd
+ Values are read from the input file at simulation start. Each value is truncated
+ to 12 bits before being fed to the ADC12 device. As an example, consider the test input datafile
+ that contains a serie from 0 to 12000. These valus will be read from the file
+ and tracated to 12bits (4095 max). The mecanism is also true for signed values and
+ the value -1 is converted to 4095 within the simulator.
</para>
+
+ <figure id="adc12bits">
+ <title>ADC12 input data truncated at 4095d (12 bits), screenshot taken from gtkwave</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" width="95%" fileref="figures/adc12trunc.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
</sect1>
<sect1>
- <title>Some scripts</title>
+ <title>Command line options and parameters</title>
+ <para>
+ Different sources and modes can be attached to hardware input channels. Each of the
+ 12 inputs selected by the <computeroutput>INCHx</computeroutput> register within
+ a configuration can be driven on the command line using the following parameters:
+ </para>
+ <figure id="adc12opt">
+ <title>ADC12 command line option using HW channels 1 and 2 on two separate files</title>
+ <programlisting>
+ <computeroutput>
+--msp430_adc12=1:data1.dat,2:data2.dat
+ </computeroutput>
+ </programlisting>
+ </figure>
+
+ <para>
+ The previous example shows how to combine 2 different data
+ files, one for each of the two adc channels that are used during
+ the simulation. Hardware channel configurations are comma separated and a hardware
+ configuration is a tuple <computeroutput>[channel number]:[data file]</computeroutput>.
+ </para>
+ </sect1>
+</chapter>
+
+ <!-- ============================================================ -->
+ <!-- ============================================================ -->
+ <!-- ============================================================ -->
+
+<chapter>
+ <title>Logfiles and trace files</title>
+ <para>
+ Wsim can generate a lot of output and traces to monitor and benchmark
+ embedded application behavior. Both logs and traces can be used to
+ retreive information from the application running on top of the msp430
+ and its interaction with the ADC. Logfiles are more often used while
+ debugging I/O while traces and VCD output are used for performance
+ estimation and frequence/latency parameters tuning.
+ </para>
+
+ <sect1>
+ <title>Logfiles</title>
+ <para>
+ Wsim log files will contain, if the verbose level
+ is set high enough (eg. 4), information about the internal behavior of
+ the ADC12.
+ </para>
+ <figure id="adc12log">
+ <title>ADC12 command line option using HW channels 1 and 2 on two separate files</title>
+ <programlisting>
+ <computeroutput>
+[...]
+msp430:adc12: mode repeat, go to wait_trigger
+msp430:adc12: trigger ok
+msp430:adc12: sampling on config 0 hw_channel 1 (adc12_input_01) [375963]
+msp430:adc12: sample for input channel 1 - data/data2.dat
+msp430:adc12: convert = 0x0ffd (4093)
+msp430:adc12: store sample in ADC12MEM0
+msp430:intr: Interrupt 7 received but GIE = 0 (current PC = 0x40d6 [382629])
+msp430:adc12: mode repeat, go to wait_trigger
+msp430:adc12: trigger ok
+msp430:adc12: sampling on config 0 hw_channel 1 (adc12_input_01) [402627]
+msp430:adc12: sample for input channel 1 - data/data2.dat
+msp430:adc12: convert = 0x0000 (0)
+msp430:adc12: store sample in ADC12MEM0
+msp430:adc12: mode repeat, go to wait_trigger
+msp430:adc12: trigger ok
+msp430:adc12: sampling on config 0 hw_channel 1 (adc12_input_01) [429291]
+msp430:adc12: sample for input channel 1 - data/data2.dat
+[...]
+ </computeroutput>
+ </programlisting>
+ </figure>
+ </sect1>
+
+ <sect1>
+ <title>Traces and VCD files</title>
+ <para>
+ Traces can be used when precise latency and frequency parameters
+ are to be estimated. To use traces the simulation mode has to be modified
+ using the command line option <computeroutput>--trace=[wsim.trc]</computeroutput> where
+ <computeroutput>wsim.trc</computeroutput> is the filename of the
+ output traces.
+ </para>
+ <para>
+ Value Change Dump (VCD) trace files and several other format can
+ generated from traces. VCD files are often used to asses the
+ quality of the emmbedded application. Traces can be used to
+ monitor synchronization points between adc12 samples and other
+ peripherals. Latency interrupt is very easily measured using
+ the <computeroutput> gtkwave </computeroutput> program. The next
+ two figures show a sample application on the adc12 for which
+ the <computeroutput>intr_num</computeroutput> line corresponds
+ to the IRQ.7 generated at each sample. Interrupt latency can be
+ preceisely measured using the <computeroutput>
+ gtkwave</computeroutput> timeline. Differences between the two
+ figures are due to the reference clock modification for the MCLK
+ frequency settings. The first version is too slow to handle the
+ ADC sampling rate while the second one can keep up with it.
+ </para>
+ <figure id="adc12vcd1">
+ <title>GtkWave output of WSim traces including IRQ.7, GIE and
+ Main clock frequencies for the test program using a MCLK
+ reference clock at 750kHz (msp430 default)</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" width="90%" fileref="figures/adc12_s1.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <figure id="adc12vcd2">
+ <title>GtkWave output of WSim traces including IRQ.7, GIE and
+ Main clock frequencies for the test program using a MCLK
+ reference clock à 8MHz.</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" width="90%" fileref="figures/adc12_s2.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+ </sect1>
+</chapter>
+
+ <!-- ============================================================ -->
+ <!-- ============================================================ -->
+ <!-- ============================================================ -->
+
+<chapter>
+ <title>Sources and examples</title>
+
+ <sect1>
+ <title>Script used to run the adc12 example</title>
<figure id="runscript">
<title>Script to run the simulation using ADC12 second input port with data.dat file</title>
<programlisting>
<computeroutput>
- #! /bin/sh
-
- PRG=${WSIM}/platforms/wsn430/wsim-wsn430
+#! /bin/sh
+
+PRG=${WSIM}/platforms/wsn430/wsim-wsn430
- ARG=" --mode=time --modearg=10s --verbose=4"
- ARG="$ARG --logfile=wsim.log --trace=wsim.trc"
- ARG="$ARG --msp430_adc12=2:data1.dat"
- ARG="$ARG adc12.elf"
+ARG=" --mode=time --modearg=10s --verbose=4"
+ARG="$ARG --logfile=wsim.log --trace=wsim.trc"
+ARG="$ARG --msp430_adc12=1:data1.dat"
+ARG="$ARG adc12.elf"
- ${PRG} ${ARG}
+${PRG} ${ARG}
+wtracer --in=wsim.trc --out=wsim.vcd --format=vcd
</computeroutput>
</programlisting>
</figure>
@@ -140,26 +294,3 @@
</book>
-
-<!-- <figure id="dist-simul"> -->
-<!-- <title>Distributed simulation</title> -->
-<!-- <mediaobject> -->
-<!-- <imageobject> -->
-<!-- <imagedata align="center" fileref="figures/dist_simul.png" /> -->
-<!-- </imageobject> -->
-<!-- </mediaobject> -->
-<!-- </figure> -->
-
-<!-- <programlisting> -->
-<!-- <prompt>[wsn430-timer]$</prompt> <userinput>make</userinput> -->
-<!-- </programlisting> -->
-<!-- <para>You should see:</para> -->
-<!-- <programlisting> -->
-<!-- <computeroutput> -->
-<!-- msp430-gcc -mmcu=msp430x1611 -O2 -Wall -g -c -o main.o main.c -->
-<!-- msp430-gcc -c -mmcu=msp430x1611 -O2 -Wall -g ../wsn430-clock/clock.c -->
-<!-- </computeroutput> -->
-<!-- </programlisting> -->
-
-
-
22 doc/wsim-tutorials/wsn430/wsim.xml
View
@@ -101,7 +101,7 @@
<title>The place of WSim in the development process</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/compile.png"/>
+ <imagedata align="center" width="90%" fileref="figures/compile.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -187,7 +187,7 @@
<title>Distributed simulation</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/dist_simul.png" />
+ <imagedata align="center" width="90%" fileref="figures/dist_simul.png" />
</imageobject>
</mediaobject>
</figure>
@@ -253,7 +253,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Snapshot of the execution of the LEDs example</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-leds.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-leds.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -314,7 +314,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>First debugging snapshot</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-leds-insight-1.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-leds-insight-1.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -324,7 +324,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Second debugging snapshot</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-leds-insight-2.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-leds-insight-2.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -333,7 +333,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Third debugging snapshot</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-leds-insight-3.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-leds-insight-3.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -345,7 +345,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Fourth debugging snapshot</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-leds-insight-4.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-leds-insight-4.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -417,7 +417,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Snapshot of the execution of the timer example</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-timer.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-timer.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -481,7 +481,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Snapshot of the launching of the serial console</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-serial-wconsole.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-serial-wconsole.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -512,7 +512,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Snapshot of the execution of the serial example</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-serial-2.png"/>
+ <imagedata align="center" width="90%" fileref="figures/wsn430-serial-2.png"/>
</imageobject>
</mediaobject>
</figure>
@@ -576,7 +576,7 @@ wsim:log:wsim.log</computeroutput></programlisting>
<title>Snapshot of the execution of the token passing example</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="figures/wsn430-token-petit.png" />
+ <imagedata align="center" width="90%" fileref="figures/wsn430-token-petit.png" />
</imageobject>
</mediaobject>
</figure>
32 doc/wsim-web/htmlx/tools.htmlx
View
@@ -3,12 +3,40 @@
#include "header.html"
<!-- /HEADER -->
+
+
<div id="main-body">
<h2 id="intro">Tools / Utilities</h2>
- <br /><br /><br /><br />
- <div align="center"><img src="./figures/travaux.gif" alt="" height="134" width="150" /></div>
+
+
+ <h3>Associated tools</h3>
+ <ul style="margin-top: 0pt;">
+
+ <li><a href="http://wsnet.gforge.inria.fr/" target="_new" title="WSNet website">WSNet</a>
+ website: an event driven network simulator.</li>
+
+ <li><a href="http://esimu.gforge.inria.fr/" target="_new" title="eSimu website">eSimu</a>
+ website: Energy and performance estimation with C code annotation.</li>
+
+ </ul>
+
+ <h3>External resources</h3>
+ <ul style="margin-top: 0pt;">
+
+ <li><a href="http://mspgcc.sf.net/" target="_new" title="mspgcc website">MspGCC</a>
+ website: GCC for MSP430 micro-controllers.</li>
+
+ <li><a href="http://gtkwave.sourceforge.net/" target="_new" title="Gtkwave website">Gtkwave</a>
+ website: VCD file viewer.</li>
+
+ <li><a href="http://kcachegrind.sourceforge.net/html/Home.html" target="_new" title="kCacheGrind website">kCachegrind</a>
+ website: performance analisys.</li>
+
+ </ul>
+
</div>
+
<!-- FOOTER -->
#include "footer.html"
<!-- FOOTER -->
19 doc/wsim-web/htmlx/tutorial.htmlx
View
@@ -20,7 +20,7 @@
<TD> <b>WSim tutorial</b> </TD>
<TD> How to start and use WSim with the WSN430 platform ?</TD>
<TD>
- <a href="./tutorials/wsim/index.html" target="_new">
+ <a href="./tutorials/wsim/index.html" > <!-- target="_new"> -->
<img style="border: 0px solid ; width: 44px; height: 48px;"
src="./figures/html.png" alt="" />
</a>
@@ -29,10 +29,21 @@
<TR align="middle" bgcolor="#ffffff">
<TD> <b>WSim tutorial</b> </TD>
- <TD> ICL BSN2 nodes within the <a href="http://www.wasp-project.org/">EU Wasp project</a><br>
- <img style="border: 0px solid " src="./figures/logo-wasp-150.png" alt="" /> </TD>
+ <TD> ICL BSN2 nodes <br><a href="http://www.wasp-project.org/">Wasp project</a>
+ <img style="border: 0px solid ; width: 100px;" src="./figures/logo-wasp-150.png" alt="" /> </TD>
<TD>
- <a href="./tutorials/wasp/index.html" target="_new">
+ <a href="./tutorials/wasp/index.html" > <!-- target="_new"> -->
+ <img style="border: 0px solid ; width: 44px; height: 48px;"
+ src="./figures/html.png" alt="" />
+ </a>
+ </TD>
+ </TR>
+
+ <TR align="middle" bgcolor="#ffffff">
+ <TD> <b>msp430 adc12</b> </TD>
+ <TD> How to use the Ti-MSP430 adc12 in simulation.</TD>
+ <TD>
+ <a href="./tutorials/wsn430-adc12/index.html" > <!-- target="_new"> -->
<img style="border: 0px solid ; width: 44px; height: 48px;"
src="./figures/html.png" alt="" />
</a>
5 doc/wsim-web/htmlx/userdoc.htmlx
View
@@ -7,7 +7,10 @@
<h1 class="settitle">WSim: Worldsens Platform Simulator</h1>
-<p>This manual is for WSim, version 0.8cvs </p>
+<p>This manual is for WSim, version 0.8cvs, </p>
+
+<p><b>This document is outdated. Current version of WSim includes new options
+as well as modifications with regards to this document. </b></p>
<h1>Table of Contents</h1>
<div class="contents">
2  doc/wsim-web/styles/style.css
View
@@ -268,7 +268,6 @@ acronym, .titleTip {
.sideBarTitle {
font-size: medium;
- font-weight: bold;
margin: 0 0 0.5em 2.5mm;
padding: 0.5em 0.8em 0 0;
text-align: left;
@@ -296,7 +295,6 @@ acronym, .titleTip {
margin: 0;
padding: 0 1em 0 5mm;
display: block;
- font-weight: bold;
border-top: 1px solid #eeeeee;
border-bottom: 1px solid #eeeeee;
}
6 doc/wsim-web/template/sidebar.html
View
@@ -20,17 +20,17 @@
<li><a href="./publications.html" title="Publications">Publications</a></li>
</ul>
</div>
- <div><h2 class="sideBarTitle2">Developpers:</h2>
+ <div><h2 class="sideBarTitle">Developpers:</h2>
<ul>
<li><a href="http://gforge.inria.fr/projects/wsim/" target="_new" title="Project website">Project website</a></li>
<li><a href="https://gforge.inria.fr/mail/?group_id=1304" target="_new" title="Mailing lists">Mailing lists</a></li>
- <li><a href="./contributors.html" title="External contributors">External contributors</a></li>
+<!-- <li><a href="./contributors.html" title="External contributors">External contributors</a></li> -->
</ul>
</div>
<div><h2 class="sideBarTitle">Contact:</h2>
<ul>
<li><a href="./contact.html" title="Contact">Contact</a></li>
- <li><a href="./related.html" title="Related">Related</a></li>
+<!-- <li><a href="./related.html" title="Related">Related</a></li> -->
</ul>
</div>
</div>
Please sign in to comment.
Something went wrong with that request. Please try again.