Autor Tema: Nuestro Libro diario con el PIC18F97J60 (Ethernet)  (Leído 321639 veces)

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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #300 en: 29 de Octubre de 2008, 18:27:50 »
Mas claro que el agua. Gracias amigo Navaismo por la gran explicación. No podría agregar nada.

Pues, depende que agua, porque si te fijas en el riachuelo (Bs. As.)  :D :? :8}
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #301 en: 29 de Octubre de 2008, 19:08:43 »
Mas claro que el agua. Gracias amigo Navaismo por la gran explicación. No podría agregar nada.

Pues, depende que agua, porque si te fijas en el riachuelo (Bs. As.)  :D :? :8}

No entendi. ¿Que tratas de decirnos?
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #302 en: 29 de Octubre de 2008, 19:13:58 »
Perdón. Fue un chiste.

El riachuelo, es un Rio que corre por Cápital Federal (Buenos Aires). Este río, está altamente contaminado, y por ende no es muy clara que digamos.

De todas maneras, tu explicación fue muy buena.

Edito: Exelente, fue la explicación

Mandé el mensaje antes de lo previsto y no medi cuenta.
« Última modificación: 29 de Octubre de 2008, 20:31:54 por Leon Pic »
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Maco1717

  • PIC10
  • *
  • Mensajes: 3
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #303 en: 29 de Octubre de 2008, 20:11:03 »
Joer que rapida respuesta...
jeje muchas gracias por la explicacion, no, no me habia dado cuenta que es la misma bobina que tengo yo, jeje... creia que era un aparte, de todas formas no habia leido esa parte todavia asi que gracias por la explicacion...
acerca de la conexcion con la memoria SD atraves de SPI???
alguna documentacion o algo estaria bien.
gracias

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #304 en: 31 de Octubre de 2008, 21:24:32 »
Sobre la SD, en los primeros post esta el diagrama de como conectarlo y otro ejemplo que al menos yo no he probado es el de mikroelectronika esta imagen:




"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Maco1717

  • PIC10
  • *
  • Mensajes: 3
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #305 en: 31 de Octubre de 2008, 21:33:30 »
Muchas gracias y perdon por reptir la pregunta es que es un hilo tan largo que es difil seguirlo
gracias

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #306 en: 31 de Octubre de 2008, 21:35:23 »
Si, Navaismo, una variante de ese montaje es el que yo he montado y va de lujo.





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

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #307 en: 28 de Noviembre de 2008, 21:53:31 »
Hola, como estan todos, hace poco encontre este post, y e estado leyendo todo lo que han publicado y los avances tanto de PICMOUSE como de todos los demas, me interesa mucho el tema de la programacion de micros y pues me quedan algunas dudas con todo lo que e leido, que agardeceria a quien me pueda ayudar,

1).  Viendo la placa diseñada y construida por PICMOUSE, me quedo  :o :shock:,,, jajaja, he notado que muchos tienen la misma expresion al ver dicha placa, y no me queda mas que seguir preguntando... La mandaste a hacer?? Donde?? porque tanto el diseño como la construccion son perfectas...

2). Tratandose de un PIC de soldadura superficial, alguien puede explicarme como lo soldan? porque me imagino que resultara complido...

y no me queda mas que felicitarlos, y decirles que estare pendiente de sus avances y lo mas importante de la programacion del PIC en CCS, me interesa mucho, no solo conocer el funcionamiento por ethernet, porque por ahora esta mas aya de mis conocimientos, pero si aprender mas y mas junto con ustedes.

Hasta luego
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado afelipeg

  • PIC10
  • *
  • Mensajes: 1
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #308 en: 29 de Noviembre de 2008, 12:03:01 »
Buenos Dias Amigos tengo una pregunta:
 PicMouse donde consiguiste el PIC con el MAC y PHY ethernet en colombia? y cuanto cobras por hacer la placa al menos 10? y si se puede programar directamente con assembler de microchip usando el mpaswin?


Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #309 en: 30 de Noviembre de 2008, 19:32:48 »
Bueno, decido avanzar un poco en el proyecto, y decido entender mas el formato FAT y la libreria FAT,c de CCS.
Si queremos lograr un servidor WEB, me parece interesante poder leer y generar archivos en la memoria SD con el formato FAT.

