HCC Forth-gg
23 juli 2004

Tips & Truuks voor de AVR


Willem Ouwerkerk

 

Reset

De reset van de AVR kan in een schakeling met veel ruis verbeterd worden door een weerstand van 4k7 tot 22k aan te brengen. Een condensator van 10nF een een diode over de weerstand verbeteren de situatie nog verder.

AVR's met ingebouwde brown-out detector kunnen zonder deze hulp, als de brown-out detector geactiveerd wordt. Ook als een externe brown-out wordt aangebracht is de schakeling niet nodig.

EMC

Omdat microcontrollers digitale componenten zijn, generen ze al snel veel storing. Ze moeten - zo dicht mogelijk bij de voedings-aansluitingen van de chip - zorgvuldig ontkoppeld worden.
Advies van Atmel: zet over elke voedingsaansluiting van de chip een condensator van 100 nF met in serie een smoorspoel van 47 nH. Daardoor blijven de grote stromen tijdens het schakelen van uitgangen (tot enkele honderden mA gedurende enkele nanoseconden) weg van de voedingslijnen op de print. Meer informatie vindt je in de 'application note AVR040' (EMC Design Considerations).

ISP

Als we de aansluitingen van de ISP-interface ook als I/O willen gebruiken, moeten we serieweerstanden van 4k7 opnemen naar I/O aansluitingen. Met Ushi hebben we de ervaring opgedaan dat 220 Ohm weerstanden ook nog voldoen.

Tip1:

Als de reset uitgeschakeld is kan de ISP-interface niet gebruikt worden. Door +12 Volt op de Resetlijn aan te sluiten wordt de ISP-interface toch geforceerd. De schakeling moet natuurlijk wel tegen die 12 Volt kunnen.

Tip2:

Als we meerdere AVR microcontrollers in een schakeling toepassen, kan de ISP-interface gedeeld worden om pennen te sparen. Alle pennen behalve de SCK (ISP-klok) kunnen gedeeld worden.


Dongle

Klok-oscillator kiezen

Op de meeste AVR's kunnen we uit verschillende klok-oscillators kiezen:
  • (ingebouwde) RC-oscillator
  • Kristal-oscillator
  • Keramische oscillator
  • Externe oscillator
De nieuwste AVR's werken bij aflevering op een interne RC-oscillator, met een frequentie van ongeveer 1 MHz. Zowel de osc. frequentie als het bijregelen van de RC-osc. kan meestal softwarematig gedaan worden. Elke AVR kent zogenaamde 'fuse-bits' waarmee o.a. de gewenste klok te selecteren is (later daarover meer).
Externe kristallen en resonatoren vanaf 0,45 MHz zijn bruikbaar. Sommige AVR's kunnen ook een 32 KHz klok-kristal, een externe klok of een extern RC-netwerk gebruiken.
Een kristal is de nauwkeurigste optie, maar een resonator start 20 tot 100 maal zo snel op als een kristal.
De aanbevolen condensators voor de kristal osc. zijn 22 pf tot 33 pf.

Letop: Bij de maximale kristalfrequentie moet de golfvorm een 50% duty cycle hebben anders wordt gedurende een helft de maximale frequentie overschreden en kan de AVR onstabiel worden.

Fuse bits

Elke AVR kent een aantal 'fuse bits' waarmee de hardware van de AVR kan worden geconfigureerd. Hun instellingen blijven actief tijdens en na het wissen van de AVR. Alleen als de 'fuse bits' opnieuw geprogrammeerd worden, verandert de hardware configuratie. De AT90S2313 heeft 2 'fuses' en zijn opvolger de ATtiny2313 heeft er liefst 17. Daarmee kun je bijvoorbeeld instellen:
  • de oscillator optie
  • brownout detector
  • ISP-interface
  • opstarttijd
  • debug interface
  • etc.
Lees het na in het datasheet van de betreffende chip.

Let op: Als de reset-lijn of ISP-interface uitgeschakeld wordt, kun je de chip niet meer via de ISP-interface programmeren. Als alleen de reset uitgeschakeld is, kan door 12 Volt op de reset-lijn te zetten de ISP-interface alsnog geactiveerd worden (zie ook het stukje over ISP).

Starter-kits

Er zijn voor de AVR verschillende starterkits verkrijgbaar.
  • Via Atmel zijn de AVR-butterfly met ATmega169 en de STK500 met AT90S8515 te krijgen;
  • Kanda levert de STK200+ met AT90S8515 waarop net als bij de STK500 veel verschillende AVR's te programmeren zijn. De STK200 is een voordelige optie, maar de STK500 heeft als extra dat AVR's ook high-voltage te programmeren zijn.
Onze gebruikersgroep heeft ook enkele printen die zeer goed bruikbaar zijn:
  • AT51-2 voor de AT90S1200, AT90S2313, ATtiny2313;
  • AT8252 waar de AT90S8515 en de ATmega8515 in PLCC-versie op passen;
  • de Ushi-robot met opsteekprinten voor de AT90S2313, AT90S4433, ATmega8, ATmega16/32 en ATtiny26,
  • en tenslotte AVRex(perimenteerprint waar alle Ushi-opsteekprinten op passen.