C166, ST10, CAN & USB Training Courses

Hitex 166 Introductory Training Courses At The University Of Warwick Science Park


Regular CAN Tutorials


Hitex C166/ST10 Introductory Training Courses At The University Of Warwick Science Park

Hitex UK is unique in that it offers formal English language classroom training in the C166 architecture and its tools to help new users get the best from this innovative architecture. We can also provide bespoke short courses to cover specific aspects of the field which are especially important in customer’s own projects. A few days spent on one our courses will save you weeks of trial and error experimentation and gives you the benefit of our years of experience right at the start of your project, when you most need it.


C166/ST10 Classroom Training

training roomHitex has developed a number of short courses, which will help you get the best out of the innovative 166 architecture from day one. While most engineers will learn how to best apply the C language and the 166’s extensive peripheral set after several projects, it is obviously preferable to know the “tricks of the trade” at the start of the first project!

All the courses are of a hands-on nature, with each student having a PC equipped with C compiler and debugger, C167CR card plus our custom training IO board, equipped with active signal sources, LCD display, keypad, CAN etc.

The courses are held at our UK headquarters on the University Of Warwick Science Park in Coventry. By special arrangement, courses can be conducted at customer’s own sites.

Introduction to the C166 Compiler and C166 Architecture

A two-day course intended for all engineers that are new to the 166 family and its development tools. It is strongly recommended that at least one member of a project team attends this course. It is most beneficial for students to have spent some time using the tools and CPU beforehand!

Our most popular introductory course is designed to get you to the point where you can start to produce 166 applications that make use of all the major peripherals. You will also use the most import of the numerous ANSI-extensions added to make the C language better suited to the job of real-time microcontroller programming. A learning-by-doing approach will be taken so that you will have a chance to try new language features straight away. A working C167CR-based microcomputer is provided, equipped with our HiTOP166/WIN source level debugger with which programs can be tested.

It is assumed that you are familiar with the fundamentals of the C language and have some understanding of assembler programming, preferably on the 167. Each language feature is covered by a programming exercise. You have the choice of creating the program from the specification given or using the “shell” modules, which have the basic framework of the required program already mapped out.

The content is based on the most common questions asked by 166 users and our own experience of what really counts in 166 programming. It is unlikely that you will remember everything once you start using 166 for real but what you will find is that you’ll be able to refer back to the notes should anything difficult crop up.

Each of the major peripherals is covered by the writing of a small application, which also includes interrupts and the use of the 166’s unique peripheral event controller (PEC). Optionally, an extra half day module on the CAN peripheral can be added.

Course Number
S2166-KE: For Keil C166 compiler users

Course Number
S2166-TA: For TASKING C166 compiler users

Course Charges
All standard courses are charged at £225 per day per delegate. Custom courses are charged at a rate of £300 per day per delegate. We can arrange suitable overnight accommodation where necessary, at extra cost.

S2166-KE (KEIL) Course Dates 2001
7th & 8th February 2001
4th & 5th April 2001
4th & 5th July 2001
5th & 6th September 2001
7th & 8th November 2001

Others may be scheduled...please contact us for latest dates.

S2166-TA (TASKING) Course Dates 2001
Please contact us for the latest scheduled dates.

Contact Louise Barnes for course dates and booking details.


Course No. S2166-KE: C166 Introductory Course - Example Detailed Syllabus

1. Overview
1.1 Course Introduction
1.2 Basic Objective In C166 Programming
1.3 Course Schedule

2. Setting Up The C166 Compiler System
2.1 C166’s Environment Variables
2.2 Multiple Include File Search Paths

3. Creating A New Project
3.1 Background Information On C166 Projects
3.1.1 Basic Data Types In C166
3.1.2 Basic Terms Used In C166 Programming
3.1.3 Memory Map Of EVA167 Board And Example Program
3.2 Setting Up The Directory Structure For The Example Project (Worked Solution)
3.2.1 Necessary Files To Build A Program
3.2.2 Laying Out A C166 Program Module (Source File)
3.2.3 L166 Linker Input Files
3.3 Creating The Project
3.3.1 Setting Up The Project Structure
3.3.2 Setting The Compiler Options
3.3.3 Setting The A166 Assembler Options
3.3.4 Setting The Linker Options
3.3.5 Setting Up The Make Options
3.3.5.1 Note On Register Masks And Global Register Optimization
3.4 Building New Projects For The First Time

4. Using The HiTOP166/WIN Monitor-Based Debugger
4.1 A Summary Of Setting Up A New uVision Project

5. Using uVision And HiTOP166/WIN In Program Development

6. Configuring The C Environment To Your CPU and Hardware
6.1 CPU-Specific Include Files
6.2 Configuring STARTUP.A66 And START167.A66
6.2.1 Configuring STARTUP.A66
6.2.2 Configuring START167.A66
6.3 The Two Stacks In C166
6.3.1 Setting The Size Of The User Stack
6.3.2 Advanced Technique - Placing The User Stack In On Chip RAM
6.3.3 The System Stack
6.4 Setting Up The BUSCONx ADDRSELx Registers
6.5 Special Notes On The Startup Files
6.6 EVA167 Board CPU Setup Requirements
6.7 Configuring The Runtime Environment
6.7.1 Adapting printf() To Other Output Devices
6.7.2 Configuring scanf() For Other Devices

7. Inter-Module Linkage
7.1 An Intelligent Include File Method That Will Avoid Many Program Build Errors

