TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: lu6vg en 23 de Marzo de 2003, 13:30:00

Título: Dudas Basicas sobre programacion con PCW
Publicado por: lu6vg en 23 de Marzo de 2003, 13:30:00
Hola

Estoy haciendo mis primeras armas programando pics con PWC y me surgen dudas basicas. Mi idea es adaptar un programa que estaba en un 16F84 aun 16F877 para agregar entradas A/D al proyecto y ponerle algunos sensores que se comuniquen via protocolo I2C.

La primera duda que me surge es es con la asignacion de los pines a los que se les asigna la funcion de SLC y SDA. Cuando defino el programa al principio me asigna esos dos a los pines C3 y C4 respectivamente. ¿Eso es por convencion (y por ende los puedo cambiar) u obedece a alguna razon de hard del micro.

La segunda duda que me surge es para definir cuales puertos son entrada o salida. Al querer usar la sentencia set_tris_c para definir el puerto nos se que valores asignare a los pines C3 y C4. ¿Que se pone ahi? o no importa el valor que se le asigne ya que eso se define por la sentencia #USE I2C.

Lei por algun lado que cuando dejo un puerto sin usar lo tengo que poner en OUT (Valor logico 0) para que no entre por ahi basura que haga funcionar mal el PIC. ¿Es esto cierto?

Al pasar de un F84 a un F877, tuve que cambiar asignaciones de puertos para usar los entradas analogicas por lo que pines que tenia asignado al puerto A los puse en el C.

Asignacion original

//                       RA4 RA3    RA2    RA1    RA0
//                       In     Out    Out     Out    Out
//                       Sin    So     PTT    Val    CD
//   0      0      0     1      0        0        0      0  = 0x10
//
//  RB7    RB6    RB5    RB4    RB3    RB2    RB1    RB0
//  In        In         In        In       Out     Out     Out    Out
//  SW2    SW1    PTT    Ain    R1K    R2K    R4K    R8K
//   1          1          1         1      0         0          0         0  = 0xF0

Mi asignacion

//  RB7    RB6    RB5    RB4    RB3    RB2    RB1    RB0
//  In         In         In        In     Out    Out        Out    Out
//  ICSP   ICSP   PTT_IN Ain    R1K    R2K    R4K    R8K
//   1          1         1          1          0          0         0      0  = 0xF0
//
//
//  RC7    RC6    RC5    RC4    RC3    RC2    RC1    RC0
//  In         Out       Out    In         In         Out    Out    Out
//  sin    sout        S/U    SDA   SLC    CD     VALID  PTT_OUT
//   1          0         0         1         1      0              0      0  = 0x98
//
//
//  RD7    RD6    RD5       RD4      RD3       RD2        RD1        RD0
//  In        In         Out       Out        Out        In             Out           In
//  SW2    SW1    S/U    SONIDO FOTO   CAMARA CORTE  CORTE
//   1          1          0          0             0                  1             0      1  = 0xC5
//
//
//                                     RE2    RE1    RE0
//                                     Out    Out    Out
//                                     S/U    S/U    S/U
//                                      0      0         0  = 0x00



Leyendo el codigo veo que tiene las siguientes instrucciones que no alcanzo a comprender bien

#byte porta = 5
#byte portb = 6

luego en el programa se usa de la siguiente manera

if(!bit_test(porta, 4)) goto testhang;

¿Que es lo que hace eso?

Saludos

Luis
Título: RE: Dudas Basicas sobre programacion con PCW
Publicado por: pacalaconcurso en 24 de Marzo de 2003, 07:33:00
un par de cosas:

lo de la definicion de las patitas del I2C puedes poner las que quieras, a menos que quieras usarlo hardware, que si tienes que poner C3 y C4 y forzar el uso de hardware.

lo de #byte porta = 5 y #byte portb = 6 es la direccion de los puertos A y B. creo que esto esta ya definido en el fichero de definicion del micro y no es necesario ponerlo, a menos que definas una estructura y la quieras redireccionar a u puerto, mira el fichero lcd.c y veras un ejemplo de esto.

 if(!bit_test(porta, 4)) goto testhang;

si pa patita A.4 esta a 0 ( la admiracion indica negacion), salta a la etiqueta testhang...seguro que en programa encuentras esto testhang:.......pues aqui es donde salta.

espero que se ayude
Título: RE: Dudas Basicas sobre programacion con PCW
Publicado por: lu6vg en 24 de Marzo de 2003, 09:52:00
Gracias!!!!!!!!!!!!!!
Título: RE: Dudas Basicas sobre programacion con PCW
Publicado por: adolfoadc en 24 de Marzo de 2003, 13:00:00
Las I/O digitales que no vayas a usar debes configurarlas como salidas, esto es debido a la tecnologia cmos, si las dejas como entradas debes de forzarlas a un nivel definido de lo contrario el micro puede hacer cosas raritas.
Este mismo fenomeno ocurre con cualquier dispositivo cmos, como puede ser un 4093 (puertas nand), si no defines las entradas el dispositivo empieza a hacer cosas raras en las salidas.
Mi recomendacion es que las patillas que no uses la coloques como salidas, o sino con una resistencia de 10K define el nivel.
De lo demas no puedo ayudarte nada, en eso el monstruo es el amigo felix.
Título: RE: Dudas Basicas sobre programacion con PCW
Publicado por: lu6vg en 24 de Marzo de 2003, 18:00:00
Iran entonces como salidas todas las no usadas.
...cha gracias