Start

Förstasidan
Statistik

Social robot

Robotens syn
Modell/simulator
Levande modell


Arduino

Starta upp Arduino
DCcduino UNO
Pro Mini

Raspberry pi

Om Raspberry

Pic32

Om Pic32
Konstruktionen
Praktisk kom-igång
Starta upp UBW32
Installera MPLAB
Rinnande ljus
Stegmotor
Display
RS232 Pic32 - terminal
Luffarschack

Servo

Överblick
Isärmonterat servo
Styrning av servo
Mini Maestro
Bygga ett servo

Elektronik

Open Collector
Kontaktstuds
Drivsteg på utgångarna
Halleffektsensor/switch
MLX90316 (halleffekt)
Pulsbreddsmodulering

Open CV

Om OpenCV

Matematik

Linjär algebra
Olinjär länkmekanism

RS232 mellan Pic32 och en PC
Varför RS232
konsol Man behöver någon sorts konsol mot Pic32'an för att kunna utveckla lite större program.

Det är frestande att använda USB-porten på UBW32, speciellt som det redan finns färdig kod för detta. Men att knacka kod och fixa elektronik för en RS232-anslutning är relativt enkelt och en serieport blir direkt kompatibel med t.ex. en seriell display vilket är perfekt för felutskrifter. Om jag ska använda USB-porten på UBW32 måste jag inkludera en hel del kod och får dessutom kod i Pic'en som kommunicerar med kod i PC'n. Risken är att när mitt program i PIC'en havererar (vilket kommer hända många gånger under utvecklingen) så drar det med sig hela USB-porten ner (även på PC-sidan) vilket leder till att jag måste starta om PC'n för att få igång min konsol. RS232 däremot är minimalt med kod i Pic32'an (se nedan) som inte hänger ihop med något på PC-sidan. Om Pic'en havererar är det bara att trycka på reset på UBW32 och så är konsolen uppe igen.

RS232 den billiga varianten (meka själv, 40 kronor)
Gamla PC-datorer brukar oftast vara bra som labbdatorer och dessa råkar ofta vara utrustade med RS232 -kontakter. Eftersom microprocessorns TTL-nivåer inte är kompatibla med RS232-standard måste man meka lite elektronik som skapar en "riktig" RS232-utgång på Pic'en (anslutningsbar till PC'n). Det åstadkommer man t.ex. med en MAX3232 [2]. Jag har här vänt på TX/RX så anslutningen sker med en "rak" kabel (ej nullmodem-kabel).

MAX3232


MAX3232 pinout
X1-kontakten Pinne  
Recieve Data 2
Transmit Data 3
Data Terminal Ready 4
System Ground 5
Data Set Ready + Carrier Detect   6+1  
Request to Send 7
Clear to Send 8

Jag struntar i några hejdlöst föråldrade stift som har med flödeskontroll att göra. De kändes föråldrade redan när jag var barn.RS232 kontakt hone Det är faktiskt så att man kan strunta i alla signaler utom jord och TX samt RX. CTS och RTS skulle man kunnat bygla så att de alltid är "på", men jag avstår från det.

Till höger kretsens ben och syfte så att man vet hur allt skall kopplas ihop.

Flödeskontroll (föråldrat)
Liten kommentar kring detta med flödeskontroll. Det finns flera möjligheter att göra detta med RS232 med de används inte längre. Tidigare användes RS232 mest mot långsamma enheter, t.ex. teleprinters anlutna med 300 baud. Det finns lite olika möjligheter med RS232 för en ansluten enhet att be sändaren ta det lungt med dataskickandet. Dels hårdvarumässigt med RTS/CTS och dels mjukvarumässigt med XON/XOFF. I överföringar idag där det krävs stora volymer data (och där handskakning eventuellt skulle komma på fråga) används inte längre RS232 och för de "små" applikationer RS232 används till behövs ingen handskakning - så vi skippar handskakningen.

