Paso 1: Código con comentarios
Con conexiones serie el problema más común no es la creación de la computadora y el PIC a la misma velocidad en baudios, así que asegúrese de hacerlo (como se hace en mi código).
También, asegúrese de que usted haya conectado todos los GNDs juntos (PIC, MAX232 y equipo GNDs todos conectados).
Además, asegúrese de que está utilizando el valor del capacitor adecuado para el max232 (max232 vs max232A), ver diagrama en el instructivo para los valores.
Además, asegúrese de que su computadora esté enviando los valores que crees que está enviando. Para ello, pegue los cables en el cable DB9 para hacer un loopback serial. Esto hará que el ordenador recuperar exactamente lo que acaba de enviar. Aquí está un diagrama de cómo conectar este:
Así que su código de matlab hacer una lectura serial justo después de la escritura serial.
También se puede utilizar el puerto serial libre monitoreo software Cerciórese de comunicaciones serie están ocurriendo correctamente (aquí es un ejemplo http://www.batchconverter.com/FreeSerialPortMonitor-download-20643.shtml).
De todos modos, aquí está el código:
%##########################################################################
%########################--MATLAB CODE--###################################
%##########################################################################
% Este código supone que tiene MATLAB conectado a un microcontrolador PIC por puerto serie del PC a través de un
% IC MAX232 _OR_ si no usa un max232 todo usted necesita es una 22 kohm limitar la resistencia en
% la línea serial que conecta la computadora con el PIC (aka Pin 3 y Pin 2, ver más abajo).
% El pin 3 o el puerto DB-9 es la línea de TX, también conocido como la línea que lleva datos en serie de la PC al PIC.
% Pin 2 lleva datos en serie al revés (PIC a la PC) si usted quiere hacer eso.
% Pin 5 es el pin de tierra DB-9 que se debe utilizar para conectar la tierra de la PC con el suelo de la PIC.
% Este código también se supone que utiliza COM3 para comunicación serial con el PIC.
SerPIC = serial('COM3'); % <--cambiar apropiadamente
Set (SerPIC, 'Velocidad', 9600, 'DataBits', 8, 'Paridad', 'none', 'StopBits', 1, 'Control de flujo', 'none');
fopen(SerPIC); %--abrir el puerto serie para PIC
fprintf (SerPIC, '%s', ' 003'); %--enviar una cadena de dígitos _three_ al PIC con ningún terminator ('%s')
%--003 = 00000011 en binario, así que primero dos LEDs de PIC se encenderá
fclose(SerPIC) %--cerrar el puerto serie cuando se hace
Delete(SerPIC)
claro SerPIC
% NOTA 1:
% MATLAB siempre da un error de serial, muy probablemente dirá 'no se puede abrir el puerto serial' la próxima vez te
% ejecutar el programa, así que tienes que reiniciar MATLAB
% NOTA 2:
% el número de debe siempre ser enviado como un número de tres dígitos porque por alguna razón no pude obtener mi foto para recibir
% el número cuando no era de una longitud especificada (ver PIC código: DEC3)
%==========================================================================
%==========================================================================
'##########################################################################
'#############################--PIC16F877 CODE--###########################
'##########################################################################
' Este código supone que tiene el PIC16F877 con un LED en cada línea del puerto D (8 líneas).
' De esta forma el PIC se encenderá un patrón diferente de LEDs según el número enviar vía serial de MATLAB.
' Cada LED debe estar en serie con un resistor de 470 ohm (ver foto abajo)
'_
' '
' '---LED---\ 470 ohm
'PIC' >---/ \/\/\---GND
' '------LED---/
'---'
'
' Este código también se supone que tiene la línea TX del puerto DB-9 serial conectado al pin 0 del puerto C (PORTC.0)
Incluyen "bs2defs.bas" ' tiene algunas cosas utiles
' DEFINE OSC 4 ' oscilador velocidad en MHz, esto no es necesario supongo
SerI var PORTC.0 ' un nombre fácil referirse al perno serial
TRISD = % 00000000 ' definir PortD como un puerto de salida
PortD = % 00000000 ' set LED puerto a todos los ceros
GetGhost:
Serin2 SerI, 84, (DEC3 B0) ' obtener un número de tres dígitos de pin serial y ponerlo en la variable B0
PortD = B0 ' marcando las líneas de PortD según este número de tres dígitos
GOTO GetGhost
'===========================================================================
' ===