Dit is een archief-pagina

Dit is een archief-pagina. Ik werk deze pagina niet meer actief bij.
Informatie kan verouderd zijn, en links lopen mogelijk dood.
Maar, misschien heeft iemand er nog wat aan.


Embedded systems: Rabbit

De Rabbit RCM5700

Ik ben al heel lang geïnteresseerd in processoren. Dat blijkt wel uit mijn werk, maar ook als hobby heb ik er nog veel plezier in. Al heel vroeg (rond 1980) heb ik mijn eerste computer gebouwd (zie mijn zelfbouw-geschiedenis pagina's), en ook later heb ik veel gespeeld met diverse computer-bordjes, zoals single-board 'embedded systems' met netwerk-mogelijkheden.

Wat is de RCM5700?

De RCM5700 print
De RCM5700 is een voordelig mini-computerprintje (3x5cm) met een Rabbit 5000 processor er op. Het wordt via een mini PCI Express connector op bijvoorbeeld een ontwikkelbordje aangesloten. Het bevat de processor (met ethernet-interface, real-time clock, 128 kB RAM, timers, I/O-pinnen, seriële poorten etc) en 1 Mbyte flashgeheugen. Stroomgebruik rond de 70 mA.

Een leuk en voordelig bordje om mee te spelen is de Rabbit RCM5700. Deze is gebaseerd op een opgevoerde Z80 op 50 MHz, en heeft een aantal I/O-mogelijkheden, waaronder een Ethernet aansluiting. Voor zo'n 50 Euro (aanbieding) had ik een ontwikkelsysteem hiermee, dat je via een USB-kabeltje aan je computer kan koppelen om programma's (die je in 'C' kunt schrijven) te downloaden. Ook beschikbaar in een draadloze uitvoering RCM5600W (ontwikkelkit op het moment $99).

Ik ben van plan deze te gebruiken voor simpele besturing van zaken in en rond het huis, 'home control' (met name automatisch helemaal uitschakelen van in slaapstand stroomverbruikende apparaten). Bij zoiets is de bediening altijd het probleem. Het leuke van dit Rabbit bordje is dat er een simpele web-server op kan draaien (wordt meegeleverd). We hebben thuis ook een Wii: via de web-browser op de Wii/TV (of op je computer, of op je telefoon, of ...) kan je dus dit bordje op afstand besturen, en via internet in principe vanuit de hele wereld (pas wel op de beveiliging). Je hoeft dus niet een schermpje op de Rabbit zelf aan te sluiten, en kan het geheel in een kast wegwerken, als je wilt. Maar, je kunt uiteraard ook schakelaars en zo aan de Rabbit koppelen.

De basis-IO

Voor de eerste experimenten heb ik het ontwikkelbord met de RCM5700 erop samen met een stuk experimenteerprint in een simpele platte behuizing van 10x20 cm geplaatst. Voeding is via de USB-poort (bij het programmeren/testen), of via een externe +5 Volt voeding. Daarbij heb ik wat simpele input- en output-mogelijkheden gecreëerd, om bekend te worden met het bord en het programmeren ervan:

  • Ontwikkelbordje in een simpel kastjeTwee schakelaars (aangesloten op poort B pin 6 en 7)
  • Vier ledjes (aangesloten op poort A pin 4-7)
  • Een vijfde led (heart beat, hartslag; deze laat ik een keer per seconde knipperen om te kijken of'ie nog loopt)
  • Een infrarood-ontvanger type TSOP 1738 (aangesloten op de externe interrupt lijn 0: poort E pin 0)
  • En daarnaast natuurlijk de bestaande Ethernet-interface, met een kabeltje naar mijn lokale netwerk

Een 'simpel' programma, geschreven in 'C' (hun 'Dynamic-C' variant) laat me de 4 ledjes op verschillende manieren aan en uit schakelen, via:

  • de Wii of de PC, via een webinterface naar de op de Rabbit draaiende web server (gebruik makend van een html/cgi/GET interface)
  • de 2 schakelaars (voor 2 van de 4 leds; een keer drukken: led aan, volgende keer drukken: led uit; softwarematig ontstoord tegen contact-dender), via time-based pollen
  • de afstandsbesturing van de TV (voor een led; alleen nog maar detectie van het indrukken van toetsen, nog geen decodering, dus iedere toets schakelt de led), gebruik makend van interrupts
  • op tijd, via de real-time clock

Dit is de basis voor meer complexe systemen, en een goede manier om thuis te raken in de mogelijkheden (web server, interrupts, etc). In plaats van leds kunnen nu bijvoorbeeld solid-state relais aangestuurd, om 220-Volt apparaten te schakelen.