8. The C166 Data Page-Addressing And Code Segmentation
8.1 The Data Page Pointers
8.1.1 A Fast Way of Addressing a Large Data Memory Space
8.1.2 The DPPs expressed diagrammatically
8.1.3 Example Of Using DPPs
8.2 Using The DPPs
8.3 Code "Segments"
8.4 DPP Usage Summary

9. C166 Compiler Memory Models
9.1 Summary Of C166 Type Qualifiers That Determine Placement Of Data
9.1.1 Default Data Object Placement Overriding
9.1.2 C166’s Type Qualifiers Summary
9.2 Controlling Constant Data
9.3 Setting Up The DPPs
9.3.1 Special Allocation Of DPP’s To Create Customised Memory Models
9.3.2 Special Memory Maps Possible With C166 v3.00
9.4 Automatic Placement Of Data
9.5 CLASSES And SECTIONS
9.5.1 How Type Qualifiers Relate To Class Names In C166
9.6 The Difference Between NDATA0 And NDATA
9.6.1 The NOINIT #pragma
9.7 Modules And SECTIONs - Placing Things At Absolute Addresses
9.7.1 Special Note On Windows95 and NT4
9.8 Coping With The Special Sections "?C_CLRMEMSECSTART" And "?C_INITSEC".
9.9 Placing Real Data At Fixed Addresses
9.10 Using The RENAMECLASS Control
9.11 Summary Of Placing Objects At Fixed Addresses With The Linker:
9.12 The ORDER Pragma
9.13 The ASSIGN Linker Control
9.14 The #pragma pack(1) Control
9.15 Using "SECTIONS" With The C167CR CAN Peripheral
9.16 Constructing A Memory Map For Small C167CR Systems
9.16.1 A Typical Small System Memory Map
9.16.2 Constructing Linker Input File

10. Non-ANSI Code Saving Tricks
10.1 Special Note On Bits In Structures
10.2 Bit Fields And Flags In C166
10.3 Simple Bit Flags
10.4 The _testset_() And _testclear_() Intrinsic Functions
10.5 Intrinsic Functions
10.6 The volatile Keyword

11. Accessing Absolute Addresses
11.1 The MVAR and MARRAY Macros
11.1.1 Things To Be Aware Of With This Method

12. Pointers In C166
12.1.1 The Various Pointers In C166
12.1.2 Summary Of Pointer Declarations
12.1.3 Special Note On #pragma MOD167 For C167/5 Users
12.2 Variable Pointers To Absolute Addresses
12.3 Placing The Pointer Itself
12.4 Jumping To Variable Addresses
12.5 Pointer Casting And Conversions
12.6 Pointers To Local Data
12.7 Addressing The C167CR CAN Peripheral Via Pointers

13. Using Peripherals With Zero Software Intervention

14. The General Purpose Registers, Register Variables And Registerbanks
14.1 The Context Switch
14.2 Interrupts In C166
14.3 The VECTAB Linker Control
14.4 Macros That Simplify The Setting Of Interrupt Priorities
14.4.1 Application Example - 32-Bit Captures
14.5 The Interrupt-Driven PEC System
14.5.1 Setting The PEC Channel Number
14.5.2 Setting Up The PEC System
14.5.3 Special C166 Language PEC Features Explained
14.6 Switching Registerbanks In C
14.6.1 The USING Control
14.6.2 Sharing Register Banks
14.7 When Your C166 CPU Keeps Flying Off Into Space...
14.7.1 The Trap.C File
14.7.2 Common Reasons For Getting To Unexpected Traps
14.7.3 New Control for Interrupt Functions
14.8 Advanced Technique - Simulating Static Register Variables
14.9 Fixing Register Banks At Absolute Addresses
14.10 Controlling the CP directly -Some Tricks With Registerbanks
14.11 Special Note On idata (classes IDATA0, IDATA) For C165/7
14.12 Bit Addressable Data
14.12.1 Special Function Bits
14.12.2 Note on declaring an sbit as external

15. Assembler Interfacing - In-line Assembler
15.1 Calling Assembler Functions From C166
15.1.1 Coping With Start Addresses And Parameters
15.1.2 Pointer Passing To Assembler Functions
15.2 Using C166 To Write Assembler Functions

16. The Part 2.0B CAN Module
16.1 CAN Registers
16.1.1 Bit Time calculation
16.1.2 Resynchronization
16.2 Message Objects
16.2.1 Using The SECTIONS Control To Access The C167CR CAN Peripheral
16.3 Setting Up The CAN Module Baudrate And Sampling Point
16.4 Configuring The CAN Module For Transmit
16.5 Configuring The CAN Module For Receive
16.6 Configuring The CAN Module For Remote Request


Hitex/Infineon Hands-On CAN Tutorials

Hitex has teamed up with Infineon UK to run a series of unique “hands-on” CAN tutorial sessions. These half-day seminars cover the basics of Controller Area Networking (CAN) from the fundamental concepts of “messages” and non-destructive bitwise arbitration up to application layer topics such as DeviceNet and CANOPEN. Unlike all other CAN seminars, delegates are equipped with a PC, C167CR-based training boards and implement the various CAN features as they are introduced on a real 10 node CAN network.

We have found that it is only once engineers make their own network that the real benefits of CAN are brought home! If you are uncertain as to what CAN is and whether it is relevant to your forthcoming projects, you are strongly advised to attend a session at our University Of Warwick base! Please contact Louise Barnes for tutorial dates and booking details.