RS232
RS232 (wiki) is één van de oudste interface technieken. Het is een serieel protocol dat werkt met 3 draden, namelijk een aarde en 2 draden (zenden en ontvangen). Het is relatief simpel en zeer compatibel. Op de pc is het verdrongen door het snellere USB, maar in robotica wordt het nog veelvuldig gebruikt. Veel µcontrollers, o.a. zowel AVR als Pic, hebben er standaard hardware voor aan boord.

Een overzicht van diverse protocollen voor seriële data netwerken.

Op de PC is er een zogenaamd terminalprogramma nodig, zoals bijvoorbeeld Ubuntu Serial Port Terminal of minicom en bijvoorbeeld Windows Realterm of Bray terminal. Je kan onder Windows ook gewoon met het ingebouwde Hyperterm beginnen, maar het is er niet voor bedoeld. Het kan bijvoorbeeld geen binaire of hexadecimale output geven, maar in veel gevallen voldoet het. ANSI escape sequences worden wel begrepen door Hyperterm.

Als u µcontrollers onderling wilt laten communiceren via het RS232 protocol dan kunnen de betreffende pennen van beide µcontrollers rechtstreeks met elkaar worden verbonden. De werkspanning is dan gelijk aan de voedingsspanning van de controllers, meestal 5Vdc. Een RS232 verbinding met een ander apparaat zoals bijvoorbeeld een PC heeft echter een werkspanning van 12Vdc. Daardoor kan er een vrij grote afstand (maximaal 15m - 100m) worden overbrugd zonder storingen. U hoeft echter geen 12Vdc tot uw beschikking te hebben in uw project, want voor die omzetting zorgt een MAX232 chip. Deze chip moet u tussen de µcontroller en de PC monteren. De STK500 heeft standaard al een extra MAX232 geinstalleerd waardoor u enkel nog deze extra seriële poort hoeft aan te sluiten op uw PC en een 2-polig kabeltje op uw STK500. Maar ook het zelf bouwen van een RS232 interface is niet bijzonder ingewikkeld. Dit kan zelfs op een breadboard. De benodigde schakeling staat tot in de kleinste details beschreven in de datasheet.

Het is voor het functioneren van een µcontroller niet noodzakelijk om een extern kristal te monteren, maar het is nauwkeuriger in de timing en kan de snelheid van uw µcontroller verhogen ten aanzien van de interne oscillator. Echter indien u uw µcontroller via RS232 wilt laten communiceren, dan is een extern kristal altijd beter, omdat de interne oscilator niet nauwkeurig genoeg is. Het bereiken van hoge snelheden wordt onder andere beperkt door de foutmarge in de timing van de controller. Indien u met hoge snelheden (> 57k6 baud) via een RS232 interface wilt communiceren dan is het zelfs beter om een kristal te nemen, waarvan de frequentie precies aansluit bij de RS232 realtime snelheden. Deze foutmarges worden tot in het detail beschreven in de datasheets van Atmel. Mijn ervaring is dat 2,0% de uiterste grens is en die grens is snel bereikt. Echter bij een kristalfrequentie van 14,7456 mHz is de foutmarge van de controller slechts 0,0% tot en met 230k4 baud. Deze kristallen zijn standaard verkrijgbaar.

Indien u enkel data wilt communiceren gebruikt u slechts 2 draden en een aarde. Maar de RS232 standaard kent veel meer pinnen die oorspronkelijk bedoeld waren om een modem aan te sturen.

Maxim the MAX220–MAX249 family of line drivers/receivers datasheet
Maxim Application Note 83: Fundamentals of RS-232 Serial Communications
Atmel AVR042 Hardware design considerations
Atmel AVR303 SPI-UART Gateway
Atmel AVR313 Interfacing the PC AT Keyboard
Atmel VR244 AVR UART as ANSI Terminal Interface

Als beginner bent u nu aardig op weg geholpen. U weet hoe u een programma op een µcontroller kunt krijgen en u heeft nu een mogelijkheid om een simpele debugging te doen. Voordat u nu zelf aan de gang gaat is het handig om eerst de volgende pagina door te nemen.