Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MARCO_RECARGADO

#11
Juan_elec

espero que no sea muy tarde, creo que un diagrama de lo que tienes serviria un poco puesto que dices que tienes un pid pero como es que retroalimentas al pic para hacer el ajuste de velocidad? con un tacometro o con que?


segun entiendo en tu programa utilizas el adc para saber la velocidad, yo creo que te ha de variar mucho, porque el voltaje de salida no debe ser constante, aunque paraciera, lo que yo te recomendaria es que hicieras una serie de promedios, es decir que tomes unas 10 muestras del adc y las promedies y asi sucesivamente para que salga lo mas exacto posible, obviamente que entre mas muestras tengas mas cerca estaras del valor, el mismo metodo aconsejo para cuando estas muestreando el valor del pwm que mandas, en gral yo pienso que por eso no coinciden tus valores,
pero en definitiva un diagrama electrico estaria mucho mejor
#12
Aunque no soy muy participativo me apunto para ello.

al menos uno si subo
#13
Cita de: Meta en 14 Octubre 2008, 18:39 PM
Hola:

En un puerto del que sea por ejemplo el puerto A del PIC18F2550, quiero solo modificar un bit. Son 8 pin de salida del RA0 al RA7 y quiero modificar el RA7 con una instrucción que no se cual es en el lenguaje C, pero en ensamblador (ASM) son el BCF y BSF.

¿Cómo es en C y con el compilador CCS?

O si no, ¿cómo agrego en ASM lo que quiero en C del CCS?

Un cordial saludos.




las instrucciones que tu buscas son estas

output_high(PIN_B0);

output_low(PIN_B0);