RS232 den dyra men enklare varianten (200 kr)
Eftersom många nya PC saknar RS232 -port och därför att folk ändå måste köpa en RS232-till-USB-adapter så har nedanstående bekväma krets kommit till världen. USB'n kör man in i PC'n där den betraktas som en COM-port (serieport). Data ut från kretsen har TTL-nivåer och kan därför kopplas direkt in i t.ex. Pic32'an.
usb till rs232

Installation av FT232RL
enheten klarJag köpte ovanstående lösning på RS232. För mig var det bara att plugga in kretsen till datorn (som är uppkopplad) så hittade windows 7 drivrutinerna automatiskt. Det tar en liten stund medans windows kommunicerar över internet men sen plötsligt, när man minst anar det, så vart drivrutinen installerad. Om det inte fungerar automatiskt finns drivrutiner att ladda ner på nätet och processen för att installera dessa är samma som beskrivna under uppstartning av UBW32.

Efter att kretsen fått sin USB-anslutning måste man ta reda på under vilken COM-port seriellanslutningen hamnade. Det gör man med enhetshanteraren.

enhetshanteraren

När man känner till COM-porten passar man lämpligtvis på att ställa in putty för denna seriellport, för att sätta punkt för installationsprocessen.

enhetshanteraren

Anslutning till Pic32
Det är viktigt att inte glömma bort att vända på TX/RX. Dvs TX på UBW32 ansluts till RX på RS232-kretsen och RX på UBW32 till TX på RS232-kretsen. Alltså korskopplade. Sändaren ansluts till mottagaren s.a.s. Inte helt ologiskt om man tänker efter lite.

RX och TX på UBW32 hittar man enligt nedan.

U2 RX TX  UBW32

Mjukvara i Pic32
Konfigureringen av UARTen och baudraten (U2BRG) räknas ut på samma sätt som i exemplet med seriell display ansluten till Pic32. Den magiska siffran U2BRG räknas ut enligt:
konfigurera uart pic32
/********************************************************************
RS232 på UBW32 80 MHz  19200 baud           http://www.robotsteel.com
********************************************************************/

#include "plib.h"
#include "HardwareProfile.h"

#define SYS_FREQ 	(80000000L)
#define BRATE	1041

void initU2(void)
{
	int x;
	U2BRG=BRATE;
	U2STA=0;
	U2MODE=0x8008;	 // init UART 
	U2STASET=0x1400; // enable transmitter
	putU2(0);
	for(x=0;x<10000;x++) ; // vänta lite
	putU2S("Serieport 2 konfigurerad 19200 baud");
}

int putU2(int c)
{
	while(U2STAbits.UTXBF) ;
	U2TXREG=c;
	return c;
}

char getU2(void)
{
	while(!U2STAbits.URXDA) ;
	return U2RXREG;
}

int putU2S(char *s)
{
	while(*s)
	{
		putU2(*s++);
	}
	putU2(10);
	putU2(13);
}

int main(void)
{   
	char c;
	SYSTEMConfigPerformance(80000000L);
 	mJTAGPortEnable(0);
	initU2();
	putU2S("ABCDEFGHIJKLMNOPQRSTUVXYZÅÄÖ");
	putU2('>');
	while(1)
	{
		c=getU2();
		if(c==13) // return
		{
			putU2(10); // ny rad först
		}
		putU2(c);
	}
}


Mjukvara i PC
Jag kör Putty på min PC'n och det fungerar bra för mig. Kopplar jag upp mig mot COM4 med 19200 baud och trycker på nollställ -knappen på UBW32 ser det ut som nedan.

putty


Kolla även in: Spela luffarschack mot Pic32'an över RS232.

Ref:
1. RS232
Wikipedia har mer om detaljerna om RS232
2. MAX3232
Översiktlig data för MAX3232. Fullständigt datablad för MAX3232
3. Programming 32-bit microcontrollers in C
Programming 32-bit microcontrollers in C - Exploring the PIC32, Lucio Di Jasio






Robot och elektronik -sidan byter namn till electro.st

Senast läst 07:42:10 19/7 2017 Texten uppdaterad 17/9 2014
footer sign