Basics/es

From Pinguino
Jump to: navigation, search
Language: English  • español • magyar • русский


Bootloader

El bootloader es un pequeño programa ejecutandose dentro del micro-controlador de Pinguino (PIC18F o PIC32MX) que permite transferir el programa compilados del usuario, desde el ordenador, a la memoria de programa del micro-controlador, y dar el control a dicho programa una vez esta gravado correctamente.

En las placas comerciales, el bootloader siempre esta pre-instalado.

Si te has fabricado tu propia placa, entonces es necesario que programes el micro-controlador (una vez solo), usando un programador para PICs (Pickit 2/3, etc...) que soporte el micro-controlador que estés usando.

Sobre los Pinguinos de 8 bits

Actualmente hay cuatro bootloader disponibles, pero realmente solo hay dos soportados por el IDE (disponibles aquí):

  • Versión 1 que puede ser usado solo en los Pinguinos basados en el 18F2550 (7K aprox).
  • Versión 2 que puede ser usado tanto en el 18F2550 y en el 18F4550 (7K aprox).
  • Versión 3 basado en el bootloader de Diolan y escrito en ASM (1.5K aprox). Por desgracia, no funciona correctamente con SDCC ya que no es capaz de usar el juego de Instrucciones Extendido de los PIC18F. Sin embargo funciona perfectamente con el MPLAB X.
  • Versión 4 esta escrito con SDCC (>3.0.0), ocupan menos de 3K y esta disponible para los PIC18F 1xK50 (sin probar), x455, x550, x6J50, x6j53 y x7j53, con Oscilador Interno o Cristal Externo, tanto con USB en modo lento (no soportado por el IDE de Pinguino) o el modo de alta velocidad.

Si usas la versión 1, tienes que incluir el pulsador de RUN en el diseño, ya que lo requiere para entrar en modo bootloader.

Con las versiones 2, 3 y 4 el pulsador es innecesario, ya que el bootloader cederá el control al programa de usuario pasada 5 segundos (10 segundos con la versión 3) después de encender la placa o resetearla.

Sobre los Pinguinos de 32-bits

Todos los bootloaders de 32-bit se pueden encontrar aquí.

Cargando tu programa

Para emperezar, inicia el IDE de Pinguino.

Escribe o Abre tu programa y compilalo.

En un Pinguino de 8-bits

Dependiendo de la versión del bootloader...

Version 1 (ver arriba) del bootloader:

Presiona el pulsador de RESET en la placa. El LED de RUN deberia de permanecer oscuro. Si se enciende, probablemente habras cortocicuitado el boton con un jumper.

Haz Click en el botón, del IDE, de Upload y espera a que VascoBootloader aparezca. Haz Click en el botón de 'write' de VascoBootLooader.

Deberias de obtener un mensaje indicando que ha encontrado un PIC, seguido por "XXX.hex uploaded", siendo XXX el nombre de tu programa.

Ahora presiona el boton de RUN para iniciar tu programa.


Version 2 (ver arriba) es un poco más complicado.

Primero presiona el botón de RESET en el Pinguino. Espera tres segundos y haz click en el botón de Upload del IDE. El led debería estar encendido todo el tiempo.

Deberías de obtener un mensaje indicando que ha encontrado un Pinguino, seguido por "XXX.hex uploaded", siendo XXX el nombre de tu programa.

Si aparece 'Pinguino not found !!', entonces no has esperado lo suficiente, haz click otra vez en 'write'.

Si aparece 'Pinguino found' pero nada más, entonces has esperado demasido. Debes de resetear otra vez el Pinguino y esperar 3 segundos e intentarlo de nuevo.


Version 3 en adelante (ver arriba), es más simple.

Primero, reinicia el Pinguino presionando el botón de RESETen la placa. El LED de RUN se iluminara. Ahora tienes 5 segundos para cargar tu programa al Pinguino.

Segundo, haz click en el botón de Upload en el IDE de Pinguino. Si el proceso es correcto, entonces se iniciara el programa de usuario automáticamente.

Deberías de obtener un mensaje tal que asi:

Pinguino found ...

- with PIC18f26j50 (id=0x4c40)

- with USB bootloader v4.x

Writing User Application ...

xxxxxxx.hex successfully uploaded

