ABC Manual
ABC Manual
Version 5.2
ABCmini
ABCmaxi
The ABCmini and ABCmaxi board are designed by Investment Technologies Pty. Ld. Boards are manufactured by Austrol Pty. Ld..
Hot Chip is a registered trademark of Dick Smith Electronics (www.dse.com.au). The ABC Edit program is Investment Technologies. The AT90S8535 is manufactured by the Atmel Corporation (www.atmel.com). ABC is an acronym for AVR Basic Controller.
The Investment Technologies HotChip boards use Atmel AVR AT90S8535 microcontrollers.
Page 1
Preface:
After waking up to a sack bulging full of presents on Christmas day (2003), I was delighted to unwrap a white box bearing a large picture of a microchip and the letters Hot Chip Starter Pack. I had seen advertisements for these Microcontrollers before, but to my dismay they all had a price tag of over AU$90 which was well out of my (then) 14-year old budget for interesting items that I had no current need for. I had saved up my money a few years ago and had bought an AU$379 LEGO Mindstorms 1.5 pack; containing LEGO pieces, software and a programmable brick (LEGO Mindstorms information is available at www.legomindstorms.com). This set was a great introduction to Microcontrollers (I still love it), as the chunky, yellow brick that was the core of the set had a small computer-programmable Microcontroller inside. This was very easy to use as the software is picture-driven, and downloads through an IR (infra-red) link to the brick. I had resisted experimenting with Microcontrollers before was the apparent difficulty programming them and their price. I read issues of the Australian electronics magazines Silicon Chip and the now-ceased Electronics Australia, with many of the articles showing complex programming and devices required to program the external EEPROM memory ICs. I am an avid user of Visual Basic 6, and I was even-more excited to find that the Hot Chip supports BASIC and ASM (Assembler) code, and has an easy-to-use cable interface with the computer. The words Quick Start Manual and Hints on the box rose my hopes even more. When I installed the software however, I found the quick-start manual to be mediocre at best. With a bit of searching of the softwares help file, you can find out how to make basic programs in the ABCedit program, and with even more searching, you can find out how to download a program to the microcontroller chip. The software is functional, but easier and more powerful software packages do exist. For my 15th birthday on the 14th February 2004 (Valentines day), I received money from friends and relatives and an ABCmaxi board from my parents. This did not include the software or cables that the ABCmini included, but this was due to it being only the standard pack (not starter pack) half-priced at Dick Smith apparently they do not intend to sell it anymore in Australia, and are getting rid of their stock. Not to be defeated, I set out to understand its workings. Later I used the money I had saved, together with my 2004 birthday money to buy a second-hand Compaq 700MHz laptop, which I am writing this on.
READ THIS ENTIRE DOCUMENTATION BEFORE STARTING, AS SOME IMPORTANT INFORMATION IS DISCUSSED LATER IN THE TEXT THAT MAY DAMAGE YOUR BOARD IF NOT FOLLOWED.
This is mainly a hardware manual, not a software manual. Its primary purpose is to teach a novice user how to correctly set up the ABCmini, ABCmaxi or separate AT90S8535 microcontroller for programming and how to interface it to everyday components. Some programming software is discussed, but if you wish to learn a microcontroller programming language (such as C, Assembler or BASIC), please consult your softwares manual(s).
Page 2
Contents:
Chapter 1: The ABC Range
ABC kits available from Austrol Add-on Boards from Austrol
Page 3
Chapter 8: Appendix
AT90S8535 Circuit Diagrams ABCmini Circuit Diagrams ABCmaxi Circuit Diagrams Circuit Diagrams for the ABCmini and ABCmaxi AT90S8535 Package Diagrams BASCOM Programming Flowchart ABCedit Programming Flowchart Standard LCD pin descriptions Microcontroller Errata What to do when youre out of Parallel/Serial ports Author Info Bibliography/References Disclaimer
Page 4
The Maxi starter kit contains the ABCmaxi board, software CD, serial cable and programming (parallel) cable. No add-on boards are included you must purchase these separately or create your own.
This educational kit is an excellent introduction to microcontrollers (provided you have this document handy!). It contains the ABCmini board, motherboard, cables, software CD and all six compatible add-on boards.
Add-on boards from Austrol: Austrols add-on boards are only compatible with the ABCmini, when used in conjunction with the ABCmini Motherboard and connector cables.
ABCmini Motherboard
This board allows you to plug in your ABCmini via the 40pin socket. It contains 8 4-bit connectors on-board for you to interface with Austrols other add-on boards.
Page 5
Keypad Module
Requires two I/O connectors. A 4x4 matrix of pushbuttons for user input.
Although its names a mouthful, this allows you to interface the ABCmini to high-voltage and high-current devices. Driven by a standard logic I/O, this will drive up to 33V at 2.5A without an additional heatsink.
Some devices use a higher logic level than 5V, or you may wish to sense higher than logic level voltages on an I/O. This board will allow four inputs up to 24V each act as a digital signal.
Requiring two I/O connectors (like the keypad module), this board will switch 8 light duty (less than 100ma) loads via 8 separate open-collector BC547 NPN transistors.
LED Board
This add-on board provides 8 LEDs powered by two 4-bit connector ports. They each have current-limiting resistors and are wired in a reverse logic formation (low or digital 0 signal turns the LEDs on).
Page 6
Four relays allow medium-heavy loads (max 275VAC 5A or 35VDC 5A) to be switched via a single I/O connector.
Page 7
Page 8
Why Atmel?
Atmel have a huge range of microcontrollers. The PIC range may be bigger, but many people are turned off using the chips as in many cases programs compiled on one PIC microcontroller would not run on another and the PIC language was too complex for the average user. All Atmel AVR series chips run on a standard chip instruction set (there are many languages available to the user which all compile to the standard hex or binary file for the chip) and consequently programs written for one chip will run on any other chip from the Atmel range provided that both chips have sufficient memory and the correct features that the program requires. Atmel chips are easy to program (and do not need to be removed from the circuit for programming), are cheap, are reliable, have many powerful features, use low power and have incredible clock speeds some of over 17 million instructions per second. In addition to the TINY, 90S, MEGA and other AVR series microcontrollers, Atmel manufacture security and other embedded systems. The Atmel website is located at www.atmel.com. You can access Atmels incredibly good customer service and ask any AVR related question you desire by sending an email to [email protected]. It has been my experience that Atmel always reply within three or so business days and always give an appropriate and informative reply.
Page 9
Page 10
I have had a report from a professional that the removal of the crystal is not necessary, unless you are using a rapidly changing signal or high-impedance signal (the crystal can keep the port high after power is removed). Leaving the crystal in place adds approximately 30pF of capacitance. I suggest leaving the crystal in place, and only removing it if you experience trouble with the ports.
Page 11
The jumper on the left is J18, located by itself at the left of the board. The other jumpers (J17) are located near the memory expansion slot.
Any clock source can be connected to the XTAL inputs of the AT chips; an active oscillator (provides a clock source with only one wire needed) can be connected directly to the XTAL1 input or passive oscillators (like quartz crystals) can be connected to both inputs for the internal oscillator. All passive oscillators must be parallel resonance to work correctly.
Page 12
Overclocking will most-likely lead to an inability to program the device. Users suggest using the 8MHz crystal for programming, and then switching to the higher speed crystal for running the program after it is completed. Im interested in knowing just how far an AVR can be overclocked reliably. Ive seen simple programs executed on an ATTINY2313 running at over 20MHz (up from 10MHz or so) but if you overclock, please send me the details (including what internal systems your program uses, your chip type, maximum rated speed and your overclocked speed.)
Page 13
Even though the task is only two simple mathematical operations, the microcontroller requires 5 clock cycles to perform it. The AT90S8535 micro runs at 8MHz 8 million cycles per second, so each instruction would take approximately 12.5 x 10^8 seconds (0.000000125 seconds per cycle) so the 5 cycles would take approximately 6 billionths of a second to complete. The 8535 contains 32 registers that can be used for arithmetic (mathematical) operations, plus many other control registers that change or return the status of the I/O ports and MPU features.
You should be very careful when switching an output pin to an input pin, as the PORT register may be set to an unexpected state, causing problems in the programs execution.
Page 14
Config Timer2 = Timer , ASYNC = 1 , Prescale = 128 On TIMER2 Myisr ENABLE INTERRUPTS ENABLE TIMER2 DO Your program code goes here LOOP MYISR: Code to be executed each second when using a 32.768KHz Crystal RETURN AVR microcontrollers contain several different interrupts, which can be enabled or disabled individually. Each hardware timer has several interrupts, as does some pins and special subsystems (serial byte received, etc.) Because interrupts are hardware as opposed to software, they are executed immediately. When an interrupt actives (known as firing), the current program position is saved and the corresponding interrupt code run. When the routine is finished, the program continues from the point where it left off.
1 12^7
0 02^6
1 12^5
1 12^4
0 02^3
1 12^2
1 12^1
1 12^0
Page 15
The above data line has transmitted the binary information 10110111 to the receiving device. This is enough data to form a byte of 8 bits, making the decimal equivalent of 183 - ASCII character full stop (period). Communication with a clock signal is useful when the communication speed varies, but if the speed is known, a clock signal is unnecessary. Devices communicating with a computer (via serial link) are configured to run at a preset transmission speed; data is sent in bytes, with a start bit (high bit) signalling the start of a byte transfer, and a stop bit ending it. The amount of start bits and stop-bits are customized by the devices software. To prevent incorrect information (corrupt data) from being used by the receiving device, a checksum could be added to the end of each block of data. A checksum is a single byte, the value of which is the sum of all the bytes sent in the previous block. Once the checksum has been transferred, the receiver can check to ensure the data it has received is valid if not, it requests the data again. ASCII is the global standard for data exchange and storage. Because each byte of information can only store a binary number, the ASCII standard is a table that converts numbers to their character equivalent. You can find the ASCII table in hundreds of places on the Internet or in many computer related books.
Page 16
When the wires are like this where (a) is positive, this represents a logic 1 Wire a) + -------->--------> Wire b) - --------->--------> When the wires are like this and (a) is now negative, this represents a logic 0 Wire a) - -------->---------> Wire b) + -------->--------> The IC's that generate the RS485 signal continually change the polarity of the wires depending on whether a logic 1 or 0 is required. The voltage difference between these wires is typically about 5V or less and must be less then 20V between the 0V reference and either wire (a) or (b). When it is transmitting, both of these wires form the Tx signal - just the polarity of the wires changes to indicate the logic 1 or 0. When data is to be received the RS485 IC turns off it's internal transmitters and enables receivers inside the IC. Now the polarity of the 2 wires forms the incoming 0's and 1's.
Above is the dual receive circuit. The XOR (you can also use an OR) chip allows either signal to enter the UART (Receive pin, or the Rx pin) on the AT90S8535. If both signals are received at the same time, the XOR will give a constant low (logic 0) output (standard OR chips will give a logic 1). If the chip is halfway through a transmission when the other communication protocol sends a message, the AT chip will become confused resulting in a garbled input. A more advanced version would use a port pin to control access to the input.
This dual transmission circuit is slightly more complex than the receiving one above. A high signal on the Select Port pin will send data through the RS-232 communication port, and a low will result in data being sent through the RS-485 protocol. The circuit relies on standard TTL logic gates to perform the switching the inactive protocol will be pulled low. Both circuits can be integrated into a small board and connected to the correct jumpers on the maxi. The logic chips will also need an appropriate 5V supply from the on-board regulator.
Page 17
These jumpers are located to the right of the memory expansion slot and near the LCD connector on the maxi board. Connect the circuits to the pins shown above on the ABCMaxi. You should place three jumpers in the manner shown. NB: Although reversible, this modification may damage your board if incorrectly wired. Please read the disclaimer at the end of this document before attempting this modification.
Unlike the IC bus outlined below, the SPI bus uses the slave chip select pin (SS) to activate chips (the IC bus uses a data address system) and can send data both ways instead of the ICs master-to-slave transmission. Port B bits 4, 5, 6 and 7 are reserved for the SPI interface if it is enabled.
Above is an example of a SPI enabled IC, the TLC542 A/D converter chip. This chip has 12 A/D inputs; 11 are external as the AN# pins, and the twelfth is connected internally to half the supply voltage as a battery status indicator. The /CS pin must be connected to ground, while the CLK, SI and SO pins are attached to the microcontrollers SPI port. The channel is selected in the form of 4 address bits, and the A/D result is sent via the SO pin. A/D operations take 20s after the address is received the EOC (end of conversion) pin is pulled high when the conversion is complete.
Page 18
mode, or 2^10 (1024) with 10-bit addressing on each bus, each with a unique address. It is not recommended to connect more than 20-30 devices upon 10 feet - then you need a repeater circuit. A master device (such as a microcontroller) would send data down an IC bus to a slave device (such as a port extender chip), which would then react to the sent data. The IC bus has the advantage of being simple to implement (only two wires between components) and manufacturers produce many different types of low-cost IC enabled chips. IC chips will not work with the RS-232 (standard serial) communication protocol and vice-versa. Both lines (SCK and SDA) must be pulled high by two 4.7k resistors to the 5V rail. Because there are several devices connected to a single bus, you must address the device that you wish to communicate with. Datasheets that come with the IC-enabled chip will state the address as a 7bit binary number (for example 1011011) although 10 bit addressed devices exist. Devices such as IC EEPROMS made by a single manufacturer will all have the same address, leading to problems when several of the same chips are placed on the one single bus. To overcome this, there may be several address bits that are user selectable, indicated by a letter instead of a digit in the address (e.g. 1101xx1). These chips will come with pins labelled A followed by a number (such as A0 or A3). Connecting the external A pins to GND or VCC will cause the address bits to become 0 or 1s, preventing conflicts. If your IC bus is very long, an IC terminator will probably be required to extend the maximum length (from master device to last slave device) to ~80cm. The original schematic was designed by Detlef Queck, and recreated by myself in the freeware Eagle schematic editor.
The January 2004 edition of Silicon Chip has a Picaxe-18X 4-Channel Datalogger project, which has a more detailed explanation of the IC bus (that cannot be added here due to copyright reasons). NB: Although the IC communication uses two wires, it CANNOT be directly interfaced to the RS-485 or RS-232 (serial) communication protocols.
Page 19
With ABCedit, the BASIC command to enable the Watchdog is enable watchdog [cycles]. The watchdog [cycles] parameter can be omitted to set the watchdog to 2048K cycles, or one of the following values can be specified: 0 1 2 3 4 5 6 7 16,000 cycles 32,000 cycles 64,000 cycles 128,000 cycles 256,000 cycles 512,000 cycles 1024,000 cycles 2048,000 cycles
To prevent the Watchdog from resetting your AVR chip, you must inset a pat command (in ABCEDIT), in the main loop. To force a reset, a kick command must be executed. BASCOM uses different keywords; Config Watchdog = xxxx (where the xxxx is cycles, such as 2048) command is used to set up the watchdog, and a Start Watchdog command to start it. Instead of the pat command used in ABCEDIT, BASCOM uses the keyword Reset Watchdog. Watchdog is invaluable when a lockup could cause hardware failure, for example when a LED matrix is being driven without current limiting resistors (scanning speed prevents LED from burning out) to increase its brightness and reduce cost. In this situation, a lockup would cause the LEDs to destroy themselves. The watchdog would prevent this by resetting the AVR when not reset via the program.
Page 20
access and Fault Generation, where under-voltage/over-voltage is used to bypass chip security. The new MEGA series are the most secure, but the 8535 has modest level of protection from attacks. Generally, invasive techniques are extremely difficult and as such usually only a dedicated laboratory and a person with sufficient expertise could perform this operation, but the other two methods (Software and Fault Generation) are rather simple. Atmel makes a special range of secure microcontrollers, which have a SD pin. The SD pin is actually short for Self Destruct, and will destroy the chip if activated by an external security circuit. Commercial products usually protect their ICs (and mask the chip part number) by covering the entire chip in a black resin. Once this resin hardens it cannot be removed as it has a higher melting point than the maximum temperature of the chip it protects. To prevent access from the underside, these protected ICs are surface mount. If you wish to protect your separate AT90S8535 chip (dont try this with the ABC boards) you can try to blow or destroy the MISO (Port B.6) pin internally so that the program cannot be extracted without Invasive methods see above. To destroy a pin internally, use a 9V battery connected so that the positive lead connects to the chips negative pin (the negative lead of the battery is then connected to the pin to be blown). Placing the 9V reverse-bias onto a pin on the 8535 for approximately two seconds should damage the pin sufficiently but leave the rest of the chip intact. Before attempting this it should be noted that it is not an exact process, and I take NO responsibility for any damage to your microcontroller as a result of this procedure. An extract from a reply I received from the Atmel Technical Support on the subject offers the following caution; Even though this might seem to disable the programming interface, other functions in the device may also be damaged. Characteristics of the device, like power consumption, life time or ESD structures, may change in the process. The following pictures are courtesy of SXPilot450 from the AVRFreaks.net forums.
If, after an attempt at blowing the MISO pin, the device can still be verified, try applying the voltage for a longer period. It should be noted that blowing the pins does not protect your micro against invasive attacks where the pin can be bypassed by skilled hackers with precise equipment and a lot of time on their hands.
Pulse-width Modulation:
Most microcontrollers (the 8535 is no exception) have the facility to perform Pulse Width Modulation commands (PWM commands) to control the speed of motors. In short, PWM rapidly cycles an output
Page 21
port at a desired frequency at the supply voltage (5v) usually to speed up or slow down a motor. Since digital ICs cant output an analogue voltage (variable voltage), the workaround uses the fact that rapidly pulsing the motor will cause it to rotate with a speed proportional to the frequency (similar to a steppermotor). PWM has the added benefit of using the motors full torque at variable speeds, unlike analogue voltages. To connect a motor to a PWM output, attach one wire to an output port (or a transistor for more current) and the other wire to the negative supply. To operate the motor, switch the port on with a PWM command. You can also use PWM for a limited range of other devices. PWM commands to LEDs will change the apparent brightness, as the LED is cycled on and off too fast for the eye to detect, but does not have enough time to build up to full brightness. This has the same effect as supplying the LED with a lower voltage than required to shine at full brightness, but does not change the supplied voltage, which stays at 5v. Most new mobile phones use pulse-width modulation to make the backlit screen fade in and out, and you can use PWM at varying frequencies to produce tones from a speaker.
Page 22
The ABCmaxi has been designed for mains power (via plugpack) and so has a reverse-polarity protection diode installed. An alterative method of reverse-polarity protection exists, using a MOSFET. This has a very low voltage drop and is cheap to implement. For the circuit, do a search on Google.
Page 23
A device is said to be sinking current when the current flows from the positive (5V) line into it, while sourcing current is the opposite (current flows from the device to ground). The 8535 can source only 3ma per pin, but sink 20ma per pin. Below is an example of a LED being powered by current that is sunk by the 8535 microcontroller.
When devices are powered in this manner, they are activated by reverse-logic, where a low (logic 0) signal will switch on the LED, and a high will extinguish it. The 8535 can sink more current (~10ma per pin) than it can source (~3ma per pin).
Page 24
(Note: The wiring shown the diagram is mandatory only in the ABCEDIT program supplied with the ABCmini. Most other programs such as BASCOM allow the user to specify the ports and pins used).
Description
GND VCC (5V) Port C.1 GND Port C.3 Port C.2 (Not Connected) (Not Connected) (Not Connected) (Not Connected) Port A.5 Port A.4 Port A.7 Port A.6
Connects to on LCD
GND 5V RS Contrast E R/W (Not Connected) (Not Connected) (Not Connected) (Not Connected) DB5 DB4 DB7 DB6
The original Maxi had three unused pads for a 10K-ohm variable resistor for the LCD contrast. Before production, the variable resistor was removed and a zero-ohm - direct connection - resistor was placed between the contrast pin and GND because the Maxi designer (curse him!) decided that a contrast pot was not necessary, although it certainly is on some LCD screens, but the three pads were included. If you have the original Maxi board, you can remove the zero-ohm resistor on the board and replace it with a 10K-ohm trimpot. Version 2 of the Maxi board does not have this zero-ohm resistor at all and so an external pot must be used. Some Extended Temperature displays require a negative voltage on the contrast pin to function. In these cases you will need to find your own way to get a negative voltage to the CONTRAST pin of the LCD.
The above example uses Port D bits 4-8, but you can use any port you wish. To read the buttons, first disable the LCD, and send all the data-bit lines (Port D bits 4-7) high. If Port D.8 is low, no buttons are pressed and the LCD should be re-enabled (or disabled until new text is to be sent to the LCD). In the event of Port D.8 being high, all the data-bit pins are sent low, and then each individual pin is pulled high and the control line (Port D.8) is read a high value indicates a pushed button. You will also need to add a 1K resistor to the control line (Port D.8) to ground to act as a pull-down resistor (See next section) or you can enable the internal pull-ups and invert the logic. There is a brilliant and free LCD documentation available on the Internet at http://www.mil.ufl.edu/imdl/handouts/lcd-faq.htm. This page is the equivalent of a datasheet for the
Page 25
most popular driver chip, the HD44780 (or clones such as the chip used on the Dick Smith LCDs) but with longer and human-understandable descriptions and explanations.
When this pushbutton is not closed, the port will read logic 1, or 5V. Pushing in the button will make the port read logic 0. The logic can be reversed (to form a pull-down resistor), by swapping the position of the pushbutton and resistors, like this:
This example will read logic 0 when not pushed, or logic 1 when pushed. The Atmel chips also include internal pull-up resistors (the value of which can vary between 35k to 120k ohms), which can be enabled via software - you will need to consult your programming softwares manual and the PORT, PIN and DDR section of this manual for the code to do this. If you are using a sensor that changes resistance after a stimulus, such as a CDS-cell light sensitive resistor, you can place this in the position of the pushbutton and connect to an A/D port (one of the port group A ports). This will form a voltage divider whose voltage will vary as the resistance of the sensor changes in response to a stimulus. When connecting sensors that use the Atmel chips internal pull-up resistors, you must connect the sensor to GND, not VCC. For example, a switch connected to the port must be connected directly to GND for the pull-ups to work. The internal pull-up resistors can be activated by configuring the PORT and DDR registers (see The DDR, PORT and PIN registers section). The Atmel microcontrollers use a balance system for determining whether a port is logic 0 or 1. A good analogy of the port pins is a set of old-fashioned scales with positive at one end and negative at the other. The port is read as high if there is more current flowing from VCC (+5V) to the chip than is flowing
Page 26
from the chip to ground and vice-versa. Even if the current is very small (like that which flows via the pull-up resistor), the port will still read high or low accordingly. Note: the negative symbol is used because it corresponds to the symbols on a normal battery. The AVR microcontrollers cannot be operated with negative voltages over -1V.
Page 27
Graphical Representation
Pull-up, no input
Pin Logic Fluctuating between High and Low the pin picks up stray charges in the air. This can be used a seed for a random number generator. High, Digital 1.
Low, Digital 0.
High, Digital 1.
Low, Digital 0.
Low, Digital 0.
High, Digital 1.
Standard Transistors:
Unlike MOSFETs, the humble signal transistor is not designed for switching high-voltage, high-current loads although high-power transistors are avaliable. Transistors are cheap and very useful for switching circuits using a standard voltage. With the ABCmaxi and ABCmini, the power supplied is 5V (via an onboard regulator) and several hundred milliamps. Due to the Atmel chips design, and the microscopic size of the parts inside the chip, the AT90S8535 can output the full supply voltage of 5V, but at only 20ma or so per pin. This is only enough to run one low current LED not very useful. A transistor, coupled with a 1K-ohm resistor at the output will switch the full supply voltage and current, provided that the supply current is lower that the maximum rated for the transistor.
Page 28
There are thousands of available types of transistors around in the world, so you will need to check the specifications of your part. In my examples, I use a bog-standard BC547, approximately 40 cents from Jaycar. This is a NPN type signal diode suitable for the above example. Turning on PC1 will turn on both of the LEDs attached to that ports transistor.
MOSFET Transistors:
MOSFETs are special transistors designed to switch large loads from a small current. Many MOSFETs come in a TO-220 package, similar to a voltage regulator.
A typical MOSFET It is a good idea to use a MOSFET to switch a high-current item (such as a globe or relay), as the outputs of the AT90S8535 can only handle 20ma at 5V. Jaycar and other electronics stores generally stock a range of MOSFETs, with a maximum voltage ratings varying from 60-600V or more. The onboard ABCmaxi MOSFETS do not get sufficiently hot to cause damage to themselves when running a small voltage and current (up to 6 amps), but will require adequate heat-sinking if the load current is higher. To use a MOSFET, you will need a resistor to limit the gate voltage. 100 Ohms is adequate for the AT90S8535 (See the Circuit Diagrams for the ABCmini and ABCmaxi section for typical schematic) to operate the transistor. Please note that the diagram shown at the start of this section indicates the pinout for a typical MOSFET. You should ALWAYS check the specific pin-out for your MOSFET, as this may differ. Connecting a MOSFET incorrectly can have spectacular (and damaging) results, especially with high-current high-voltage applications. To make the MOSFET control a device, that devices power supply should have its ground connected to the same ground as the supply that controls the gate. In the ABCmaxis case, the 12V supply has its ground connected to the same ground as the regulated 5V. The devices negative terminal should be connected to the Out on the MOSFET, and the external supply (e.g. 12V) should be connected to the devices positive terminal. The GND on the MOSFET should be connected to the common ground. By applying a small voltage to the gate of the MOSFET, via the 100 ohm resistor and 5V 20ma output of the AT90S8535 chip, the MOSFET will conduct its GND and Out, switching on the device. Heres an example:
Multiplexing LEDs:
In many applications, you will need a circuit that can drive many LEDs at once. Regardless of the amount of I/Os a microcontroller has, you will inevitably run out or it will become impractical to program so many ports. Consider the following display:
Page 29
This has four LED digits, the active digit selected by a positive voltage to the Digit pins at the top, and GND on the segments at the bottom. Each segment should be attached to a port with a 220-Ohm resistor. This is compact and easy to use, but has the problem of only being able to light one digit at a time. Fast microcontrollers - such as the AT90S8535 used in the ABCmaxi and ABCmini - can overcome this problem using a method called multiplexing.
Transistors are connected on the Digit pins (as shown), and to an individual output on the ABC. Each segment is also connected to a separate I/O pin. When programming, you should make the ABC board send Digit 1 high or low (depending on the display) and light the segments you want Digit 1 to have, then switch off Digit 1 and select Digit 2. Continue this all the way through the number of digits in the group, lighting each digit for only a fraction of a second. When each digit it shown (or refreshed) many times a second (15-30 refreshes per second) a phenomenon called Persistence Of Vision causes the display to appear as if all of the digits are on with the correct numbers, without any flickering the same system employed on TV and monitor screens. If the refresh rate is too slow, the display will flicker. This method, when used with 7-segment displays, uses 8 I/O pins for one digit (one full port) plus one I/O pin for each additional digit. The multiplexing method can be applied to dot-matrix displays as well (above). With this method, LEDs are addressed individually. Writing the letter A on this 4x4 dot-matrix display would light the following LEDs: Column 1: Column 2: Column 3: Column 4: Row 1 Row 1 Row 1 Row 1 Led On Row 2 Row 2 Row 2 Row 2 Row 3 Row 3 Row 3 Row 3 Led Off Row 4 Row 4 Row 4 Row 4
In this method, the Columns take on the same role as the Digit Pins in the 7-Segment Display. A Column is held high, while the rows to be lit are held low (non-lit rows are neutral). Each column is turned on, and its LEDs lit until all rows have been show, in which case the cycle repeats for another refresh cycle.
LEDs can come packaged in a matrix connection like this TC07-11HWA. This has internal connections like the LED matrix shown above. Add several together to create a moving or static display. I could not find this part in the DSE or Jaycar catalogues; it might need to be ordered specially off the Internet. Check your local electronics distributor.
Page 30
When using the LEDs, remember that a 270-ohm resistor is needed on the column OR row. I suggest using the column, as there are fewer resistors required. Normally when using multiple LEDs, the 220ohm resistance is divided by the total number of LEDs being driven (this is ONLY for transistor-switched LEDs, not LEDs driven directly from the ABCmini/ABCmaxi ports) to give a final answer but since only one LED is on at any one time (but driven so fast as the human eye cant tell the difference), the resistance need only be suitable for one LED. Larger displays (or complex programs) may need the transistor as an entire row might need to be shown at a time to prevent flicker but smaller displays (or simple programs) shouldnt need this.
A modified version of Multiplexing exists, called Charlieplexing - a small diagram of which is shown above. The Charlieplexing form of multiplexing uses even less pins to control many LEDs but requires more code for it to work correctly. An application note on charliplexing is available at http://www.maxim-ic.com.cn/pdfserv/en/an/AN1880.pdf.
Multiplexing Pushbuttons:
Another form of multiplexing is a keypad. This has a number of buttons joined into a matrix, so that many buttons can be scanned using only a few ports. The ABCmaxi or ABCmini is instructed to pull each output line (rows) low, while another pin reads the column. A logic high (5V) indicates an unpushed button (via the internal pull-up resistor), while a low logic level indicates an pushed button. You will need to enable pull-up/pull-down resistors or place pull-up resistors externally for this method to work correctly. A typical push-button matrix looks like this:
As shown of the diagram, you should place 1k resistors on each of the matrix rows and columns when connecting up the keypad matrix to your microcontroller. This limits the current flowing from the output (scan) into the input and prevents damage if shorts occur. There are several methods of scanning for pushed keys. One way is to set all the columns as outputs, and the rows as inputs (with pull-ups enabled). Set all the columns high, and then set the first column low. Sequentially read the rows (read row 1, then row 2, etc.) and get the inputs. If any of the rows returns low, that button is being pressed. After the first column in scanned, set it high again, and send the second column low and repeat the process - scanning each of the rows in turn. After all the columns have been scanned, you are ready to interpret the results. This is fast and effective, but can lead to ghost keys, when several keys are pressed:
Page 31
Here the key marked with an X is determined as pressed by the microcontroller when using the above method, due to connections made while the other shaded keys are pushed. The second method is slower than the first. It requires sending the row and column ports high one-after-another to determine all the keys pressed with 100% accuracy but at a slower rate. Remember that buttons and switches bounce after being pressed/released, giving multiple key-press signals if a delay between readings is not added. BASCOMs keypad functions already have the necessary delays added, so no extra wait commands are necessary.
This was originally designed for the ATTiny22 microcontroller, an Atmel AVR microcontroller with only 5 ports. To drive this circuit, setting PB4 high turns activates the first three LEDs, and setting PB3 high the last three. Setting PB0, PB1 or PB2 low will turn on the LEDs. To make the LEDs flash one after another in sequence, the following ports have to be activated:
Forwards:
PB0 High High Low High High Low PB1 High Low High High Low High PB2 Low High High Low High High PB3 Low Low Low High High High PB4 High High High Low Low Low PB0 Low High High Low High High
Backwards:
PB1 High Low High High Low High PB2 High High Low High High Low PB3 High High High Low Low Low PB4 Low Low Low High High High
When both forwards and backwards sequences are programmed (sans the first entry in the backwards sequence as this is identical to the last in the forwards sequence) this will give the same effect as used on the classic KnightRider TV show.
Page 32
For the ABCmini, you will need to add the MOSFET circuitry as shown (the Maxi has onboard MOSFETs). The voltage applied to the MOSFET depends on the load, and the MOSFETs maximum rating. Most standard MOSFETs can drive up to 60V, 6 Amps with no heatsink, or a couple more amps with adequate sinking. The Maxis circuitry is thicker on the ground and VCC lines that run to the maxi (to allow more current to flow) but no heatsink is supplied on the board this suggests that the board cannot handle more than 6 amps at 12V.
To drive the stepper motors, you must turn on the MOSFETs in sequence after attaching it in the fashion shown above. A backwards motion can be made by reversing the order of the sequences, i.e. Step 4, Step 3, Step 2, etc.
Chip-to-chip Interfacing:
You cannot interface ICs with different supply voltages directly, as the logic levels will be different. To overcome this problem, a transistor and two resistors may be used, to form a switch that activates the second ICs logic gate. In this example, the ICs run at 5v and 9v. This circuit should only be used for CMOS ICs when the CMOS supply voltage is NOT 5v.
Page 33
Here the 10k resistor is used to pull up the 9v chip to a High state. When logic 1 (high) is sent to the transistor from the 5v chip (lowered to appropriate voltage via the 1k resistor) it switches on, shunting the 9v chips input to low (logic 0). In effect this is an inverter, but this can by overcome by swapping the 9v chips input and the 10k resistor to below the transistors emitter gate (with the resistor below the logic input). To convert CMOS signals of over 9v to the TTL level of 5v, the best way is using the versatile IC 4050 HEX Non-Inverting Buffer. The example below assumes a CMOS voltage of 10v, but this can vary.
Page 34
Chip Diagram
Pin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Pin Description
Port Group B, Port 0 Port Group B, Port 1 Port Group B, Port 2 Port Group B, Port 3 Port Group B, Port 4 Port Group B, Port 5 (Also SPI Port Serial MOS0) Port Group B, Port 6 (Also SPI Port Serial MOSI) Port Group B, Port 7 (Also SPI Port Clock SCK) RESET Low signal (GND) to activate VCC 5V Supply Input GND 0V Supply Input XTAL2 Clock Input XTAL1 Clock Input Port Group D, Port 0 (Also TxD for Serial Communications) Port Group D, Port 1 (Also RxD for Serial Communications) Port Group D, Port 2 (Also External Interrupt 0) Port Group D, Port 3 (Also External Interrupt 1) Port Group D, Port 4 Port Group D, Port 5 Port Group C, Port 6 (Real-time Clock Crystal input) Port Group C, Port 7 (Real-time Clock Crystal output) Port Group C, Port 0 Port Group C, Port 1 Port Group C, Port 2 Port Group C, Port 3 Port Group C, Port 4 Port Group C, Port 5 Port Group C, Port 6 Port Group C, Port 7 AVCC Supply for Analogue to Digital Converter AGND 0V Supply for Analogue to Digital Converter AREF Reference Voltage for Analogue to Digital Converter. Must be between 2V and AVCC Port Group A, Port 7 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 6 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 5 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 4 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 3 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 2 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 1 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 0 (Also an A/D converter input port, digital I/O when ADC disabled)
Page 35
diagram), pins 2-4 was programming in/out and pin 5 the microprocessor reset. Interestingly, pins 2-4 are actually Port Group B, Port 5-7. It seems that having an easy way to program the microcontroller sacrifices three of the I/O ports. Connector 1 (power) was also as obvious; connector pin 2 was fed directly to the boards ground (GND, -5 volts) and the power filterer and regulator, a small 8-pin chip (the middle row of its markings showing 2931) to the above right of the two-pin power connector. The connector pin 1 was fed into pin 8 of the power regulator, whose output was connected to the boards VCC (+5 volts). The miniature 3-pin IC, marked with ABMY on my Hot Chip, is a MAX6440UTEISD3 in charge of the RESET pin. It is in roughly the right place (near the power connector) and is the only 3-pin IC I could find. This is in charge of brown out (low power protection). When the chip first gets power, this chip will hold the RESET pin low (active) until the voltage stabilizes. This prevents incorrect chip behaviour if the voltage is low or a battery has just been applied. The rounded silver box with M8.000 stencilled on the top was an 8MHz crystal fed into XTAL1 and XTAL2 on the microcontroller from the ground (-5 volt rail) to provide the clock speed each one of the pulses given by the crystal will tell the microcontroller to execute an instruction. Underneath there is a small round and silver component solders to the board. This is a 32.768KHz miniature crystal. This is connected to Port Group C, Ports 6 and 7 and is used for the on-board timing functions. I identified the long(ish) IC next to the serial port (black connector) as a MAX232 RS-232 (serial) Receiver/Transmitter buffer, in charge of converting the 5V RxD and TxD pins from the microcontroller into the correct voltages for the computer to understand and vice-versa.
All ports (groups A, B, C and D) can sink a maximum of 20ma, and can drive LED displays directly.
Chip Diagram
Pin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Pin Description
Port Group B, Port 5 (Also SPI Port Serial MOSI) Port Group B, Port 6 (Also SPI Port Serial MISO) Port Group B, Port 7 (Also SPI Port Clock SCK) Reset activated by a low (GND) signal for more that 50ns. VCC - +5 volt power supply GND - Power supply ground RxD - Data Receive (Can be used as Port Group D, Port 0 if the UART is off) TxD - Data Transmit (Can be used as Port Group D, Port 1 if the UART is off) Port Group D, Port 2 (Also External Interrupt 0) Port Group D, Port 3 (Also External Interrupt 1) Port Group D, Port 4 Port Group D, Port 5 Port Group D, Port 6 Port Group D, Port 7 Port Group C, Port 0 Port Group C, Port 1 Port Group C, Port 2 Port Group C, Port 3 Port Group C, Port 4 Port Group C, Port 5 Port Group C, Port 6 (Real-time Clock Crystal input) Port Group C, Port 7 (Real-time Clock Crystal output) AVCC - Supply voltage for the A/D converter. Connect to VCC via a low-pass filter. AGND - Ground for the A/D converter. If the board has a separate analogue ground plane, this pin should be connected to it. Otherwise connect to GND. AREF - Analogue reference input for the A/D converter. For A/D operations, a voltage in the range of 2V to AVCC must be applied to this pin. Port Group A, Port 7 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 6 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 5 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 4 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 3 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 2 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 1 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group A, Port 0 (Also an A/D converter input port, digital I/O when ADC disabled) Port Group B Port 0 Port Group B Port 1 Port Group B Port 2 Port Group B Port 3 Port Group B Port 4 GND Second 5 Volt Supply for easy access on the opposite side of the ABCmini VCC Second +5 Volt Supply for easy access on the opposite side of the ABCmini
Page 36
The Atmel AT90S8535 microcontroller in located to the right of the LCD connector. The four small black components to the left of the MOSFETS are the opto-couplers. The MOSFETS are the four upright black components with a metal tab for a heatsink and three legs. The chip with the marking LM4860M is a surface-mount version of the LM480 audio amp. The volume for this is controlled by the small variable resistor to the upper-right of the 8MHz crystal below the LM480 chip. The component to the right of the memory socket, which is screwed to a heatsink, is a 7805 fixed +5V regulator (1 Amp max). This lowers and filters the 12V power from the plug-pack (or other power source). The ST232 chip above the serial connector, and the left of the memory socket is a Serial Transmitter/Receiver IC. This is identical to the MAX232 used in the ABCmini. Below the AT90S8535 chip, the small cylinder to the left marked X3 is the 37.768KHz crystal for the Real Time Clock, as used on the ABCmini. The miniature 3-pin IC, marked with ABMY on my Hot Chip, is a MAX809 or MCP120 in charge of the RESET pin identical to the ABCminis. This chip is located to the above right of the AT90S8535 chip, and is small with 3 pins. This is in charge of brown out (low power protection). When the chip first gets power, this chip will hold the RESET pin low (active) until the voltage stabilizes. This prevents incorrect chip behaviour if the voltage is low or a battery has just been applied.
Board Diagram
Port
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7
Task
Con 5-1 Con 5-2 Con 5-3 Con 5-4 LCD1-4 LCD1-3 LCD1-2 LCD1-1 MOSFET 3 or Con 4-7 (J4 & J7) MOSFET 4 or Con 4-8 (J5 & J8) Opto 1 or Con 4-1 (J9 & J13) Opto 2 or Con 4-2 (J10 & J14) Chip Select on optional Dataflash SPI bus and device programming SPI bus and device programming SPI bus and device programming RS485 BDIR (J17 short 3&4) LCD1-11 LCD1-10 LCD1-9 MOSFET 1 or Con 4-5 (J1 & J2) MOSFET 2 or Con 4-6 (J3 & J6) 32.768kHz Crystal 32.768kHz Crystal RxD (RS232 J17 short 7&8, RS485 J17 short 11&12) TxD (RS232 J17 short 5&6, RS485 J17 short 9&10) Opto 3 or Con 4-3 (J11 & J15) or RS232 CTS (J18) Opto 4 or Con 4-4 (J12 & J16) Con 5-8 Con 5-7 and Audio amp Con 5-10 Con 5-9 and RS232 RTS
Page 37
Connector
Connector Pin 4 Connector Pin 3 Connector Pin 10 Connector Pin 2 Connector Pin 19
::||::
Page 38
The Industrial ABCedit Interface Some third-party programmers (and Atmels AVR Studio, free download from www.atmel.com) use a serial programming method; a special device is placed between the HotChip/Atmel chip and the computers serial port to translate commands into parallel signals. This can be another alternate programming method if you cannot access a free parallel port. Serial ISP (in-system-programming) devices can be purchased online, or schematics downloaded for you to make yourself. The software included with the HotChip boards (ABCedit) does not currently support the serial programming method, and as such you will need to download a different programmer, such as PonyProg.
Page 39
Download and install the program from the Investment Technologies website (see bibliography/references at end of document).
Page 40
Once you have created your program, you can simulate it by clicking ProgramCompile (or F7). When the process is completed, click ProgramSimulate or press F2. By clicking on the small Play button you can execute your code, and can see a visual representation of the ports by clicking the Show Hardware button. If you find that the program execution is too slow, add a $Sim command to the start if your program and recompile. This will cause the simulator to ignore wait commands it must be removed before programming. Downloading your compiled program is easy in Bascom. The latest versions are already equipped to function with the HotChip boards, but if you happen to have an old version, open the prog.settings file from your Bascom directory in Notepad. Scroll down, and if you do not see a [HotChip] or [ABCMAXI] entry, add the following code: [HotChip] BASE=$378 MOSI=BASE,1 CLOCK=BASE,2 RESET=BASE,4 MISO=BASE+1,64 And save the file. To select the programming method, click OptionsProgrammer and select Universal MCS Interface from the Programmer drop-down box, and HotChip (or ABCmaxi, either one will work for both ABC boards) from the Universal Tab. The next image shows a correctly configured programmer.
Page 41
The above instructions need only be performed once, after which programs can be downloaded by first connecting the 9V battery and parallel program lead, then clicking ProgramSend to Chip and the Auto Program (small green rectangle with black line) button. All users can purchase BASCOM-AVR from the friendly and reliable Australian company Dontronics. The Dontronics BASCOM purchase page is at http://www.dontronics.com/basc-avr.html.
Programming in WinAVR:
I firmly believe that the best software is free. This is usually because free (and open source) software is embraced by the tightwads of the world, and thus modified to death until the resulting application is as good as the writers can make it. If you dislike the time-consuming ASSEMBLER language, and think BASIC lacks the flexibility you desire, you may want to try WinAVR. Pronounced Whenever, this is a complex but powerful package containing - amongst many other useful AVR tools - the AVR-GCC C language compiler for AVR microcontrollers. Programs are written in a text editor of your choosing the free and brilliant Programmers Notepad program is included with the WinAVR installation package and compiled with the GCC compiler.
Page 42
You can download the latest version of WinAVR at http://winavr.sourceforge.net/, and a small but excellent Quick Start manual is available free at http://www.smileymicros.com/. Smiley Micros also offers a large C tutorial book, but you will need to shell out some of your closely hoarded money for it. Having said that, its worth it if youre totally clueless about the C language. This book centres around the AVR Butterfly development board, but most/all of the knowledge can be modified to suit the ABC boards. Learning C (and using the WinAVR package) is definitely not for the faint-hearted. It involves a lot of work to get started, and the C language is both extremely powerful and complex. If you wish to get started and program right away with a minimal learning curve, try BASCOM-AVR.
The AVR Studio 3.x Interface You can also receive serial transmissions from the ABCmini using Visual Basic 6. Add Microsoft Comm Control 6.0 from the components screen and call it Serial. To open the port, add the following code: Sub OpenPort() If Serial.PortOpen = True Then Serial.PortOpen = False With Serial .CommPort = GetSetting("TruID", "Settings", "Port", 1) .Handshaking = comRTS .DTREnable = True .EOFEnable = True .RTSEnable = True .InBufferSize = 1024 .OutBufferSize = 1024 .NullDiscard = True .InputLen = 0 .InputMode = comInputModeBinary
Page 43
.RThreshold = 1 .SThreshold = 1 .PortOpen = True End With End Sub Call the OpenPort subroutine on Form Startup. To close communications with the port, the following code is necessary (call it on Form Termination): Sub ClosePort () If Serial.PortOpen = True bThen Serial.PortOpen = False End Sub To get the received text, add this event and a textbox called Text1: Private Sub Serial_OnComm() If Serial.CommEvent = comEvReceive Then Dim Buffer As Variant Buffer = StrConv(Serial.Input, vbUnicode) Text1.Text = Buffer End If End Sub The above code can be used to receive messages to send a message to the AT90S8535 chip, use Serial.Output = (Message) & VBCrLf . BasCom can successfully read messages sent from Visual Basic 6 via its serial in commands but I have not been successful with the included ABCedit software.
Page 44
CHAPTER 8: Appendix
AT90S8535 Circuit Diagrams: Basic 8535 Microcontroller Setup
Note: The 8MHz Crystal and the two 22pF capacitors should be mounted as close to the microcontroller as possible.
Wiring a Pushbutton
Wiring a LED
Page 45
Page 46
Overlay of the ABCmaxi, Version 1 Released in 1999 Uses a DIL version of the AT90S8535 Note the prototyping area
Overlay of the ABCmaxi, Version 2 Released in 2000 Uses a Surface Mount version of the AT90S8535 Prototyping area wire-wrap
Page 47
Page 48
Page 49
Package images above are from the Atmel AT90S/LS 8535 Documentation (see bibliography)
Page 50
Pin on LCD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Description
Vss (GND) Vdd (+5V) VO (Contrast) RS (Data/Instruction set) R/W (Read/Write select) E (Signal Enable) D0 (Data bus 4 and 8 bit) D1 (Data bus 4 and 8 bit) D2 (Data bus 4 and 8 bit) D3 (Data bus 4 and 8 bit) D4 (Data bus 8 bit) D5 (Data bus 8 bit) D6 (Data bus 8 bit) D7 (Data bus 8 bit)
A (Optional backlight LED) K (Optional backlight LED)
Microcontroller Errata:
Atmel have released details of errors in the AT90S8535 microcontroller hardware design. You should check out www.atmel.com and search for the 8535 for the full error list, but the most important is the Secondary oscillator High-Voltage failure. When the AT90S8535 microcontroller is driven at voltages above 4V the ABC boards run at 5V the secondary (32.768KHz) oscillator may miscount. This is unavoidable, and cannot be corrected. If you require a very accurate secondary timer, use an external real-time-clock chip.
Page 51
Author Info:
A LOT of work has gone into the creation of this document. Please feel free to email me with any comments/questions/abuse/ideas on this document, or the ABCmini/ABCmaxi/Hot Chip/AT90S8535. Address all emails to [email protected] (without the quotes). I would love to hear from you. I would also like to hear about: Stories Circuits Links to relevant Websites Technical Information Corrections (Technical and Grammatical) Anything else related to this document/microcontrollers
Please note that I am only able to provide support for the Bascom-AVRs BASIC and AVR-GCC C) languages.
Bibliography/References:
This document has been compiled from information gleamed from all over the net, from books, manuals, fellow users, forums and many other places. To all who have helped me compile this document, I give you my sincere thanks, as (Im sure) do the others who read this documentation. I hope this document will be of some use to someone, and inspire others to make their own manuals or get started with the exciting world of AVR microcontrollers. All the sources that I used (and can remember) are listed below, along with some places of interest. If you have a URL you would like me to add (or notice a source missing), please email me at the address above.
URL/SOURCE
The Forest Mims Engineers Notebook (Book) www.invtech.com.au www.avrfreaks.net www.atmel.com www.groups.yahoo.com/group/ABCboardshotc hip www.hw.cz/english/docs/rs485/rs485.html home.wanadoo.nl/electro1/avr/ www.cadsoftusa.com www.embedtronics.com r.webring.com/hub?ring=avr projects.cappels.org www.binarypulse.org/~valen16/projects/hdd/index.php www.ingdm.se/avrdev/avrdev.htm www.omegav.ntnu.no/avr/resources.php3 www.riccibitti.com/index.html www.site.uottawa.ca/~jdesa066/avr1.html www.tla.co.nz/xtal1.html www.serasidis.gr pages.zoom.co.uk/andyc/ geocities.com/vjkemp/gbcam.htm www.zws.com/products/index.html home.wanadoo.nl/electro1/avr/outlines.htm www.avrbeginners.net
DESCRIPTION
Fantastic 150 pages of pure schematics. Investment Technologies Website (designers of the ABC boards.) Very good forums on all AVR microcontrollers. Technical information on all Atmel AVR chips. Yahoo message board for the HotChip boards. Information on the RS-485 Interface. Information on multiplexing LEDs, etc. Fantastic FREE schematic editor, called Eagle. Advanced projects, such as web servers and Compact Flash MP3 players. Webring for all AVR related pages. Dick Cappels projects. Mostly wireless and frequency orientated. Very advanced page on connecting an IDE hard drive to an AVR. Minimal information, with a small amount of projects and software. Hundreds of AVR links, but many are dead. Fantastic simple projects. Shows how to send and receive a SMS from an Ericsson T10S GSM Mobile. Good, but small site with a Getting Started for AVR microcontrollers and the C language. Technical information on Crystals. Some great projects; Reading SMS Messages, Connecting the AVR to the USB port, Phonecards as Keycards, Graphical LCDs, etc. A fantastic attempt at connecting a B&W Gameboy camera to an AVR. Can show images on a computer at 8fps. No AVRs here, but another attempt at interfacing with a GameBoy Camera. A couple of interesting Microcontroller projects. Shows the different component packages. Nice little site. Includes a Getting Started for the ASSEMBLY language.
RATING
Page 52
Australian company that sells the ABC boards, plus many other components and kits. Is well known for its fantastic customer service. A company that has exceptionally low prices and will ship to almost anywhere. Manufacturers of the ABC boards. Source for the free AVR-GCC C compiler. Free Getting Started manual for the WinAVR GCC package, extensive book on learning C for microcontrollers.
Thanks to Investment Technologies Pty. Ld. for granting permission to use their copyrighted images in this document. Also thank you to Atmel for their kind permission for the use of their copyrighted pictures in this document, and their help in supplying some of the obscure technical details.
A final thankyou to Austrol Pty. Ld. for their support and assistance. The pictures used on this documentation are Dean Camera, or sourced from Atmel Corporation, Investment Technologies Pty. Ltd., Austrol Pty. Ltd. or other website (listed above). If an image has been included (and the source is not listed), please contact me with your details. This document - in its current form - is unofficial, and thus some or all information contained is unsupported by Atmel, Austrol, Investment Technologies and/or other sources. Permission for content has been attained, but said companies cannot guarantee the accuracy of information and/or suitability of modifications described. Please read the below disclaimer for this document before acting on any instructions and/or advice.
Thanks to the following people for their correspondence (apologies to anyone omitted):
Malcom
Philip Tom Vignesh AVR Technical Support (Atmel) David Cary Carl Charpentier Erik Damen Stuart Forge Jim/Manuel Gamelis (Technichem) Nigel George (Austrol) Jeffrey Gibson Robert Gibson Ken Goldsmith Kel Skinner (Investment Technologies) James Stevenson C. Thierry Robert Turner Neil Wrightson
Supplied Information
Requested Information
Gave Comments
Disclaimer:
ALL CARE HAS BEEN MADE TO ENSURE THE ACCURACY OF THIS DOCUMENT, BUT ALL INFORMATION OUTLINED IS TO BE FOLLOWED AT THE USERS OWN RISK. SOME CIRCUITS DESCRIBED ARE PHYSICALLY UNTESTED. THE AUTHOR OF THIS DOCUMENT IS NOT LIABLE FOR ANY DAMAGES CAUSED AS A RESULT OF THE INNACURACY OF ANY INFORMATION OUTLINED IN THIS DOCUMENT OR ANY DAMAGES OCCURRED AS A RESULT OF THIS DOCUMENT. BY ACTING ON ANY ADVICE/INSTRUCTIONS/INFORMATION CONTAINED IN THIS DOCUMENT, YOU AGREE TO ALL TERMS DESCRIBED IN THIS DISCLAIMER. IT IS IMPORTANT TO READ AND FULLY UNDERSTAND ALL WARNINGS AND/OR CAUTIONARY NOTICES BEFORE ATTEMPTING ANY HARDWARE AND/OR SOFTWARE MODIFICATIONS. THIS INTELLECTUAL WORK IS PROTECTED BY INTERNATIONAL COPYRIGHT LAW. IT MAY NOT BE MODIFIED WITHOUT PRIOR CONSENT FROM THE AUTHOR.
Me,
This document is Dean Camera, 2004-2005. It may be photocopied, transmitted or copied without restriction but may NOT be modified for re-distribution without the authors prior consent. This document may be submitted to any hard copy or electronic database, provided that a notification is sent to the author describing the action prior to submittal.
Page 53