Interaktiva 1
Jag hade problem med att få meddelanden mellan Basic Stamp 2(BS2) och Basic Stamp 1(BS1). BS2 är ungefär fyra gånger snabbare än BS1. BS1 låser upp väntar meddelande BS2. BS1 kan inte se BS2 meddelandet i fönstret 200 millisecond(ms) har att kontrollera om ett meddelande. Detta är exakt varför det finns så många flöde kontroll linjer kvar i en standard seriella anslutningar. Långsammare maskiner kan inte se snabbare ettor. Jag behövde flödeskontroll, men jag ville använda en annan port för det. Jag har en elektronisk bakgrund så jag tittade på Rx och Tx som portar inte bara som seriella anslutningar.
Steve's Flow Control använder Tx porten som flödesreglering. Du håller din Tx hamnar högt med ett motstånd på 47K till VDD och i din kod. Du övervaka din Rx port att upptäcka när någon lägre Tx hamnen. När du vill skicka ett meddelande som du tar din Tx hamn låg och sedan vänta tills mottagaren lägre Tx hamnen och du skicka ditt meddelande. Mottagaren ska bo i en snäv slinga väntar meddelandet. Efter meddelandet upp båda systemen deras Tx port hög och gå tillbaka till väntar.
För BS1 och långsammare system jag sänka min (Master) BS2 Tx port och paus ca 80 ms och sedan jag överföra mitt budskap. BS1 ser ut för en låg på sin Rx-port och pausar 1ms och sedan öppnar SerIn för meddelandet i två byte. Den första byten är adressen och den andra byten är lamporna. Om adressen inte är korrekt BS1 hoppar över meddelandet och går tillbaka till väntar. BS1 är för långsam för full handskakning. Det fungerar perfekt med rätt timing.
Jag kan bara skicka ett meddelande till BS1 i varje tio slingor av min BS2 kod. Jag kör EasyLights i min BS2 och skicka lampor byte till BS1 som bara har doLights och checkLights och meddelande slinga. Se mitt EasyLights artikel.
Jag kunde inte få BS1 att skicka en korrekt två byte meddelande. Den första byten är förvrängd och jag vet inte varför. BS1 kan inte använda min standard två byte messaging (adress, Data) så jag använder en separat seriell kanal för att hantera denna typ av slav. BS1 lägre dess Tx port och väntar tills Master sänka dess slav Tx port och sedan BS1 skickar en byte-meddelanden som innehåller knappen flaggorna till Master. De båda höja deras Tx portarna höga och gå tillbaka till väntar.
Arbeta med BS1 bestämde jag mig för att göra dem tillfrågade slavar. Jag helt enkelt hålla dem vid liv genom att ständigt skicka meddelanden. De gör allt deras arbete inne i deras meddelande loop. Det finns inget utrymme för mycket annat. De bara sitta där och vänta på ett meddelande så deras knappar och ljus är i praktiken döda. Polling dem håller sina knappar och ljus vid liv.
Som jag får saker gjorda kommer jag lägga upp en annan del till denna interaktiva artikel.
Planering är det första du måste göra för att skapa en interaktiv maskin. Jag skrev detta dokument först och använde den för att programmera min processorer. Eftersom vi behöver seriell kommunikation ser vi vad varje processor har för sin följetong funktioner SerIn och SerOut.
Arduino Uno Full följetong kval 9600
PicAxe 28 x 2-Full Serial kval 9600
BASIC Stamp 2(BS2) Full följetong kval 9600
BASIC Stamp 1(BS1) partiell följetong endast 2400 kval
Full följetong innebär in och ut standard följetong. Jag använder inte något komplicerat.
Kval kan adressering av processorer. Enheter som följetong e-proms ha fysiska adresser. Kvalet väntar på rätt nyckel innan du fortsätter med meddelandet och på vissa system kan detta ge upphov till ett fel som sparkar det av meddelandet. Kvalet kan du ha flera bakgrunder och hundratals slavar. På system som BS1 är för långsam för något annat än grundläggande två byte adress, datameddelande. Du kan fortfarande göra mycket med denna enkla form av meddelanden.
Baud Rate(9600) är hastigheten av flöde av data mellan enheterna. Processorer som den grundläggande stämpel 1 kan bara gå till 2400 så du måste använda det rusat med dem.
Den som sänder först är befälhavaren de andra är tar emot. En Master är bäst, men mer Masters är bättre. Kval och adresser kan du göra detta.
I mitt system är mitt Arduino Uno Master 1 min Picaxe 28 x 2 är Master 2. BS2s kan vara bra Masters för lampor och knappar, men de är Master/slavar här.
Jag har min Arduino Uno anslutna via programmering kabeln till min PC. Jag använder debug terminal att övervaka och styra andra processorer genom bara Rx och Tx och marken. Ett mycket enkelt sätt att skapa en interaktiv maskin.
Denna artikel växande.
Adressen är en number(qualifier) som du ställer in för varje processor och enhet du har. Min adress är en byte formaterat som denna typ Bits (7-6), antal Bits (5-0). Kval och adressen är den första byten du skickar till en annan processor eller enhet att öppna ett meddelande med den. Alla meddelanden säga helt efter sista byte skickas. För att skicka flera byte till en mottagare skicka du det ett kommando som berättar det att fler byte kommer. Grundläggande frimärken är från Parallax.com.
Typ Master(128), Master/Slave(64), Device(192), Slave(0)
Nummer 0 – 63 bitar 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 grundläggande stämpel 2 projektstyrelsen
BS2 SC1 67 Master/Slave(64) + 3 Basic stämpel 2 Super bärare
BS1 PJ1 4 Slave(0) + 4 Basic stämpel 1 projektstyrelsen
BS1 5 Slave(0) + 5 Basic Stamp 1
Anslutningar är TX(transmit data), RX(receive data) och marken. Om du driva din slav från din processor än du behöver makt också. De flesta seriella anslutningar behöver också dra upp motstånd på TX och RX på minst 20K. Vanligtvis dess 40K. Se din manual för din processor. Alla min styrelser är 5 volt. I mitt system använda Master/slavar som BS2 en annan seriekanal för att köra BS1 slavar. Detta håller den huvudsakliga seriekanal ren.
Kablarna måste vara tvinnade om två vändningar per tum. Om du går mer än cirka tio fötter sedan använda skärmade Partvinnade kablar. Undvika kraft/förlängningssladdar, transformatorer, motorer och andra elektriska saker. Data är asynkron dvs den har en intern klocka och det gör det mer känsliga för buller av något slag. Att ha ett bra nätaggregat och massor av stora kondensatorer hjälper mycket.
RX(SerIn) och Tx(SerOut) är de portar som du väljer på din processor styrelser:
Master flöde slav * PC min kabel
RX <<< Tx 22k resistor TD svart
TX >>> Rx 22k resistor RD vit
Marken G G grön
Power V + X Brown
Jag hålla de flesta av mina kablar rak Tx---Tx enligt min herre. Detta håller förvirring ur brödunderläggen och processor styrelser. För anslutningar till datorer och saker du ansluter Rx och Tx till den rätta stift och tråd att de tillhör för det systemet.
* PC seriell använder inverterad protokoll i de flesta fall.
Starta och stoppa bitars se deras bitposition i följetong strömmen som meddelandeflaggor och kontroll.
En nyckel till en maskin är en status byte eller ord som får alla pratar på samma sida. Jag använder en byte. Status kan vara den första byten skickas efter adressen. Status kan också vara grundläggande kommandon till andra processor eller enheten. Detta gör standard två byte meddelanden enkelt.
Status på skickat tillbaka
Bit0 OK upptagen D1
Bit1 meddelande gjort D2
Bit2 väntar kör D3
Bit3 läge vistelse D4
Bit4 Data ingen D5
Bit5 Reset D6
Bit6 Cmd1 mer
Bit7 Cmd2 gjort
Organisation är det första steget till en fungerande maskin. Arbeta med bitar är vilka processorer gör hela tiden. Vi behöver hjälp med bitar. Du använder de logiska operatorerna och, eller och Skift att arbeta med bitar. Något över 63 är en mästare. Först spara byten sedan skifta det rätt 6 bitar för typen. Spara adress efter adress = Anding det med % 00111111.
Typ = adress >> 6 adress = adress och % 00111111
Lägga allt detta in konstanter i början av varje program. Hålla allt uppdateras och du kommer att få en fungerande maskin. Dålig Serial programming visar du ingenting. Märk allt så att du vet vad den gör.