Primero, hay que tener andando la memoria SD. Para esto, ya nuestros amigos Navaismo y Redpic ya nos dieron un esquema claro con diferentes PICs y todos de forma totalmente entendibles.


Este es nuestro primer código para ver como la SD es correctamente inicializada por el PIC y este lee las primeras posiciones.

Código: [Seleccionar]
#include "main.h"
  #ZERO_RAM
#Include "mmcsd.c"
#Include "fat.c"


void DisplayDirectory(char *dir){
   disp_folder_contents(dir);
}




void main(){
   set_tris_a(0b00000010);
   set_tris_b(0b00000001);
   set_tris_c(0b00000000);
   set_tris_d(0b00000000);
   set_tris_e(0b00000000);
   
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   // TODO: USER CODE!!
   
   printf("\r\nTest Memoria SD FAT- PICmouse\r\n");
   Respuesta_SD=fat_init();//mmcsd_init();
   printf("Resultado de inicializacion de memoria SD=");
   if(Respuesta_SD==0)printf("OK\r\n");
      else {
         printf("ERROR\r\n");
         while(1);
      }
     
   
   puntero_SD=0x0000;
   capacidad_buffer=512;
   Respuesta_SD=mmcsd_read_block(puntero_SD, capacidad_buffer, buffer_SD);
   
      if(Respuesta_SD!=0){
      printf("Error es imposible leer la memoria SD");
      while(1);
      }
     
      else{
      printf ("\r\n\r\n\r\n"); 
      printf ("LECTURA DE MEMORIA SD  Direccion Inicial=%LX  posiciones leidas = %lu                  \r\n\r\n",puntero_SD,capacidad_buffer);
      printf ("   DIR     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F      VAL ASCII   \r\n");
      printf ("----:----  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  ----------------\r\n");
      printf ("0000:%LX  ",puntero_SD);
           
      j=0;
      l=0;
         for(i=0;i<capacidad_buffer;i++){
         printf("%2X ",buffer_SD[i]);
         j++;
         l++;
            if (j== 16){
               printf("  ");
               for (k=l-16;k<l;k++) printf("%C",buffer_SD[k]);
            printf("\r\n");
            puntero_SD=puntero_SD+16;
            if(i<(capacidad_buffer-1)) printf("0000:%LX  ",puntero_SD);
            j=0;
            }
         }
      printf("Fin de lectura de bloque de 512 bytes\r\n\r\n"); 
      //--------------------------------------------------
      while(1);
     
     
      }       
while(1);
}

En el Puerto serial veremos lo siguiente:




Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #310 en: 30 de Noviembre de 2008, 22:19:46 »
En el siguiente ejercicio, ya podemos:

crear y borrar archivos .txt
crear y borrar carpetas
ingresar y salir por los directorios

Todo es en base a la libreria de CCS y el ejemplo de FAT que este trae.

Código: [Seleccionar]
#include "main.h"
#include <stdlib.h>
#Include "mmcsd.c"
#Include "fat.c"
#Include "comandos_fat.h"




void main(){
   char buffer[255];
   char opt_buffer[255];
   char *cmd, *option1, *option2;

   set_tris_a(0b00000010);
   set_tris_b(0b00000001);
   set_tris_c(0b00000000);
   set_tris_d(0b00000000);
   set_tris_e(0b00000000);
   
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   // TODO: USER CODE!!
   
   printf("\r\nTest Memoria SD FAT- PICmouse\r\n");
   Respuesta_SD=fat_init();//mmcsd_init();
   printf("Resultado de inicializacion de memoria SD=");
   if(Respuesta_SD==0)printf("OK\r\n");
      else {
         printf("ERROR\r\n");
         while(1);
      }
     
   
   puntero_SD=0x0000;
   capacidad_buffer=512;
   //Respuesta_SD=mmcsd_read_block(puntero_SD, capacidad_buffer, buffer_SD);
   Respuesta_SD=0;
   
   
      if(Respuesta_SD!=0){
      printf("Error es imposible leer la memoria SD");
      while(1);
      }
     
      else{
      printf ("\r\n\r\n\r\n"); 
      /*
      printf ("LECTURA DE MEMORIA SD  Direccion Inicial=%LX  posiciones leidas = %lu                  \r\n\r\n",puntero_SD,capacidad_buffer);
      printf ("   DIR     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F      VAL ASCII   \r\n");
      printf ("----:----  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  ----------------\r\n");
      printf ("0000:%LX  ",puntero_SD);
           
      j=0;
      l=0;
         for(i=0;i<capacidad_buffer;i++){
         printf("%2X ",buffer_SD[i]);
         j++;
         l++;
            if (j== 16){
               printf("  ");
               for (k=l-16;k<l;k++) printf("%C",buffer_SD[k]);
            printf("\r\n");
            puntero_SD=puntero_SD+16;
            if(i<(capacidad_buffer-1)) printf("0000:%LX  ",puntero_SD);
            j=0;
            }
         }
      printf("Fin de lectura de bloque de 512 bytes\r\n\r\n");  */
      //--------------------------------------------------
   while(TRUE)
   {
      i = 0;
     
      DisplayPrompt();
     
      do
      {
         buffer[i] = getch();
         
         // check for a backspace
         if(buffer[i] != 8)
         {
            printf("%c", buffer[i]);
            i++;
         }
         else if(i > 0)
         {
            // delete the last character
            i--;
            putc(8);
            putc(' ');
            putc(8);
         }
         buffer[i] = '\0';
      } while(buffer[i - 1] != '\r');
     
     
// parse the command and options
      cmd = GetCMD(buffer);
      option1 = GetOption(cmd + strlen(cmd) + 1);
      option2 = GetOption(option1 + strlen(option1) + 1);

      //if option1 starts with a '/', that means the file in the option includes
      //the full path to the file.  if the file doesn't start with a '/', the
      //current working directory must be added.
      if (option1 && (option1[0]=='/'))
      {
         //option1 is a full path
         strcpy(opt_buffer, option1);
      }
      else if (option1)
      {
         // tack on the current working directory to option1
         strcpy(opt_buffer, g_CWD);
         strcat(opt_buffer, option1);
      }         
     
      if (cmd)
      {
         switch(FindCommand(cmd))
         {
            case 0:  //del
               DeleteFile(opt_buffer);
               break;
           
            case 1:  //make
               MakeFile(opt_buffer);
               break;
           
            case 2:  //append
               AppendFile(opt_buffer, option2);
               break;
           
            case 3:  //change directory
               ChangeDirectory(opt_buffer);
               break;
           
            case 4:  //show directory contents
               DisplayDirectory(g_CWD);
               break;
               
            case 5:  //cat, display file
               PrintFile(opt_buffer, CAT_FROM_START);
               break;
           
            case 6:  //tail, display last 80 charachters
               PrintFile(opt_buffer, CAT_FROM_END);
               break;
           
            case 7: //mkdir, make a directory
               MakeDirectory(opt_buffer);
               break;

            case 8: //rmdir, make a directory
               RemoveDirectory(opt_buffer);
               break;

            case 9: //format, format the card
               FormatMedia(option1);
               break;

            case 10: //help, display help
               ShowHelp();
               break;

            default:
               printf("\r\nUnkown Command '%s'", cmd);
               break;
         }     
      }     
   }   
      }       
while(1);
}

Estoy haciendo un video para que vean como va esto.  :P


http://rapidshare.com/files/169064068/SD_FAT.swf.html

Ahora bien:

Creamos archivos con el PIC,  al tabajar en FAT esperaria que al meter la SD al PC este me reconozca los mismos archivos y directorios creados. Pasa que no.  :?

Entonces: El PIC supuestamente trabaja en FAT32, así que intente revisar lo que escribe el PIC en el sector de arranque de la SD y luego formatear de las formas posibles en el PC y buscar diferencias. El resultado:


Esta resaltado en rojo lo que es diferente.

Pero si buscamos en que significa cada posición, sabemos que corresponde a: 42h   Dynamic disk volume

ID   Descripción
01h   Partición primaria FAT12 o volumen lógico (volumen de menos de 32,680 sectores)
04h   Partición primaria FAT16 o volumen lógico (32,680–65,535 sectores o 16 MB–33 MB)
05h   Partición DOS Extendida
06h   Partición FAT16 BIGDOS o volumen lógico (33 MB–4 GB)
07h   Partición NTFS o volumen lógico ("Installable File System")
0Bh   Partición FAT32 o volumen lógico (hasta 2048 GB)
0Ch   Partición FAT32 o volumen lógico usando extensiones de la INT 13h BIOS
0Eh   Partición FAT16 BIGDOS o volumen lógico usando extensiones de la INT 13h BIOS
0Fh   Partición DOS extendida usando extensiones de la INT 13h BIOS
12h   Partición EISA
42h   Dynamic disk volume
86h   Legacy FT FAT16 disk
87h   Legacy FT NTFS disk
8Bh   Legacy FT volume formateado con FAT32
8Ch   Legacy FT formateado con FAT32 usando extensiones de la INT 13h BIOS

