Autor Tema: 18f452 no toma variables de la ram  (Leído 4229 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
18f452 no toma variables de la ram
« en: 21 de Julio de 2006, 10:43:16 »
Amigos : estoy trabajando con un 18f452 y para saber si anda tengo un led conectado al portd.3 para debug.

coloco la instruccion output_high delay....output_low delay.... y funciona

defino en el .h un bit llamado led de esta forma ( lo hice siempre con exito) #bit led = portd.3 ,  en el main coloco led = 1 ; delay....led = 0 ; delay....y ahi no lo toma...

se puede quemar la ram del pic?

#include <18F452.h>
#device adc=8
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20, NOPUT, NOSTVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=10000000)
#use rs232( baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=com1 )
#ZERO_RAM
#include "ini18fx.h"


#bit led = portd.3



void main(void)
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);

while ( true )
  {       
      led = 1 ; delay_ms ( 500 ) ;     //  asi no anda , con la instruccion ouptut bla bla bla   si
      led = 0 ; delay_ms ( 500 ) ;
  }

}

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
Re: 18f452 no toma variables de la ram
« Respuesta #1 en: 21 de Julio de 2006, 13:00:15 »
hola, creo q tienes agun problema con la definicion de la direccion del "portd"
cual es la definicion del la direccion del portd q tienes puesta?

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: 18f452 no toma variables de la ram
« Respuesta #2 en: 21 de Julio de 2006, 13:12:05 »
Prueba poniéndole la dirección del PORTD directamente con:

#bit led = 0xF83.3

a mi en el 18F4550 me funciona así de lujo.  :mrgreen:


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: 18f452 no toma variables de la ram
« Respuesta #3 en: 21 de Julio de 2006, 13:19:48 »
Prueba poniéndole la dirección del PORTD directamente con:

#bit led = 0xF83.3

a mi en el 18F4550 me funciona así de lujo.  :mrgreen:


Diego, creo que es perfecta la forma de hacerlo, no solo para el 18F4550 sino para cualquier 18F.

Sin usar el CCS opino que debiera funcionar sin problemas, ya que los registros SFR (Special Function Registers) están en la access ram de estos pics, con lo cual se acceden de cualquier lugar de la memoria de programa :)

Tendría que ser muy malo el CCS para no permitirlo, no creo que se les haya pasado por alto esto, mucho menos con los 18F452.  :) :)

y si hay algún inconveniente, tiraría el listado del assembler generado y vería si realmente usa la instrucción con el parámetro indicando access ram o el uso de los registros bsr.

- 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 fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: 18f452 no toma variables de la ram
« Respuesta #4 en: 21 de Julio de 2006, 13:34:45 »
Amigos : la direccion que puse es la que reza redpic , pero lamentablemente no anda, por eso pensaba en algun desperfecto de la ram del pic.

incluso utilizo un archivo ini18fx.h que trae todos los datos pero no anduvo :shock:

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: 18f452 no toma variables de la ram
« Respuesta #5 en: 21 de Julio de 2006, 13:36:48 »
fastyx, voy a darme una vuelta por el datasheet del micro .... porque en algunos casos me he encontrado sorpresas con ciertos pines .... ahora vengo.

Edito: ¿Con output_high(PIN_D3) y output_low(PIN_D3) si te funciona?
« Última modificación: 21 de Julio de 2006, 13:44:22 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: 18f452 no toma variables de la ram
« Respuesta #6 en: 21 de Julio de 2006, 13:41:36 »
si les sirve para ayudarme esto es lo que tiro en asembler en la partec del programa del while true para poner el led en 1

.................... while ( true )
....................   {
....................       led = 1 ;
006E:  BSF    F83.3
....................
....................   }
0070:  BRA    006E
....................
.................... }
....................
0072:  SLEEP

me parece que esta invocando correctamente la direccion del puerto d en 006E verdad?

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: 18f452 no toma variables de la ram
« Respuesta #7 en: 21 de Julio de 2006, 13:43:30 »
si redpic con  output low y high prende , y nosolamente sobre el portd.3 sino que tambien sobre rc.0( otro led)., y este ultimo tampoco responde al as maniobras sobre la ram

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: 18f452 no toma variables de la ram
« Respuesta #8 en: 21 de Julio de 2006, 13:44:37 »
Leo en el Datasheet que Note: On a Power-on Reset, these pins are configured as digital inputs. asi que ¿ por que no pruebas a un magnifico set_tris_d(0b0000000) antes del while ... ?

