05 oktober 2015

Achtergrond: Input en output (PICAXE-08M2)

Input en output definiƫren

Bij opstarten configureert de PICAXE-08M2 alle pins als input (met uitzondering van pin0/C.0, dat is altijd output). Pas als een commando gegeven wordt, kan de functie wijzigen naar output. In de vorige post werd gesteld:
C0 gaat als output werken, en bestuurt de groene LED (groene draad)
C1 gaat als input werken, en vraagt de LDR uit (gele draad)

Maar hoe regel je dat nu? Het blijkt, dat er drie manieren zijn om dat te voor elkaar te krijgen:
  1. Het juiste type commando gebruiken
  2. Het input of output commando gebruiken
  3. Het let dirs commando gebruiken
Let op: Pins C.0 en C.3 kunnen niet worden gewijzigd, deze zijn altijd output, respectievelijk input.


Het juiste type commando

Zodra er een "input-type" commando gebruikt wordt, configureert de microcontroller de desbetreffende pin als input. Voorbeelden van "input-type" commando's zijn:
  • count C.2, 100, b0
  • pulsin C.5, 1, w1
  • serin C.0, N2400, b3
  • readadc C.1, b0
De PICAXE chips configureren de correcte pin automatisch als input, en dat blijven ze dan ook.

Het zelfde geldt voor "output-type" commando's. Als zo'n commando gebruikt wordt voor een pin, dan wordt deze pin tot output verklaard, en blijft dat ook (als die pin dat aankan, natuurlijk).
Voorbeelden van output commando's zijn
  • high C.4
  • low C.4
  • toggle C.4
  • serout C.2,N2400,("Hello World")
  • sound C.1,(1,40)

Het input/output commando

Gebruik van het input commando definieert een pin expliciet als input. Voorbeeld:
Input C.0
Een beetje overbodig, want direct bij power-up zijn alle pins immers als input geschakeld. Het output commando wordt dan ook vaker gebruikt.


Het let dirs commando

Het "let dirs" commando is bedoeld om alle pins ineens te configureren. Daarvoor wordt een binair masker gebruikt, waarin een 0 een INPUT voorstelt, en een 1 een OUTPUT. Zoals gebruikelijk wordt er van rechts naar links gewerkt (het Most Significant Bit, of MSB, staat links, of "vooraan", het LSB of Least Significant Bit, rechts).
De pins toewijzing voor de PICAXE-08M2 is:
- - - C5 C4 - C2 C1 -
De eerste drie van de 8 bits, C.3 en C.0 zijn nietszeggend, want de 08M2 heeft maar zes I/O pins. En, nogmaals: Pins C.0 en C.3 kunnen niet worden gewijzigd; C.0 is altijd OUT, C.3 is altijd IN
Het commando
let dirsC = %00000110
maakt C.2 en C.1 tot OUTPUTS, en de overige pins tot INPUT. Het procent symbool ("%") aan het begin van de cijferreeks geeft aan dat de volgende cijfers binair moet worden gezien, en niet decimaal.

Het pins commando

In aanvulling op het dirs commando, en om zaken onoverzichtelijker te maken, hier het bit masker voor het pins commqando:
- - - C5 C4 C3 C2 C1 -
Dit omdat pins gebruikt kan worden om samen met een leesmasker te gebruiken in een if...then commando; alle pins zijn dan inputs en C.3 is immers *altijd* input.

Geen opmerkingen :

Een reactie posten