Starting Application ...

Si obtienes esto :

Pinguino not found.

Is your device connected and/or in bootloader mode ?

Quizás no has conectado la placa al ordenador, o has esperado demasiado después de reiniciar. Inténtalo de nuevo desde el principio. También puede ocurrir que si usas Windows 8, se haya negado a cargar el driver de Pinguino por no estar firmado.

En un Pinguino de 32-bits

Antes de hace que la IDE de Pinguino cargue tu programa la placa, necesitaras conectar la placa y ponerla en el modo bootloader:

   Mantén presionado el botón de usuario BUT
   Presiona y suelta el botón RST (Reset)
   Suelta el botón de usuario BUT

Ahora deberías de ver a los dos LEDs de la placa (amarillo y verde) parpadear de forma alternada. Ahora tu placa Pinguino esta preparada para recibir tu programa de usuario.

Una vez que la carga ha sido completada, los dos LEDs dejaran de parpadear, y el programa de usuario empezara automáticamente.

Para salir del modo bootloader sin cargar un nuevo programa, presiona y suelta el botón de RST (Reset). Los dos LEDs dejaran de parpadear y el programa previo, volverá a ejecutarse.

Hola Mundo

Step 1

  • Windows

Prepare la conexión con el dispositivo Pinguino instalando el controlador desde: http://linux.gatewaybbs.com.au/~zapper/EFIlive/USB%20Cable%20driver/

Usted tendrá una conexión COMx al conectar el cable USB al ordenador.

  • Linux

No hacer nada.

Step 2: Escribe lo siguiente en el Pinguino IDE

 void setup()
 {
   // put your setup code here, to run once:
 }

 void loop()
 {
   // put your main code here, to run repeatedly: 
   CDC.println("\n\r Hello World!!!");
 }

Step 3: Compilar y cargar el código (see above)

Step 4: Selecciona Menú->Pinguino->Modo De Depuración->USB CDC Y en la sección inferior del puerto x en la que está conectado el dispositivo hay que ir alli:

Hello World!!!

Alternativa:

  • Windows

También puede utilizar otro terminal o consola como masilla para ver el resultado. Los ajustes son:

    • Port: it depents. Normalmente será COM7. Usted puede adivinar o puede comprobarlo. En Windows se puede hacer esto haciendo clic derecho sobre "my computer" -> manage -> device manager -> ports -> there should be a "communications port (COMx)". La x es el número de su puerto COM. Si no hay ninguno, pero usted tiene un signo de interrogación amarillo en el administrador de dispositivos, es posible que tenga que instalar el controlador de CDC. primero descarga: http://ww1.microchip.com/downloads/en/AppNotes/CDC_RS232_Emulation.EXE. Después de que ha instalado el paquete, vaya en el administrador de dispositivos para el signo de interrogación amarillo, haga clic derecho y elegir para manejar o instalar el controlador y seleccione la carpeta instalada. (standard: C:\MCHPFSUSB\fw\Cdc\inf\win2k_winxp).Esto instalará el controlador. Si no funciona, el signo de interrogación podría ser de otro dispositivo que necesita su atención. El conductor del enlace normalmente trabajará desde Windows 2000 hasta Windows 8 X64.
    • Speed (Baud): 115200
    • Data bits: 8
    • Stop bits: 1
    • Parity: None
    • Flow control: XON/XOFF
    • That's it
  • Linux

Puede utilizar un programa de emulación de terminal, como Minicom: sudo minicom -o -D /dev/ttyACM0

Escribiendo Programa

Init function

TODO

void setup()
{
        pinMode(0,OUTPUT);
}


Main function

TODO

void loop(void)
{
        digitalWrite(0,HIGH);
        delay(500);
        digitalWrite(1,HIGH);
        delay(500);
}

Interrupt function

TODO

void interrupt()
{
	// timer 1 interrupt flag in register PIR1
	if (PIR1bits.TMR1IF)
	{
		// reset interrupt flag
		PIR1bits.TMR1IF=0;
		// reverse state of pin 0 ( blink )
		digitalWrite(0,digitalRead(0)^1);
	}
}

Si una rutina de servicio de interrupción cambia las variables que se accede por otras funciones estas variables tienen que ser declarados volátil. ver [1] (From the Documentation).