Porque CCS pone automaticamente los TRISX si no se ha declarado antes que #use FAST_IO, pero si estas jugando con la memoria "a pelo" los TRISX los debes poner tú.


Edito: PORTC tiene la misma Note: On a Power-on Reset, these pins are configured as digital inputs. Tras el reset ambos se configuran como entradas. A mi me paso una cosa similar con el PORTE que al reset se configuraba como entrada analógica ...
« Última modificación: 21 de Julio de 2006, 13:48:41 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: 18f452 no toma variables de la ram
« Respuesta #9 en: 21 de Julio de 2006, 13:50:54 »
redpic , en realidad el programa que postee es una simplificacion del que estoy usando para hacerlo corto, pero te comento que en el original esta el seteo de los tris
y la inicializacion de los puertos tambien.

te comento que ahora el puñetero pic no esta siendo reconocido por el winpic800, por lo que estoy atrascado :x

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: 18f452 no toma variables de la ram
« Respuesta #10 en: 21 de Julio de 2006, 13:57:46 »
este es el pedazo de codigo del original:

   porta = 0b00000000 ;  trisa= 0b00001111 ;
   portb = 0b00000000 ;  trisb= 0b00000000 ;
   portc = 0b00000000 ;  trisc= 0b10010000 ;
   portd = 0b00000000 ;  trisd= 0b00000000 ;
while ( true )

  {

    output_high( pin_d3 ) ; delay_ms ( 50 ) ;
    output_low ( pin_d3 ) ; delay_ms ( 50 ) ;
    output_high( pin_c5 ) ; delay_ms ( 50 ) ;
    output_low ( pin_c5 ) ; delay_ms ( 50 ) ;
    set_pwm1_duty ( 50 ) ;
    set_pwm2_duty ( 50 ) ;
    printf ( "Hola\r\n" ) ;delay_ms ( 50 ) ;

  }
}

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
Re: 18f452 no toma variables de la ram
« Respuesta #11 en: 21 de Julio de 2006, 14:38:13 »
Hola fastyx,  fijate del mismo lugar de donde sacaste esto q esta ams abajo y ponlo todo completo el ASM
aqui se ve q prende el pin y salta a la misma direccion quedando en un Loop,


.................... while ( true )
....................   {
....................       led = 1 ;
006E:  BSF    F83.3
....................
....................   }
0070:  BRA    006E
....................
.................... }
....................
0072:  SLEEP

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: 18f452 no toma variables de la ram
« Respuesta #12 en: 21 de Julio de 2006, 14:50:06 »
redpic , en realidad el programa que postee es una simplificacion del que estoy usando para hacerlo corto, pero te comento que en el original esta el seteo de los tris
y la inicializacion de los puertos tambien.

te comento que ahora el puñetero pic no esta siendo reconocido por el winpic800, por lo que estoy atrascado :x

Como consejo, no hagas esto de subir solo una parte del código cuando tienes un problema de esta índole.

A lo sumo sube el .c en un archivo .zip

El punto es que tu 'asumes' que sabes por donde está el problema pero tal vez alguien con la experiencia de Diego, te pueda indicar que en realidad está en otro lado leyendo todo el código.

Ahora bien, si la duda es con una subrutina, es otro tema, pero como tu duda es sobre la ram y sobre el uso de un puerto en específico.. hay que ver sobre todo la parte de la configuración.


Es solo un consejo.  :)

- 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 jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: 18f452 no toma variables de la ram
« Respuesta #13 en: 21 de Julio de 2006, 16:12:11 »
Mira en el fichero ".lst" lo que te genera en ASM la instrucción "output_high" y podras ver por donde van los tiros.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: 18f452 no toma variables de la ram
« Respuesta #14 en: 21 de Julio de 2006, 16:17:27 »
Por cierto en la salida no pudes utilizar "portd" => 0xF83 sino "latd" => 0xF8C. Extraido del DataSheet:

The Data Latch register (LATE) is also memory
mapped
. Read-modify-write operations on the LATE
register reads and writes the latched output value for
PORTE.

Un saludo.
« Última modificación: 21 de Julio de 2006, 16:25:09 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything