Autor Tema: Desesperación absoluta. ni con lo basico acierto  (Leído 4851 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado marioquartz

  • PIC10
  • *
  • Mensajes: 22
Desesperación absoluta. ni con lo basico acierto
« en: 28 de Junio de 2008, 09:00:56 »
Llevo bajados unos cuantos programas, revisado medio internet y soy incapaz de conseguir que un trozo de codigo tras ser compilado funcione en el pic simulator.

He buscado un compilador y tras mucha busqueda he encontrado uno que cogiendo un codigo que se supone que esta bien, no de error. Luego cogo el hex y lo cargo el el Pic Simulator. Pasa de mi. No se enciende ningun led y deberia.

Asi que pido:
- un ejemplo que este re-comprobado.
- Un compilador que funcione y no sea de pago o demo. Tiene que haberlo.

Yo he buscado y no lo consigo.

He probado de todo, he revisado, y vuelta a revisar. Estoy a punto de mandarlo todo a la mierda.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #1 en: 28 de Junio de 2008, 10:12:56 »
En que lenguaje de programacion estas compilando, para lenguaje ensamblador puedes usar MPLAB, tambien podrias poner el codigo para ver si tiene algun error.


Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado marioquartz

  • PIC10
  • *
  • Mensajes: 22
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #2 en: 29 de Junio de 2008, 19:14:26 »
Pic: 16f84A
Lenguaje: CCS (es lo mas parecido a lo que conozco)
Compilador: PIC C Compiler

Codigo utilizado (sacado de este mismo foro)
Código: [Seleccionar]
#include <16F84.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=4000000)

#byte port_b=6


void main() {

  int contador;
 
  set_tris_b(0);           //// declaramos el puerto B como salidas
  port_b=0;

         
  while (true) {           //// bucle infinito
     contador=200;         //// retraso, 200 ciclos de 1000 microsegundos, o sea, 2 milisengundos
     while(--contador!=0)
       delay_us(1000);
     port_b=0xff;          //// activa todos los pins del puerto B
     contador=200;
     while(--contador!=0)  //// retraso, 200 ciclos de 1000 microsegundos, o sea, 2 milisengundos
       delay_us(1000);
     port_b=0x00;};        //// apaga todos los pins del puerto B

}

Y perdon por el retraso, me entretuve con el chasis del tupperbot.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #3 en: 01 de Julio de 2008, 12:17:53 »
- un ejemplo que este re-comprobado.
Usa el buscador del foro, hay decenas de ejemplos para el CCS solo por citar un ejemplo.

- Un compilador que funcione y no sea de pago o demo. Tiene que haberlo.
El SDCC es el único que se me ocurre como no pago, el resto tiene un demo limitado o bien son pagos.


He probado de todo, he revisado, y vuelta a revisar. Estoy a punto de mandarlo todo a la mierda.

Antes que nada, modera tus palabras en el foro!

Tirando todo a donde dices no solucionas nada, leyendo, buscando y releyendo y muuuuuuucha paciencia te llevarán a donde quieres estar.  En este mundo de lo embebido hay que tener mucha paciencia, te lo digo de antemano parq que no sientas frustrado.  Si no le tienes paciencia a estas cosas, tal vez sea mejor que te replantees si es realmente lo que buscas.


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #4 en: 01 de Julio de 2008, 18:32:30 »
Serenidad y paciencia mí querido caliman :D  si no tienes conocimientos previos de programación te recomiendo que utilices  pic Basic u otro compilador Basic para pic
El c no es precisamente muy fácil de entender  y comienza con ejemplos aun mas simples el clásico blink  enciende un led pausa  apaga un led pausa y vuelta a empezar
En el foro de Basic encontraras lo que necesitas.
Aunque te aclaro que por aquí solo vas a encontrar demos de los programas cualquier otro artilugio esta prohibido.
Paciencia a mí encender y apagar un led me llevo 3 semanas
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado marioquartz

  • PIC10
  • *
  • Mensajes: 22
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #5 en: 01 de Julio de 2008, 20:37:16 »
No funcionaba por un error en configurar el panel de leds de Pic Simulator. Tardaba un poco en encenderse pero funciona el codigo.

Ahora he estado mirando y el programa para el tupperbot es sencillo. Ya solo me falta comprobar el codigo, aunque no tiene nada raro.

Este es:
Código: [Seleccionar]
#include <16F84A.h>
#FUSES NOWDT      //No Watch Dog Timer
#FUSES XT      //para cristal de 4MHz 
#FUSES PUT     //power up timer habilitado
#FUSES NOPROTECT//lectura habilitada del codigo del pic
#use delay(clock=4000000)
#use fast_io(a)
void main()//bucle principal del programa
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   //configuracion del timer0, trabaja con frecuencia del micro
   //no usa prescaler.
 
   set_tris_a(0xff);
   set_tris_b(0x00);
   
   output_b(0x00);
   //limpiamos los pines del puerto B
   
   output_high(PIN_B4); //traccion trasera
   ouptut_high(PIN_B6); //Led, indica que esta en movimiento.
 
   while(1) //bucle inifinito
   {
   if(input(PIN_A0 && input(PIN_A1) ) { // Impacto frontal, las dos antenas dan 1.
   output_low(PIN_B4); //Paramos
   output_low(PIN_B6); // Apagamos led, no hay movimiento.
   }
   
   if( input(PIN_A0) ) { // si hay un 1 en una antena
   //giramos a la izquierda
   output_high(PIN_B5); // led
   //para ello necesitare dar pulsos al motor pap.
   // los pulsos son con output_high(PIN_BX); siendo X entre 0 y 3
   // B0 y B1 es un lado y B2 y B3 es otro.
   //una vez girado apagar el led.
   output_low(PIN_B5);
   }
   if( input(PIN_A1) ) { // si hay un 1 en la otra antena
   //giramos a la derecha
   output_high(PIN_B7); //led
   //pulsos correspondientes
   output_low(PIN_B7); //una vez girado apagar el led
   }
   }
   }
}

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #6 en: 02 de Julio de 2008, 08:28:10 »
No funcionaba por un error en configurar el panel de leds de Pic Simulator. Tardaba un poco en encenderse pero funciona el codigo.