en el caso de que fuera el puerto b el bit 0
SALUDOS.
#14
El software de proteus y picc estan publicados al inicio de este post y son las versiones mas recientes  que yo tengo en cuanto tenga mas actuales los publico, SALUDOS
#15
Cita de: alondra_celeste en 19 Octubre 2008, 05:26 AM
Hola a todos, ando buscando informacion sobre comunicacion por RF, tengo los transmisores LAIPAC TLP434A & RLP434A, lo que no se como es que debo enviar informacion de un PIC- TLP434A - RLP434A - PIC, es decir, informacion de un PIC a otro PIC mediante este transmisor y receptor inalambricos, con el Lenguaje C (CCS), me urge mucho  :-[ , ya he buscado sin exito, por favor, alguien puede ayudarme????

Gracias.

Liz
Hola que tal disculpa pero este post se hizo especialemente para poner programas de PICS en C o resolver dudas sobre programas, por lo que pido a todos los usuarios en gral que posteen sus dudas unica y exclusivamente acerca de programacion de pics en c   no deseo que este comentario se tome como ofensivo solo es para tener un orden en nuestros posts y para que aquel que quiera aprender a programar pics en c no se vea afectado con temas de otra indole.

bueno despues de sermon te puedo decir, los transmisores que tu tienes son transmisores que envian todo lo que tu pongas en sus pines de salida/entrada respectivamente es decir si tu pones un "1" logico eso mismo mandara, sin embargo solos te pueden acarrear muchos problemas porque no tienes un protocolo de counicacion para detectar o filtrar posibles errores o lo que es lo mismo no tienes la certeza de que estas recibiendo, para eso yo te recomendaria usar un codificador y decodificador respectivamente. sin embargo los puedes conectar directamente al PIC. aunque yo no lo recomiendo mucho por que estan sujetos a muchos disturbios, estos son unos ejempolos de como conectar tus dispositivos de rf.








yo te recomendaria los decoficadores  HT12E y HT12D aqui esta el lnik de como puedes utilizarlos, estos chips ya contienen su propio protocolo de comunicaciones y a mi en lo personal me han sido de mucha utilidad, espero haber sido de ayuda , SALUDOS

www.datasheetcatalog.org/datasheets/37/467327_DS.pdf
#16
Cita de: M@ndo31 en 22 Mayo 2008, 02:36 AM
Hi!!!
        Quisiera ver si me pueden ayudar, estoy programando un PIC16F628A y trato de configurar los puestos analogicos digital con las instruciones de
setup_adc(), setup_adc_ports(), etc y el ccs me marca una serie de errores relacionados con todas las instrucciones del adc, los erroes son los siguentes:

Undefined identifier setup_adc_ports
Undefined identifier setup_adc
Undefined identifier setup_adc_channel
Undefined identifier read_adc

No se si se necesite una libreria especial para este tipo de pic ya que con el 16F627A tbm marca los mismos errores o se nececte definir algo antes de incluirlas.

Espero y me puedan ayudar ya que es para utilizarlo en un proyecto final.
    De antemano GRACIAS. ;D










sera porque en la libreria del ccs no tiene declarado que el pic tiene puertos anologos?









//////// Standard Header file for the PIC16F628A device ////////////////
#device PIC16F628A
#nolist
//////// Program memory: 2048x14  Data RAM: 223  Stack: 8
//////// I/O: 16   Analog Pins: 0
//////// Data EEPROM: 128
//////// C Scratch area: 77   ID Location: 2000
//////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,NOPUT,PUT,PROTECT,NOPROTECT
//////// Fuses: BROWNOUT,NOBROWNOUT,NOMCLR,MCLR,NOLVP,LVP,INTRC,RC_IO
//////// Fuses: INTRC_IO,RC,NOCPD,CPD
////////
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
//                         PORT_x_PULLUPS(), INPUT(),
//                         OUTPUT_LOW(), OUTPUT_HIGH(),
//                         OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:

#define PIN_A0  40
#define PIN_A1  41
#define PIN_A2  42
#define PIN_A3  43
#define PIN_A4  44
#define PIN_A5  45
#define PIN_A6  46
#define PIN_A7  47

#define PIN_B0  48
#define PIN_B1  49
#define PIN_B2  50
#define PIN_B3  51
#define PIN_B4  52
#define PIN_B5  53
#define PIN_B6  54
#define PIN_B7  55

////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1

#define BYTE int8
#define BOOLEAN int1

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

////////////////////////////////////////////////////////////////// Control
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP  3     
#define WDT_TIMEOUT     11   
#define MCLR_FROM_SLEEP 19   
#define MCLR_FROM_RUN   27   
#define NORMAL_POWER_UP 25   
#define BROWNOUT_RESTART 26   


////////////////////////////////////////////////////////////////// Timer 0
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER_0(),
//                              SET_TIMER0() or SET_RTCC(),
//                              GET_TIMER0() or GET_RTCC()
// Constants used for SETUP_TIMER_0() are:
#define RTCC_INTERNAL   0
#define RTCC_EXT_L_TO_H 32
#define RTCC_EXT_H_TO_L 48

#define RTCC_DIV_1      8
#define RTCC_DIV_2      0
#define RTCC_DIV_4      1
#define RTCC_DIV_8      2
#define RTCC_DIV_16     3
#define RTCC_DIV_32     4
#define RTCC_DIV_64     5
#define RTCC_DIV_128    6
#define RTCC_DIV_256    7


#define RTCC_8_BIT      0     

// Constants used for SETUP_COUNTERS() are the above
// constants for the 1st param and the following for
// the 2nd param:

////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
//                            RESTART_WDT()
// WDT base is 18ms
//

#define WDT_18MS        0x8008   
#define WDT_36MS        9   
#define WDT_72MS       10   
#define WDT_144MS      11   
#define WDT_288MS      12   
#define WDT_576MS      13   
#define WDT_1152MS     14   
#define WDT_2304MS     15   

////////////////////////////////////////////////////////////////// Timer 1
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
// Constants used for SETUP_TIMER_1() are:
//      (or (via |) together constants from each group)
#define T1_DISABLED         0
#define T1_INTERNAL         0x85
#define T1_EXTERNAL         0x87
#define T1_EXTERNAL_SYNC    0x83

#define T1_CLK_OUT          8

#define T1_DIV_BY_1         0
#define T1_DIV_BY_2         0x10
#define T1_DIV_BY_4         0x20
#define T1_DIV_BY_8         0x30

////////////////////////////////////////////////////////////////// Timer 2
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
// Constants used for SETUP_TIMER_2() are:
#define T2_DISABLED         0
#define T2_DIV_BY_1         4
#define T2_DIV_BY_4         5
#define T2_DIV_BY_16        6

////////////////////////////////////////////////////////////////// CCP
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
// Constants used for SETUP_CCPx() are:
#define CCP_OFF                         0
#define CCP_CAPTURE_FE                  4
#define CCP_CAPTURE_RE                  5
#define CCP_CAPTURE_DIV_4               6
#define CCP_CAPTURE_DIV_16              7
#define CCP_COMPARE_SET_ON_MATCH        8
#define CCP_COMPARE_CLR_ON_MATCH        9
#define CCP_COMPARE_INT                 0xA
#define CCP_COMPARE_RESET_TIMER         0xB
#define CCP_PWM                         0xC
#define CCP_PWM_PLUS_1                  0x1c
#define CCP_PWM_PLUS_2                  0x2c
#define CCP_PWM_PLUS_3                  0x3c
long CCP_1;
#byte   CCP_1    =                      0x15         
#byte   CCP_1_LOW=                      0x15         
#byte   CCP_1_HIGH=                     0x16         
////////////////////////////////////////////////////////////////// UART
// Constants used in setup_uart() are:
// FALSE - Turn UART off
// TRUE  - Turn UART on
#define UART_ADDRESS           2
#define UART_DATA              4
////////////////////////////////////////////////////////////////// COMP
// Comparator Variables: C1OUT, C2OUT
// Constants used in setup_comparator() are:
#define A0_A3_A1_A2  0xfff04
#define A0_A2_A1_A2  0x7ff03
#define NC_NC_A1_A2  0x6ff05
#define NC_NC_NC_NC  0x0ff07
#define A0_VR_A1_VR  0x3ff02
#define A3_VR_A2_VR  0xcff0A
#define A0_A2_A1_A2_OUT_ON_A3_A4 0x7e706
#define A3_A2_A1_A2  0xeff09
#define CP1_INVERT   0x00010
#define CP2_INVERT   0x00020

#bit C1OUT = 0x1f.6
#bit C2OUT = 0x1f.7

////////////////////////////////////////////////////////////////// VREF
// Constants used in setup_vref() are:
//
#define VREF_LOW  0xa0
#define VREF_HIGH 0x80
// Or (with |) the above with a number 0-15
#define VREF_A2   0x40

////////////////////////////////////////////////////////////////// INTERNAL RC
// Constants used in setup_oscillator() are:
#define OSC_48KHZ   0
#define OSC_4MHZ    8

////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      CLEAR_INTERRUPT(), INTERRUPT_ACTIVE(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_RB                    0xFF0B08
#define INT_EXT                   0x0B10
#define INT_TBE                   0x8C10
#define INT_RDA                   0x8C20
#define INT_TIMER1                0x8C01
#define INT_TIMER2                0x8C02
#define INT_CCP1                  0x8C04
#define INT_COMP                  0x8C40
#define INT_TIMER0                0x0B20
#define INT_EEPROM                0x8C80

#list

fuente CCS ldevices
#17
Cita de: M@ndo31 en  6 Mayo 2008, 05:50 AM
Gracias MaARCO_RECARGADO si me sirve esa libreria...

pero otra cosita podrias ayudarme a poder pasar de los displays de 7 segmentos a un lcd el proyecto que tu posteaste del reloj en tiempo real es que en verdad me urge gracias


claro este es el programa

P.D. Contesto tan rapido como me lo permite mi trabajo disculpa





////////////////////////////////////////////////////////////////////////////////
////////////ESTE PROGRAMA UTILZA EL CIRCUITO DS1307 PARA MOSTRAR LA ////////////
//////////HORA EN TIEMPO REAL A TRAVEZ DE UN UNA LCD DE 2 POR 16 CARACTERES/////
//////////////////////////PARA FORO ELHACKER.NET////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#include <ds1307.c>
#include <lcd.c>


#use fast_io(A)
#use fast_io(B)
#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida


#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8

int sec;
int min;
int hrs;
int  day;
int  month;
int  yr;
int  dow;


////////////////////////////////////////////////////////////////////////////////
//////////////////////Comienzo de la funcion principal//////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main()
{

   ds1307_init(0);                          ///se inicializa el ds1307
   
   set_tris_a(0xff);
   set_tris_d(0x00);
   set_tris_b(0x00);
   set_tris_c(0x04);
   set_tris_e(0x01);
   port_b_pullups(true);
 
 
  lcd_init();                               /// inicializamos lcd
 
 
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55 (9:49:00 am)
 
  ds1307_set_date_time(8,11,7,2,9,49,00);   /// se escribe en el displositivo
                                            /// el tiempo deseado
  while(1)
  {
 
    delay_ms(100);
   
  ds1307_get_date(day,month,yr,dow);        /// se obtiene la fecha 
  ds1307_get_time(hrs,min,sec);             /// se obtiene la hora
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%02d:%02d:%02d          ",hrs,min,sec);   ///se despliegan los datos
 
  lcd_gotoxy(1,1);
  lcd_putc("WWW.ELHACKER.NET");
       
  }
}






archivos de simulacion

http://rapidshare.com/files/119934508/reloj_tiempo_real_con_lcd.DSN.html
http://rapidshare.com/files/119934581/RELOJ_TIEMPO_REAL_CON_LCD.c.html
#18
Cita de: montero2210 en  5 Mayo 2008, 23:32 PM
Hola a todos!!!

Tengo un problemilla y no se resolverlo a ver si ustedes que veo que teneis bastante experiencia me podeis ayudar.

Estoy intentando hacer que con el pic16f84, se encienda como el coche fantastico una serie de leds. Hasta hay todo correcto y funcionando. Mi problema viene que le he añadido un pulsador para que cuando yo lo pulse el led que este encendido parpadee durante un tiempo, y no se como leer la pulsacion del pulsador.

Gracias de antemano!!!!



primero debes de saber que pin quieres yo te recomendaria el portb por tener resistencias de pull up

primero tienes que configurar el porb como entrada

set_tris_b(0xff);

ahora testeas el puerto si es cero o uno dependiendo de lo que desees

if(pin_b0==0)   
{

y aqui metes todo lo que desees hacer cuando se pulse el boton

}


dato
#19
Publicado por: flameboyr3 
Insertar Cita
hasta ahora me quiero iniciiar en el mundo de pic programados con LENGUAJE C bien , he estado leyendo varias tutoriales y manueles de como progrmaar y creo que es hora de empezar asi que, descarge los instaladores de ccs y elplugin para MPLAB,  asi que quiero programar directamente desde ccs pero no se como se crea qel proyecto para empezar a programaar, ose como saco mi nuevo documento para empezar a programar si es como en el mplab que se debe crea r un proyecto y luego un .asm y unirlos , que pena peo ese es mi trabo para empezr ayudenme como empiezo

ademas he leido que se puede enlazar con el proteus para simularlo ¿como se hace eso?

ademas la ultima pregunta  ?se puede simular paso a paso con el ccs¿ y como llego ha hacer tal cosa

gracias amigo y espero una prontarespuesta para segir con estas clases


flameboy





el ccs es amas amigable que el mplab para crear tu proyecto solo tienes que hacer lo siguiente.

abrir el ccs 
dar click a   NEW despues  a SOURCE FILE y listo puedes empezara hacer tu programa,no se te olvide anexarle a tu programa la extension *.C 

ejemplo:

miprograma.C


con respecto a sincronizar proteus con ccs no se como hacerlo, yo solo he utilizado proteus para simular los programas que hago en ccs,

CCS creo que lo unico que puede hacer es ejecutar el programa paso a paso para que sepas que va haciendo tu programa y puedas depurarlo
#20
Electrónica / respuesta
18 Mayo 2008, 07:54 AM
Publicado por: universitarioEIA 
Insertar Cita
yo estoy programando el DS1307 en PICC compiler. Ya lo probe en proteus y ya muestra todo (fecha y hora) en un lcd. estoy haciendo una maquina dobladora de perfiles, y necesito que el DS1307 me guarde el numero de piezas construidas al mes. como hago para guardar este dato?


El DS1307 no puede guardar tantos datos creo que su memoria interna es apenas de 68 bytes entre los cuales ocupa para la fecha y hora, por lo que no seria viable para tu proyecto lo mejor seria guardarlo en la memoria eeprom del pic o en su defecto en una memoria eeprom externa la 24c256 podria ser una buena opcion.