Ik had moeite om berichten tussen de Basic Stamp-2(BS2) en de 1(BS1) van de Basic Stamp. De BS2 is ongeveer vier keer sneller dan de BS1. De BS1 sluiswerken opwaarts te wachten voor de BS2-bericht. De BS1 zien niet het bericht van de BS2 in de 200 millisecond(ms) venster heeft om een bericht te controleren. Dit is precies de reden waarom er zo veel flow control lijnen links in een standaard seriële connectoren zijn. Langzamere machines zien niet sneller degenen. Ik stroom controle nodig, maar ik wilde een andere poort gebruiken voor het. Ik heb een elektronische achtergrond, dus ik keek de Rx en Tx als poorten niet alleen als seriële verbindingen.
Steve's Flow Control gebruikt de Tx-poort als de datatransportbesturing. U houdt uw Tx poorten hoog met een weerstand van 47K VDD en in uw code. U controleert uw Rx-poort te detecteren wanneer iemand lager zijn Tx-poort. Wanneer u wilt verzenden een bericht die u brengen uw lage Tx-poort, en vervolgens moet u wachten tot de lagere ontvanger de Tx-poort en vervolgens het bericht te verzenden. De ontvanger moet blijven in een strakke lijn te wachten voor het bericht. Na het bericht verhogen beide systemen hun Tx-poort hoog en ga terug naar de wachten.
Voor de BS1 en tragere systemen ik lager mijn (Master) BS2 van Tx-poort en ongeveer 80 ms onderbreken en vervolgens ik mijn boodschap overbrengen. De BS1 zoekt een laag op de Rx-poort en pauzeert 1ms en opent vervolgens kanarie voor een twee-byte-bericht. De eerste byte is het adres en de tweede byte is de verlichting. Als het adres niet correct het BS1 slaat het bericht en gaat terug naar de wachten is. De BS1 is te langzaam voor volledige handshaking. Het werkt perfect met correcte timing.
Ik kan alleen een bericht verzenden naar de BS1 in elke tien lusjes van mijn BS2 code. Ik ben EasyLights in mijn BS2 uitgevoerd en de lichten byte te sturen naar de BS1 die alleen doLights en checkLights en een bericht lus heeft. Zie mijn artikel EasyLights.
Ik kon niet krijgen de BS1 een juiste twee byte-bericht te verzenden. De eerste byte is onleesbaar en ik weet niet waarom. De BS1 niet mijn standaard twee bytes messaging (adres, gegevens) dus ik ben met behulp van een apart seriële kanaal om dit type van slaaf te verwerken gebruiken. De BS1 lagere haar Tx-poort en wacht totdat de Master lager zijn slaaf Tx-poort en de BS1 stuurt vervolgens een één byte-bericht dat met de knop vlaggen aan de kapitein. Beiden verhogen hun Tx havens hoog en ga terug naar de wachten.
Werken met de BS1 heb ik besloten om ze te laten ondervraagden slaven. Ik gewoon houd hen levend door het voortdurend sturen ze berichten. Zij doen al hun werk in de loop van hun boodschap. Er is geen ruimte voor nog veel meer. Ze gewoon zitten en wacht op een bericht, zodat hun knoppen en de lichten in feite dood zijn. Polling hen hun knoppen en lichten in leven houdt.
Als ik dingen gedaan krijgen zal ik een ander deel aan deze interactieve artikel uploaden.
De planning is het eerste wat dat je moet doen om een interactieve machine maken. Ik schreef dit document eerst en gebruikte het om mijn processors program. Aangezien wij seriële communicatie moeten zien we wat elke processor heeft voor zijn seriële functies kanarie en de SerOut.
Arduino Uno volledige seriële Qualifiers 9600
Picaxe 28 x 2 volledige seriële Qualifiers 9600
Basic Stamp 2(BS2) volledige seriële Qualifiers 9600
Basic Stamp 1(BS1) gedeeltelijke Serial In alleen Qualifiers 2400
Volledige Serial betekent in en uit standaard serieel. Ik ben niet met behulp van om het even wat ingewikkeld.
Kwalificaties toestaan aansturing van de processoren. Apparaten zoals seriële e-proms hebben fysieke adressen. Kwalificaties wacht tot de juiste sleutel voordat u verdergaat met het bericht, en op sommige systemen kan dit een fout die het schopt uit het bericht verhogen. Kwalificaties laat je meerdere modellen en honderden slaven. Op systemen zoals de BS1 zijn te traag voor allesbehalve standaard twee bytes adres, gegevens bericht. U kunt nog veel doen met deze eenvoudige vorm van messaging.
Baud Rate(9600) is de snelheid van de stroom van gegevens tussen de apparaten. Processoren zoals de Basic Stamp 1 alleen naartoe 2400 zodat u die snelheid met hen moet gebruiken.
Degene die eerst doorgeeft is de meester de anderen zijn ontvangt. Één Master is het beste, maar meer Masters zijn beter. Kwalificaties en adressen kunnen u dit doen.
In mijn systeem is mijn Arduino Uno Master 1 en mijn Picaxe 28 x 2 is Master 2. De BS2s kan goede modellen voor verlichting en knoppen, maar zij zijn Master/slaven hier.
Ik heb mijn Arduino Uno met elkaar verbonden door de programmeer kabel naar mijn PC. Ik ben met behulp van de opdracht debug terminal voor bewaking en beheersing van de andere processors door gewoon Rx en Tx en grond. Een zeer eenvoudige manier van het creëren van een interactieve machine.
Dit artikel is groeiende.
Het adres is een number(qualifier) die u voor elke processor en het apparaat dat u hebt ingesteld. Mijn adres is dat een byte opgemaakt zoals dit Type (Bits 7-6), aantal Bits (5-0). Kwalificatie of adres is de eerste byte u opent een bericht met het naar een andere processor of een ander apparaat stuurt. Alle berichten beëindigen volledig nadat de laatste byte wordt verzonden. Voor het verzenden van meerdere bytes naar een ontvanger verzenden u een opdracht die vertelt dat er meer bytes komen. Fundamentele postzegels zijn van Parallax.com.
Typ Master(128), Master/Slave(64), Device(192), Slave(0)
Nummer 0 – 63 Bits 5-0
Arduino Uno 128 Master(128) + 0 Makezine.com/Store
Picaxe 28 x 2 65 Master/Slave(64) + 1 LetsMakeRobots.com
BS2 PJ1 66 Master/Slave(64) + 2 Basic Stamp 2 Project Board
BS2 SC1 67 Master/Slave(64) + 3 Basic Stamp 2 Super vervoerder
BS1 PJ1 4 Slave(0) + 4 Basic Stamp 1 Project Board
BS1 5 Slave(0) + 5 Basic Stamp 1
Verbindingen zijn TX(transmit data), RX(receive data) en grond. Als u uw slaaf van uw processor macht dan u nodig hebt macht ook. Meeste seriële verbindingen moeten ook optrekken weerstanden op TX en RX van ten minste 20K. Meestal zijn 40K. Raadpleeg uw handleiding voor uw processor. Al mijn platen zijn 5 volt. In mijn systeem de Master/slaven zoals de BS2 gebruiken een ander seriële kanaal wilt uitvoeren van BS1 slaven. Dit houdt het belangrijkste seriële kanaal schoon.
Uw kabels moeten twisted pair ongeveer twee wendingen per inch. Als je meer dan ongeveer tien voet dan gebruik afgeschermde twisted pair kabels. Vermijd macht/verlengsnoeren, transformatoren, motoren en andere elektrische dingen. De gegevens is asynchroon dat wil zeggen het heeft een interne klok en dat maakt het meer vatbaar zijn voor lawaai van welke aard ook. Na een goede voeding en een heleboel grote condensatoren helpt veel.
RX(SerIn) en Tx(SerOut) zijn de poorten die u op uw processor boards:
Master Flow Slave * PC mijn kabel
RX <<< Tx 22k ohm weerstand TD Black
TX >>> Rx 22k ohm weerstand RD wit
Ground G G Green
Power V+ X Brown
Ik houden de meeste van mijn kabels rechte Tx---Tx volgens mijn meester. Dit houdt de verwarring uit breadboard en processor boards. Voor verbindingen met PC's en dingen u Rx en Tx verbinden met de juiste pin/connector en draad dat ze tot dat systeem behoren.
* PC seriële gebruik omgekeerde protocol in de meeste gevallen.
Startbit en Stop bits verwijzen naar hun positie van de bits in de seriële stroom als berichtvlaggen en controle.
Een sleutel tot een machine is een status byte of een woord dat krijgt iedereen praten op dezelfde pagina. Ik ben met behulp van een byte. Status kan de eerste byte na het adres verzonden worden. Status kan ook worden basic commando's in de andere processor of apparaat. Dit maakt standaard twee bytes berichten gemakkelijk.
Status van verzonden rug
Bit0 OK Busy D1
Bit1 bericht gedaan D2
Bit2 wachten actief D3
Bit3 Mode Stay D4
Bit4 Data none D5
Bit5 Reset D6
Bit6 Cmd1 More
Bit7 Cmd2 Done
Organisatie is de eerste stap naar een werkende machine. Werken met Bits is welke processors doen alle van de tijd. We nodig hulp met Bits. U gebruikt de logische operators en, of en Shift om te werken met stukjes. Iets meer dan 63 is een Master. Eerst de byte opslaan dan verschuiven het juiste 6 beetjes voor het Type. Save het adres adres = Anding met % 00111111.
Type = adres >> 6 Address = adres en % 00111111
Lay all hiervan in constanten aan het begin van elk programma. Houd alles bijgewerkt en u krijgt een werkende machine. Slechte seriële programmering ziet u niets. Label alles zodat u weet wat het doet.