Me alegro mucho, luego cuéntanos cómo te ha ido!
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #7 en: 02 de Julio de 2008, 17:23:55 »
Felicitaciones Mario, enhorabuena!  :-/
A que adivino cómo lo solucionaste... la fórmula del gran Manunix: PACIENCIA.  :D
Siempre funciona!  :lol: Después de mucho luchas, uno pacientemente analiza todo hasta que logra dar con el problema y solucionarlo.
Y ahí viene el suspiro y ese pensamiento de satisfacción: "lo he logrado, soy un genio"  :D
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado marioquartz

  • PIC10
  • *
  • Mensajes: 22
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #8 en: 03 de Julio de 2008, 04:57:42 »
El segundo codigo no lo he probado todavía, antes necesitare saber mas de como funcionan los motores pap. ¿Para los pulsos como lo hago?

Opción 1:
output_high(PIN_BX);
delay_ms(Y);
output_low(PIN_BX);

Opción 2: alguna función especial?

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Desesperación absoluta. ni con lo basico acierto
« Respuesta #9 en: 03 de Julio de 2008, 07:49:11 »
La opción 1 no es muy óptima, porque no te permite hacer otra cosa con el micro mientras estás en la pausa...
Yo siempre uso para esos casos de pulsos que controlan algo, interrupciones al CPU por algún timer del micro.
Ese micro que estás usando por ejemplo, posee interrupción por timer 0. Para tener ejemplos de cómo manejar el timer puedes leer el manual de CCS y usar el buscador del foro.
Básicamente lo que tienes que hacer es configurar el timer0 (precarga, pre-escalador,etc) dentro del main y luego colocar antes de la rutina que atenderá la interrupción el comando: #INT_RTCC
Pues y eso es todo!  :lol:
Es una nota trabajar usando interrupciones, y verás que no es tan difícil. Con C todo se hace más fácil.
Ok saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web