This section contains all legacy tutorials written by the Group ADT(Advanced Digital Technologies)of the Pontificia Bolivarian University, Bucaramanga, Colombia. Some of these tutorials are from 2011. However, they could be still useful for the community.
The manuals contain information about legacy boards and tools such as:
Video tutorial de introducción al software ISE de Xilinx -crear un proyecto -crear un módulo -Crear un archivo UCF -Síntesis, Implementación Para la Spartan 3A starter kit
Clase 5 b Estructuras Secuenciales, Contadores View
Los objetivos de esta clase son:Repasar los pasos para programar una FPGA, (Sintetizar, Implemetar y Generar).Conocer Como se puede describir hardware secuencial para diseñar un contador de 32 bits ascendente y descendente y describir el hardware por medio del lenguaje Verilog.
Memoria ROM Contiene en Notas Musicales estilo MIDI la canción Dragon Ball GT.Si usted hizo la Practica Clase 5 c puede utilizar este modulo para hacer un reproductor de la canción.
Ejercicios que ayudaran a repasar conceptos adquiridos a lo largo del curso básico y servirán para auto-evaluar las habilidades que se tienen en el lenguaje Verilog HDL
"Notice that video plays over the current screen displayed, leaving unwanted images behind.
To avoid this, do the following:
Create a file that contains this script (named e.g. "script.sh"):
#!/bin/bash
sudo /opt/vc/bin/tvservice -p > /dev/null
sudo xterm -e omxplayer -o hdmi $@ > /dev/null
sudo chvt 1
sudo fbset -depth 8
sudo fbset -depth 16
sudo chvt 7
#This script takes advantage of a bug in 'tvservice' that leaves a black screen over your current tty
#Once the screen is black, the video can be played over it.
#A command 'q' is inserted to exit the player or when the video finishes
#To recover from the 'tvservice' black screen there is a change to tty 1 and then back to tty 7 where X is displayed
#Command 'fbset' recovers previous depth values to prevent wrong resolution display.
Run the script with the video path as an argument:
sudo bash script.sh Iron_Man_3_Trailer_1080p.mp4
Video:
Edited by Jose P Pinilla & Holguer A Becerra
How to use GPIO on raspberry pi
How to use GPIOs on raspberry pi (Raspbian-Wheezy)
Taka a look at the GPIO header information of the raspberry pi, you can find it in the next links:
http://elinux.org/RPi_Low-level_peripherals
http://elinux.org/RPi_BCM2835_GPIOs
Note: The GPIO assignment for the raspberry pi is different between revision 1 and 2.
Do not use voltage levels greater than 3.3V, Raspberry pi doesn´t support 5V and doesn't have an over-voltage protection.
There are two different methods to write to or read from peripherals on embedded systems using Linux, the first one is creating a file-type access to the peripheral in the file system and the second is to write/read the base address of the memory allocated to the GPIO or module in the SoC usign pointers. This memory locations can be found in the datasheet for the BCM2835 in the case of the raspberry pi.
Let's start with the first method (File System):
*Before starting startx
Use SuperUser (After every reboot) or use sudo before any command
sudo su
Connect an LED using a resistor between GPIO11 and GND.
Creating a File access to GPIO using console commands:
If you write to the ./export file in the /sys/class/gpio/ subdirectory, the system creates a file with a GPIO structure according to the input. In this case we want to create an access to write directly to GPIO11 in order to handle an LED.
Create a GPIO file access:
echo 11 > /sys/class/gpio/export
Configure the Pin Direction (In/Out):
echo out > /sys/class/gpio/gpio11/direction
Write a value to turn on the LED using the GPIO11:
echo 1 > /sys/class/gpio/gpio11/value
Now your led should be ON!!!
Write a value to clear the LED using the GPIO11
echo 0 > /sys/class/gpio/gpio11/value
Now your led should be OFF!!!
Delete the created GPIO (11)
echo 11 > /sys/class/gpio/unexport
You are able to access to GPIO using python or any programming language. We wrote a python script to show how. Download
The script prompts the questions to determine which pin and how many times you want it to blink:
Type the number of the GPIO you want to blink : 11
Type the number of times you want it to blink e.g: 10
Now your GPIO 11 is blinking like a christmas tree.
Open the python script with a text editor and study all the lines (try to understand, is a simple script using file access)
Let's start with the Second method (Pointers):
If you want to read/write to GPIOs using pointers the better way is installing the bcm2635 library and understanding how it works, you can read the datasheet of bcm2835 starting with the section 1.2.2
Installing bcm2835 library
wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.15.tar.gz
tar zxvf bcm2835-1.15.tar.gz
./configure
make
make check
make install
Now you can easily use this library to access the GPIOs, the library uses pointers to write/read to the GPIOs or to changes the values in registers of the HW, modifying the function of each peripheral (PWM modules, UART, etc)
Using a HW module for PWM. Connect an LED using a resistor between GPIO18 and GND. (Pin 1 for WiringPi)
Refer to the "man page" of the recently installed WiringPi program called "gpio":
man gpio
Notice that you can configure a pin to be in, out, pwm, up, down or tri.
According to it, configure GPIO18 (WiringPi Pin 1) in HW PWM Mode using the command shell:
gpio mode 1 pwm
Write a value to the PWM module (from 1 to 1023):
gpio pwm 1 500
To remove the configuration of the pin, use:
gpio unexport 1
To remove all configurations:
gpio unexportall
Feel free to use the gpio program to configure other pins as input or output (PWM is only for special function pins like GPIO18(WiringPi 1), other PWM pins are occupied by the 3.5mm audio connector.
Remove "console=ttyAMA0,115200" and "kgdboc=ttyAMA0,115200" configuration parameters from the "/boot/cmdline.txt" configuration file using nano editor.
nano /boot/cmdline.txt
Comment the last line on the "/etc/inittab" file. Put a '#' before "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100.
nano /etc/inittab
Now the RXD (GPIO15) and TXD (GPIO14) pins are available for general UART use.
This is an example application to use the UART pins using Python and the pyserial library:
BOT_GTALK_USER = This email address is being protected from spambots. You need JavaScript enabled to view it.' #Raspberry Pi username BOT_GTALK_PASS = 'password' #Raspberry Pi password BOT_ADMIN = This email address is being protected from spambots. You need JavaScript enabled to view it.' #Only user allowed to execute certain commands
Execute the script:
python ./raspiBot.py
To test it send the following messages through Google Talk:
When using Pin functions, refer to the Pin Numbers instead of the Pin names, for example, the image shows an LED connected to Pin #19:
[pinon|pon|on|high] [pin] : turns on the specified GPIO pin
[pinoff|poff|off|low] [pin] : turns off the specified GPIO pin
[write|w] [pin] [state] : writes specified state to the specified GPIO pin
[read|r] [pin]: reads the value of the specified GPIO pin
Chat example:
[available|online|busy|dnd|away|idle|out|xa] [arg1] : set gtalk state and status message to specified argument
Example: busy I'm really busy, online I'm here
[shell|bash] [arg1] : executes the specified shell command argument after 'shell' or 'bash'
shell reboot
Note: The only command that requires Admin permissions in the original code are the ones that change the connection state. To change that, replace raspiBot.py with this version.
How to add new functions?
Simply add this lines of code along with the rest of the methods found in raspiBot.py
Automatic Reply
def command_003_love(self, user, message, args):
'''I love you Pi'''
self.replyMessage(user, "I love you too")
Admin permission for command
def command_003_love(self, user, message, args):
'''I love you Pi'''
jid = user.getStripped() #Save username of contact
# Verify if the user is the Administrator of this bot
if jid == BOT_ADMIN:
self.replyMessage(user, "I love you too")
else:
self.replyMessage(user, "Do I know you?")
Selective actions
Identify the unwanted user along with the ADMIN at the beginning of raspiBot-py
BOT_ADMIN = This email address is being protected from spambots. You need JavaScript enabled to view it.' BOT_SPAM = "This email address is being protected from spambots. You need JavaScript enabled to view it."
def command_003_love(self, user, message, args):
'''I love you Pi'''
jid = user.getStripped() #Save username of contact
# Verify if the user is the Administrator of this bot
if jid == BOT_ADMIN:
self.replyMessage(user, "I love you too")
elif jid == BOT_SPAM:
self.replyMessage(user, "I hate you")
else:
self.replyMessage(user, "Do I know you?")
For more actions on GPIO Pins refer to:
http://code.google.com/p/raspberry-gpio-python/
How to configure a LAMP server (Spanish: Como configurar un servidor LAMP)
LAMP Server
How to configure a LAMP server (Spanish: Como configurar un servidor LAMP)
"Linux (operating system), Apache HTTP Server, MySQL (database software), and PHP, Perl or Python"
Ing. Diego Ricardo Páez Ardila
Servidor Raspberry Pi Debian Squeeze
A continuación se explicará de forma detallada cómo configurar un Servidor LAMP. Se parte del punto de tener el sistema operativo instalado y configurada la comunicación ssh.
El primer paso para la configuración del servidor, será comunicarse con el operador de internet con el fin de abrir los puertos virtuales del Router, el operador asignará una dirección IP estática a la que será dirigido el tráfico. Se debe abrir el puerto 80 para http, el 22 para ssh y el 21 para ftp. Otra opción consiste en ingresar directamente al router como administrador y abrir dichos puertos.
1. Para conocer la información de la red del raspberry pi se ingresa en el terminal el comando ifconfig. Teniendo la dirección IP estática asignada por el operador, en este caso 192.168.2.24, se debe configurar la raspberry con la misma dirección, para cambiar la IP se debe ingresar al siguiente archivo como root:
nano /etc/network/interfaces
Se reemplaza la línea “iface eth0 inet dhcp” con lo siguiente:
iface eth0 inet static
address 192.168.2.24
netmask 255.255.255.0
gateway 192.168.2.1
Para guardar el archivo se presiona Control + O y para salir Control + X, el resultado se ve en la siguiente figura.
Después de modificar el archivo se reinicia el sistema utilizando el comando reboot. Al iniciar el sistema nuevamente se verifica que la IP sea la deseada con ifconfig y se realiza el ping de alguna página web para confirmar que todo funcione correctamente.
ping www.google.com
Control + c para salir del ping.
2. Para tener un host en la red se requiere algún proveedor, para este servidor se utilizará el servicio de http://www.no-ip.com/ , ya que es gratuito y además realiza la actualización de los DNS, de esta forma la IP pública de nuestro servidor se encontrará siempre asociada al host.
Primero se debe crear una cuenta en www.no-ip.com, cuando la cuenta se halla activado se procede a crear el host. Para iniciar la interfaz gráfica se escribe el comando
pi@raspberrypi:~$ startx
Desde un navegador se hace el siguiente proceso:
1. Primero se selecciona add a host.
Seguido de esto se asigna un nombre y se escoge un dominio de la lista.
Finalmente se crea el host.
Después de esto se descarga el software de no-ip para mantener conectado el host con la dirección IP.
La función make debe encontrarse instalada en el sistema. Desde un terminal en modo root se ingresa lo siguiente:
root@raspberrypi:/home/pi/# apt-get install make
root@raspberrypi:/home/pi/# apt-get install gcc
Se accede a la carpeta descargada y se instala la herramienta de no-ip de la siguiente forma:
root@raspberrypi:/home/pi/# cd noip-2.1.9-1
root@raspberrypi:/home/pi/# make install noip2.c
Al realizar la instalación nos pedirá iniciar sesión con la cuenta de no-ip:
· Please enter the login/email string for no-ip.com: se escribe la dirección de correo o el nombre de usuario de nuestra cuenta en No-IP. Enter
· Please enter the password for user debianisfreedom: se escribe la contraseña de nuestra cuenta de usuario en No-IP. Enter
· Only one host [host registrado] is registered to this account. It will be used. Please enter an update interval: [30]: se pregunta la frecuencia con la que se actualizara la ip. Se deja por defecto 30 minutos. Enter
· Do you with to run something at successful update?[N] (y/N): Enter
Después de realizado lo anterior se tiene configurado no-ip, pero aún falta que iniciar el proceso de actualización de DNS y que este proceso se ejecuta de forma automática. Para lograr esto se utiliza el script que se encuentra en la carpeta descargada de no-ip.
Se abre el editor de texto y se guarda el archivo con el siguiente código en /home/pi, con el nombre noip.sh
Se da permiso de ejecución al archivo desde el terminal en modo root:
root@raspberrypi:/home/pi/# chmod +x noip.sh
Después se copia el archivo creado a la carpeta init.d en la cual se encuentran los archivos que se lanzan al iniciar el sistema.
Se accede a un navegador que se encuentre fuera de nuestra red y se ingresa al host creado en noip, para probar de forma local se accede desde un computador diferente desde un navegador y se ingresa la ip asignada al raspberry. La carpeta por defecto del servidor se encuentra en /var/www, esta se modificara ingresando al archivo default de apache2 modificando la dirección de la carpeta a la deseada, en este caso /home/pi/server.
La figura que se ve a continuación muestra la información almacenada en la carpeta server.
4. Después de tener el servidor instalado, se procede a instalar PHP, este lenguaje permitirá la creación de webs con contenido dinámico como texto, imágenes, videos entre otros:
Desde un terminal como root se ejecuta el siguiente comando.
root@raspberrypi:/home/pi/# apt-get installphp5
Después de ejecutar este comando se reinicia el sistema.
Para confirmar que PHP este instalado, se debe crear un archivo en la carpeta del servidor de la siguiente manera:
Se guarda y cierra el archivo, se procede al navegador ingresando la ip del raspberry pi o escribiendo localhost/prueba.php y debe aparecer lo siguiente:
10. Finalmente se instala MySql, esta aplicación permite la creación y manejo de bases de datos en el servidor.
Cuando se está realizando la instalación el software pedirá una contraseña para acceder a mysql, por lo tanto se debe ingresar la contraseña deseada.
Se reinicia el sistema después de esta instalación.
Al iniciar, en modo root se debe comprobar que todo esté funcionando bien por esto se ingresan los siguientes comando.
root@raspberrypi:/home/pi/# service mysql start
Se ingresa la contraseña creada anteriormente después de la primera –p
root@raspberrypi:/home/pi/# mysql -uroot –ppassword
Debe ingresar al modo mysql si todo ha quedado bien, para salir al root nuevamente se ingresa control + c.
Con esto finaliza la instalación del servidor LAMP.
How to connect an LCD interface on Raspi and install VNC
Written By: Peter Gomez & Holguer A Becerra
for connecting a raspberry pi with a computer through a network of internet access, the first thing to know is the IP address of the raspberry pi, this direction is taken to a putty which allows the connection through network internet access, so you can access the console raspberry pi. Seeing as follows:
Accessing the Console by entering the login and password
When you are in the console window, tip in the first command to download the file “lcd_raspi.py” with the following command:
USB- BULK TRANSFER, UTILIZANDO COMO INTERFAZ UNPIC18FXX5X
USB Bulk Transfer - Labview & Pic 18FXX5X
Autor principal: JUAN CAMILO ATENCIA AMÍN (Ing Electrónico UIS).
Supervisor: Holguer A Becerra (Ing Electrónico UPB).
Objetivo: Brindar a los estudiantes y profesionales en la electrónica o áreas afines, herramientas y conocimientos que permitan utilizar en sus productos, proyectos o desarrollos modos de comunicación sencillos y rapidos sobre interfaces universales(USB Bulk Transfer protocol), para dejar de lado sistemas comunes de transmisión USB-Serial RS232 los cuales son muy lentos y requieren generalmente de Hardware externos FTDI.
REQUISITOS(Puede ser cambiado por software libre):
1) Labview versión 2010 ó superior (Versión de prueba por 30 días).
2) Proteus v7.7 o superior (Versión de prueba).
3) Un PIC18f4550, CRYSTAL de 20MHZ y Cable USB.
4) CSS 4.4 o superior (Versión de prueba).
NOTA 2:
Puedes cambiar el PIC poniendo la librería (.h) correspondiente para el CCS. Por ejemplo, en vez de usar el PIC 18F4550 queremos usar el PIC 18F2550, entonces hacemos lo siguiente, donde pone:
#Include <18F4550.h>
Lo cambiamos por:
#Include <18F2550.h>
Los "#fuses" del programa CCS están configurados para poner un cristal de 20 MHz. Si quieres poner cualquier otro cristal (de 4 a 48 MHz.)
Por: Jesus Fabian Santana Hernandez y Juan Camilo Dueñas Moreno
Materia: Comunicaciones Digitales.
Docente: Holguer A Becerra
Universidad Pontificia Bolivariana
En esta practica usted se familiarizara con la plataforma FRDM-KL46Z de freescale, la cual contiene un procesador ARM Cortex M0+ de ultra bajo consumo, que utilizaremos a lo largo del semestre en los diferentes proyectos de clase.
Descargue el datasheet de la plataforma FRDM-KL46Z.
Ahora identifique los perifericos conectados a la plataforma y numerelos. Ademas, identifique los pines libres de la plataforma o GPIOs.
¿Cual es la frecuencia maxima de operación del chip?
¿Cual es el consumo de energia en Watts?
¿Cual es su capacidad de memoria en Bytes?(Volatil y No volatl)
¿Cuantos I/Os tiene? y comparelos con cuantos estan libres y disponibles en la plataforma FRDM de desarrollo.
¿Que es un PLL?
¿Cuantos ADC tiene el chip y cual es su resolucion en bits? y frecuencia de operacion?
¿Cuantos DAC tiene el chip y cual es su resolucion en bits? y frecuencia de operacion?
¿Cuantos canales de PWM tiene disponibles y cual es su resolucion, y frecuencia?
¿Cuantos canales SPI dispone el sistema? y frecuencia de operacion?
¿Cuantos timers tiene el sistema? y frecuencia de operacion?
¿Cuantos Canales UART tiene el sistema?
¿Cuantos Stages de Pipeline tiene el sistema?
¿Què tipo de acceso a memoria tiene, Von Neuman o Hardvard modificado?
¿Cuantas instrucciones en lenguaje ensamblador tiene el sistema?
¿Cuantos registros tiene el sistema?
¿Què es NVIC y en que consiste?, cuantas intrerrupciones tiene el sistema?
¿Cuantos ciclos de maquina gasta un move en assembler en el ARMCortex M0+?
¿Cuantos ciclos de maquina gasta un multiply en assembler en el ARMCortex M0+? ==> ¿Por qué es importante saber esto?
Una vez usted tenga la respuesta a las anteriores preguntas y las tenga claras(Salen en el parcial), usted puede proceder a trabajar con la plataforma, para esto debe:
Instale el KDS- V2.0.0, descarguelo de la pagina de freescale.(Haga todo como administrador)
Ahora descargue los devices Freescale_KSDK1.0.0_KL43Z_1.0.1, de la pagina de Freescale.
Una vez instalado el KDS, usted debe bajar los siguentes componentes
Abra el KDS y escriba en "Workspace" el nombre de PKinetis
Descomprima los componentes que descargo en una ruta cercana a la Raiz C:\Componentes.
Seleccione en el menu, processor expert-> Import component(s)
Seleccione los componentes que va instalar y oprima open.
Conecte la tarjeta de desarrollo FRDM-KL46Z y verifique que la los drivers de esta estan instalados correctamente(Conectelo al mini usb que dice SDA)..
Ahora vaya a File->New-> Kinetis Design Studio y llame el proyecto "mi_primera_vez", oprima siguiente y seleccione el procesador a trabajar, oprima siguiente y seleccione "Processor Expert" y oprima Finish.
Ahora de doble click sobre el componente CPU y modifique el procesador seleccionado al de la tarjeta(Mire encima del chip de la tarjeta para que verifique la referencia seleccionada).
Ahora vaya a System oscillator 0, y active la casilla "System oscillator 0", seleccione en clock source "External Crystal"
Ahora vaya a "Components Library" y seleccione el componente Port I/O-> BitIO_LDD y dele doble click para añadirlo, descargue el esquematicode la FRDM board, verifique en que pin esta ubicado el pin del procesador que esta conectado al LED(Verde) de la board cerca al Jumper.
Una vez añadido el BitIO_LDD, renombrelo dando click derecho para que se vea de la siguiente forma
Este componente debe modificarse para que se conecte o se comunique con el pin que esta conectado al LED verde, por lo tanto usted debe verificar donde esta conectado el LED verde en el esquematico, y se dara cuenta que esta conectado al pin PD5.
Modifiique para que el puerto de un bit sea solo de salida y que se inicialice en 0 y oprima CTRL+S, para guardar cambios.
Ahora, oprima el siguiente boton para añadir al proyecto los cambios de los componentes.
Una vez generado los componentes, vaya a "Sources->Main.c", mire el encabezado del archivo donde vera, una libreria llamada "Green_led.h", manteniendo oprimido el boton CTRL y con el click izquierdo oprimima sobre ella. Esto lo llevara a la libreria que contiene los prototipos de las funciones que manejan el pin PD5 o el led verde, busque el prototipo de la funcion "void Green_Led_PutVal(LDD_TDeviceData *DeviceDataPtr, bool Val);" y lea la descripcion en su parte superior.
La funcion "void Green_Led_PutVal(LDD_TDeviceData *DeviceDataPtr, bool Val);" tiene dos argumentos, el primero es la direccion del puerto donde se quiere escribir el valor 0 o 1, que corresponde al segundo argumento. Usted puede ir dentro de esta funcion de la misma manera que accedio a la libreria, asi que oprima CTRL sobre esta funcion y verifique por usted mismo que hace con estos argumentos. Explore mas y mas dentro hasta que lo lleven a la libreria "MKL46Z4.h"
"Observe que el argumento DEviceDatPtr no se usa", peor observe en detalle "¿Què es Green_Led_Module_BASE_ADRESS, y PORT_MASK?"
Este proceso se hace para que se de cuenta, que los componentes dados por el proceso expert, estan todos atados a una libreria madre, la cual contiene el acceso directo a los puertos del sistema y configuracion de todos los registros del sistema. De alguna manera decirle, que usted esta sobre una capa superior que le facilita las cosas, y debe apreciar esto.
Ahora vaya nuevamente al archivo "Main.c", y modifiquelo de la siguiente manera:
De click derecho sobre la carpeta "mi primera vez" del Project Explorer, para construir el proyecto
Una vez construido el proyecto, aparecera un insecto en la carpeta, este archivo es de extension .elf y es el archivo que contiene las instrucciones que ejecutara el procesador
Nota: si no construyo el proyecto verifique errores en el codigo.
Ahora de click derecho sobre la carpeta "mi primera vez" nuevamente y vaya a Debug As-> Debug Configurations...(DEBE TENER LA TARJETA CONECTADA)
Modifique de la siguiente manera el programador, oprima en aplicar, y luego oprima DEBUG.
Una vez ha oprimido DEBUG, se empezara a compilar de nuevo el proyecto y empezara a descargar el archivo .elf sobre la plataforma.
La interfaz grafica cambiara a modo debug y aparecera de esta manera:
Ponga "BreakPoints en el codigo" para ir a lineas especificas cuando estas se vayan a ejecutar, y oprima el boton de ejecucion play o F8(Como tarea verifique que hace F5,F6 y CTRL+F2 ), po rahora solo oprima F8 cada breakpoint. Y verifique lo que pasa en el codigo, y el LED verde de la board.
Quite los BreakPoints, y deje ejecutar indefinidamente el codigo.
¿A que frecuencia el led se prede y apaga? y por qué?
Ahora modifque el codigo de la siguiente manera.
Haga Build, y Debug del nuevo codigo, y verifique que hace la el procedimiento "delay".
Modifique el codigo de la siguiente manera:
¿Qué paso con el LED, tiitla mas rapido o lento?, por què sucede esto?
Ahora vaya al processor expert y añada otro BitIO_LDD y llamelo "button1", esta vez configurelo de entrada, y modifiquelo de tal forma que este conectado al PushButton(SW1), verifique con el esquematico.
Como se dio cuenta tambien en el esquematico, los pushbuttons no tienen resistencia de Pull Up, se debe añadir configurando el puerto de entrada y ponerla. Para esto busque un componente en el processor expert llamado "Init_GPIO" y modifiquelo de la siguiente manera, luego oprioma CTRL+S para guardar cambios.
Se selecciona el puerto C, porque es este el cual esta conectado al push button seleccionado, el PTC3, es alli donde se debe poner la resistencia de PULL UP.
Genere el codigo del processor expert.
Ahora modifique el codigo para que se vea de la siguiente manera.
Compile y haga Debug del codigo, ¿Qué sucede cuando se oprime el boton, porque es importante PTC_Init(), que hace button1_GetVal()?
Ahora añada el componente "ExtInt", y modifiquelo de la siguiente manera
Modifique el button1, y active el Pin Sharing tambien
Genere el processor expert de nuevo, y modifique el main.c para que luzca de la siguiente manera:
Vaya al Events.C y vera un procedimiento llamado EInt1_OnINterrupt(Void), modifiquelo de la siguiente manera
"Ponga el breakpoint en la funcion, el punto Azul"
Ahora Compile, y haga DEBUG.
¿Qué sucede cuando oprime el button1?
¿Por qué el debug salta a la funcion de la interrupción?
¿Qué hace el codigo dentro de la interrupción?
¿Como funciona una interrupcion en el procesador ARM Cortex M0+?==> lea el siguiente documento e investigue mas, en los manuales de referencia de El ARM Cortex M0, el diagrama que usted busca saldra en el parcial, palabra clave "interrupt exception handling Cortex M0+", busque el diagrama Hardware y diargama de tiempos
¿Què significa la prioridad cuando se habla de interrupciones?
Ahora añada un componeten llamado "TimerInt" y modifiquelo de la siguiente manera, para generar una interrupcion cada 1000 ms
Genere el processor.
Vaya de nuevo el archivo "Events.c" y vera que se ha añadido a interrupcion del timer, modifiquelo para que se vea de la siguiente forma.
¿Qué sucede con el led?, ¿Qué sucede si oprime el button1?
Agrege el componente ahora llamado "SegLCD_LDD" y modifiquelo de la siguiente manera
Descargue el siguiente archivo y la carpeta LCD peguela en Sources
Modifique el codigo del main.c para que se vea asi, detalle cada linea a linea y entiendala.
Modifique tambien el codigo de la interrupcion del timer:
Compile y haga Debug.
Responda: ¿Por qué en el main.c se pone extern int seconds, y en el events.c solo int seconds?, ¿Qué significa Extern?.
¿Qué significa LDD_TDeviceData *MySegLCDPtr; y que tipo de variable es?, para que sirve?
¿Qué hace la linea MySegLCDPtr = SegLCD1_Init(NULL);? y para que sirve.
¿Qué hace sprintf?
¿Qué hace vfnLCD_Write_Msg((uint8 *)sLCDBuffer);?
¿Cuantos caracteres maxio, se pueden imprimir sobre el LCD?
¿Por qué se usa %04i y %04s en el sprintf?
¿Para què se usa el siguiente codigo?
¿Què hace el siguiente codigo, y quien modifica seconds?
¿Què tiene que hacer para que el conteo sea mas rapido en seconds?
¿Què hace el siguiente codigo, explique en detalle?
Tutorial: Encender y apagar un LED con ayuda de un Timer
Altium Designer 6: Tutorial de Creación de Esquemáticos
Altium Designer 6: Tutorial de Comandos PCB
Altium Designer 6: Simulación de circuitos
Altium Designer 6: Tutorial de Circuito 3D
Altium Designer 6: Tutorial de manejo y creación de librerías
Multimedia ADT
Description:
This is a multimedia focused board made for the DE0-Nano Development Kit in order to allow users to further develop embedded applications.
Different capabilities are included to improve the user interface (mouse/keyboard) with the baord, along with basic display (VGA 4bit/RGB) and Stereo Audio, an SD card slot allows the storage of multimedia information.