Autor Tema: Dudas write_program_memory  (Leído 1802 veces)

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

Desconectado martino84

  • PIC10
  • *
  • Mensajes: 32
Dudas write_program_memory
« en: 28 de Junio de 2011, 10:22:22 »
No entiendo los parametro que hay que utilizar para estas instrucciones, de la ayuda de ccs saque lo siguiente

Syntax:
 write_program_memory( address, dataptr, count );

Parameters:
 address is 16 bits on PCM parts and 32 bits on PCH parts .

dataptr is a pointer to one or more bytes

count is a 8 bit integer on PIC16 and 16-bit for PIC18
 

Examples:
 for(i=0x1000;i<=0x1fff;i++) {

   value=read_adc();   

   write_program_memory(i, value, 2);

   delay_ms(1000);

}
 
En el foro lei esto pero tampoco llego a entender

Bueno, la solucion era muy sencilla pero ya que lo saque lo quiero compartir, quizas pueda ayudar a alguien mas que se esté iniciando como yo, aca vá:

log dir_w=0x1000;
long dat1=1234;
long dat2=5678;
long da1;
long da2;

void main(){
.
write_program_memory(dir_w, &dat1, 2);   //la solucion fue utilizar & para señalar la direccion del dato
delay_ms(1000);
write_program_memory(dir_w+2, &dat2, 2);
delay_ms(1000);
.
.
read_program_memory(dir_w, &da1, 2);
delay_ms(1000);
read_program_memory(dir_w+2, &da2, 2);
delay_ms(1000);
.
printf(lcd_putc,"\fDATO1: %Lu \nDATO2: %Lu",da1,da2);   //si coloco %Lx en lugar de Lu visualizo el dato en hexa
.
}

espero les sirva.

Otra cosa que me gustaría saber es como afecta el tiempo que coloco en el delay, yo estoy utilizando 1000ms pero estaría bueno poder bajarlo, alguien podría decirme algo sobre esto?

Saludos


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dudas write_program_memory
« Respuesta #1 en: 28 de Junio de 2011, 10:34:13 »
address: Direccion en la memoria.
dataptr: Puntero a los datos
count : Cantidad de bytes...


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado martino84

  • PIC10
  • *
  • Mensajes: 32
Re: Dudas write_program_memory
« Respuesta #2 en: 28 de Junio de 2011, 11:10:12 »
que estoy haciendo mal, no se modifica nada cuando corro este programa

#include <16f877a.h>
#fuses NOWDT,NOPROTECT
#use delay(clock=4000000)
#include <lcd.c>

long i;
long value=0x00;

void main(){

for(i=0x1000;i<=0x1fff;i++) {

   write_program_memory(i, value, 1);

   delay_ms(100);
}

}
« Última modificación: 28 de Junio de 2011, 11:13:54 por martino84 »