« Última modificación: 01 de Diciembre de 2008, 02:27:06 por PICmouse »

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #311 en: 01 de Diciembre de 2008, 20:10:26 »
 :?

Como cosa rara CCS y sus BUGs, hasta en las librerias.

//// format(int32 mediaSize)                                         ////
////  Formats the media into a FAT32 or FAT16 file system.           ////
////  If you specify a mediaSize larger than the actual media bad    ////
////  things will happen.  If you specify a mediaSize smaller than   ////
////  the actual media size will simply limit the filesystem from    ////
////  using 0 to mediaSize-1.  Anything after mediaSize can be used  ////
////  by the application (perhaps as a general purpose EEPROM?)      ////
////  NOTE: Windows thinks the filesystem is RAW.                    ////
////  NOTE: This may be a little buggy.                              ////

Ahora bien, cual es ese sistema RAW?? Busco en internet y encuentro algo de formato para imágenes.  Windows entonces no me puede ver los archivos de texto creados con el PIC??


Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #313 en: 02 de Diciembre de 2008, 22:12:15 »
Gracias Amigo Nocturno!..

Llevo todo el día buscando como carajos le hago para que el PC logre entender los archivos de texto creados con el PIC en la SD y nada de nada.  Edito la libreria FAT de CCS y deja de trabajar completamente. (Es que no logro entender la librería).

Voy a leer detenidamente la pagina que me das Manolo.  Existe alguna aplicación para windows que permita convertir RAW a FAT de PC?

Saludos!



Citar
It's simply a disk partition that has not been formatted with an NT file system, neither FAT nor NTFS.



Citar
Tenga en cuenta Un volumen RAW es un volumen que nunca ha sido formateado y que no contiene un sistema de archivos. Ejemplos de sistemas de archivos son FAT, FAT32 y NTFS. Normalmente, programas que requieren un sistema de archivos no escriben en un volumen RAW. Estos programas realizan operaciones de E/s directas en el volumen RAW.


Entonces.. :? Tengo que andar con windows 98 pa que funcione...



Encontre otra aplicacion!

Stellar Phoenix Raw File Recovery

« Última modificación: 02 de Diciembre de 2008, 22:36:36 por PICmouse »

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #314 en: 26 de Enero de 2009, 16:25:20 »
hola, con respecto al desarrollo que haz realizado con el PIC18F97J60, necesitaria que me ayudes debido a que requiero hacer que el mismo sistema con un microcontrolador 18f97j60 que a su vez tiene una comunicacion SPI con una memoria externa de 256 entonces lo que busco hacer es que el microcontrolador funcione como un servidor web, con el fin de que dependiendo el nivel de usuario valide la entrada para cada tipo de usuario. Esto se me ha presentado a partir de que tengo que hacer un pequeño sistema que pueda ser comandado a distancia pero sin la necesidad de una pc y con esto quedaria 100% resuelto entonces como te explicaba, requiero hacer un servidor web por medio de este microcontrolador y dicho trabajo lo tengo medianamente encaminado pero quisiera tu opinion para el desarrollo de la base de datos es decir, como programarias tu el server para que lea la informacion y cuando alguien se valide pueda identificarlo y registrarlo en un historial, a partir que fue validado el usuario pueda hacer distintas acciones por ejemplo comprar algo seleccionando el producto y luego dandole la orden de que envie el pedido y el server registra el pedido y guarda un historial de que se ha vendido. Entonces en pocas palabras podria dejarte los siguientes datos para saber como programarias el sistema para que resuelva los siguientes problemas:

*Almacene bases de datos variables sobre productos
*Bases de datos variable de clientes
*Base de datos fija de niveles de usuario y permisos concedidos para su trabajo en el servidor
*Registro de usuarios que ingresaron
*Registro de pedidos

basicamente esos ya que lo demas que haria el sistema es insignificante en este momento.

desde ya muchas gracias.

Saludos!

CsDFiV


 

anything