-
-
Category: Legacy
-
-
Hits: 4423
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:
- Spartan 3A Starter Kit
- Raspberry Pi 1,Model B
- USB BULK TRANSFER - UNPIC18FXX5X
- Tutorial Wixel Pololu
- TEXAS INSTRUMENTS – SERIE MSP430
- Introducción - FRDM-KL46Z NXP
- Codewarrior con un Sistema Tower
- Altium 6 Tutoriales
- ADT Board
Spartan 3A Starter Kit
Raspberry Pi 1,Model B
USB BULK TRANSFER - UNPIC18FXX5X
Tutorial Wixel Pololu
TEXAS INSTRUMENTS – SERIE MSP430
Introducción - FRDM-KL46Z NXP
Codewarrior con un Sistema Tower
Altium 6 Tutoriales
ADT Board
Verilog Basics.pdf Download |
Jun 12, 2014, 6:52 PM |
Tutorial ISim 1 View |
Para los que usan Xilinx ISE 12.3 o mayor, este es un tutorial para saber como simular sus diseños usando ISim |
Apr 16, 2011, 6:53 AM |
configurarFPGA.swf Download |
Si ya tienes una FPGA encendida y conectada a tu PC, puedes ver este vídeo para configurarla con el diseño que tengas hecho... |
May 1, 2011, 8:08 PM |
IntroducciónClase1.pdf Download |
Introducción y conceptos básicos de diseño en FPGA |
Jun 30, 2011, 10:13 AM |
Introducción: Encender un LED View |
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 |
Apr 22, 2011, 8:44 PM |
Buses y Compuertas en Verilog View |
Video Tutorial de descripción de buses y compuertas en Verilog |
Mar 30, 2011, 7:57 AM |
Operador Condicional "?" |
Video Tutorial del uso del comando "?" como operador condicional en la descripción de Hardware en Verilog |
|
Mar 30, 2011, 7:57 AM |
Clase 5 a, Estructura Combinacional Always@(*) View |
|
Mar 30, 2011, 7:59 AM |
Clase_5_a.rar Download |
Solución y Proyecto Xilinx Clase 5 a |
Mar 30, 2011, 7:59 AM |
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. |
Mar 30, 2011, 7:59 AM |
Clase_5_b.rar Download |
Solución y Proyecto Xilinx Clase 5 b |
Mar 30, 2011, 7:59 AM |
Clase 5c, Divisor de Frecuencia y Aplicación Piano de una 8va View |
Video FLV MEGAUPLOAD (lost file) |
Mar 30, 2011, 7:59 AM |
frecGen.v Download |
Divisor de Frecuencia, Clase 5 c |
Mar 30, 2011, 7:59 AM |
ROM_MUSICAL.v Download |
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. |
Mar 30, 2011, 7:59 AM |
CÓMOCONSTRUIRUNAMÁQUINADEESTADOSYNOMORIRENELINTENTO.pdf Download |
Guía de construcción de máquinas de estados |
Mar 30, 2011, 7:59 AM |
CircuitosbasadosenFlip-FlopsII.pdf Download |
Guía de teoría acerca del cruce en dominios de reloj y ejemplos de circuitos basados a Flip-Flops. |
Jun 30, 2011, 12:26 PM |
CircuitosbasadosenFlip-FlopsI.pdf Download |
Guía teórica acerca de los Fli-Flops y su utilización en circuitos en FPGA |
Jun 30, 2011, 10:57 AM |
Circuitos de prueba basados en Flip-Flops View |
En este video se demuestra el funcionamiento de distintos circuitos basados en Flip-Flops mediante la descripción de sincronizadores |
Jun 30, 2011, 12:28 PM |
EjerciciosRepaso1.pdf Download |
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 |
Jun 9, 2011, 3:43 PM |
black_box.v Download |
Feb 21, 2015, 7:25 AM |
mono_dac.v Download |
Aug 19, 2015, 11:36 AM |
Plantilla2_Spartan3A.zip Download |
Apr 22, 2015, 9:29 AM |
Raspberry-Pi Enable Sound
SOUND
How to enable sound on Raspberry-Pi HDMI and Analog (Raspbian-Wheezy)
*Before starting startx
Use SuperUser (After every reboot) or use sudo before any command
Install Firmware Updater
apt-get install ca-certificates git-core binutils
wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update
cp rpi-update /usr/local/bin/rpi-update
chmod +x /usr/local/bin/rpi-update
Update Firmware
Uncomment "hdmi_drive=2" on config.txt
Install ALSA, MPlayer and PulseAudio
apt-get install mplayer mplayer-gui alsa-base alsa-utils pulseaudio mpg123
Add audio module to kernel
modprobe snd_bcm2835
echo 'snd_bcm2835' >> /etc/modules
Configure ALSA driver for n Analog=1 HDMI=2 (Auto=0 Not recommended)
Replace asound.conf with:
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
nano /etc/asound.conf
Reboot Raspberry Pi
Test audio without ALSA
cd /opt/vc/src/hello_pi/
./rebuild.sh
cd hello_audio
Test analog output
Test audio with ALSA
Test analog output
amixer cset numid=3 1
speaker-test -t sine -f 600
Test HDMI output
amixer cset numid=3 2
speaker-test -t sine -f 600
Download mp3 file Hello.mp3
wget https://fpgalover.com/images/manuals/SemilleroADT/RPI/Hello.mp3
Play MP3 file
Edited by Jose P Pinilla & Holguer A Becerra
How to enable video playback on raspberry pi
How to Enable video playback on raspberry pi (Raspbian-Wheezy)
How to run videos on Raspberry Pi: http://www.brianhensley.net/2012/07/how-to-get-1080p-videos-running-on-my.html
Install dependencies for omxplayer (Only player right now that supports raspberry's GPU)
sudo apt-get install libpcre3-dev libpcrecpp0 libva-dev libva-x11-1 libva1
Install OMXPlayer (if not installed)
wget http://seyrsnys.myzen.co.uk/rpi/omxplayer_0.0.1-arm.deb
sudo dpkg -i omxplayer_0.0.1-arm.deb
Add keyboard control to OMXPlayer using xterm: http://stevenhickson.blogspot.com/2012/08/setting-up-omxplayer-gui-on-raspberry-pi.html
sudo apt-get install xterm
Para utilizar los controles p(pausa) +/- volumen y otros
xterm -e omxplayer -o hdmi -r %f
Add a GUI to OMXPLayer: https://github.com/KenT2/tboplayer
wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz
tar xzf pexpect-2.3.tar.gz
cd pexpect-2.3
sudo python ./setup.py install
wget https://github.com/KenT2/tboplayer/tarball/master -O - | tar xz
python tboplayer.py
Download an HD video or use one from a pendrive, for example:
wget http://www.iverged.com/trailer/movie/IronMan3/Iron_Man_3_Trailer_1080p.mp4
Inside tboplayer: 'Add' video file and 'Play'.
"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
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
Open a new terminal and execute the script
wget https://sites.google.com/site/semilleroadt/raspberry-pi-tutorials/gpio/ADT_blink.py
python ADT_blink
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)
Open the Terminal and use gcc to compile the code.
wget https://sites.google.com/site/semilleroadt/raspberry-pi-tutorials/gpio/main.c
gcc -o main -l rt main.c -l bcm2835
Execute the compiled code
Now your LED connected in the GPIO11 is Blinking!!! Like the example with the python script.
Open the C code with a text editor and study all the lines.
Now the Question is: What is the best way to access GPIOs on linux?
PWM
The WiringPi project is a library that includes an application for easy GPIO access.
For PWM it allows to configure hardware modules for dedicated PWM pins as well as using a software PWM solution on other pins.
Install WiringPi (WiringPi uses git, a source code management system):
sudo apt-get install git-core
Download or "clone" the WiringPi project and build it:
git clone git://git.drogon.net/wiringPi
./build
If you have already downloaded it, you can update to the latest version:
cd wiringPi
git pull origin
./build
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":
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:
Write a value to the PWM module (from 1 to 1023):
To remove the configuration of the pin, use:
To remove all configurations:
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.
This is a code example using wiringPi to configure a Soft-PWM pin.
UART
In order to use the dedicated UART pins on the raspberry pi, first they have to be removed from their default application which is debugging.
To do this edit "/boot/cmdline.txt" and "/etc/inittab".
You can backup this files if you want to return to the default configuration:
cp /boot/cmdline.txt /boot/cmdline.bak
cp /etc/inittab /etc/inittab.bak
Remove "console=ttyAMA0,115200" and "kgdboc=ttyAMA0,115200" configuration parameters from the "/boot/cmdline.txt" configuration file using nano editor.
Comment the last line on the "/etc/inittab" file. Put a '#' before "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100.
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:
Install by running the setup.py
Open a Python terminal (remember to always be running under SuperUser by using sudo or su):
To test it without the need of another device simply connect raspberry's TXD and RXD pins to each other:
Run the following commands on the python terminal:
import serial
ser = serial.Serial("/dev/ttyAMA0")
ser.write("UART the Font")
read = ser.read()
print read
ser.close()
Install "minicom" for terminal emulation:
You can use minicom using the next line command
minicom -b 9600 -o -D /dev/ttyAMA0
SABADO CLASE LCD RASPBERRY
wget https://fpgalover.com/images/manuals/SemilleroADT/RPI/lcd_raspi.py
sudo crontab -e
@reboot python /home/pi/LCD_raspi/lcd_raspi.py
How to make a google talk robot on raspberry pi
Execute everything as 'sudo' or use 'sudo su' before starting.
Install all dependencies and clone the python sourcecode from github:
apt-get install python-pip
reboot
easy_install -U distribute
pip install RPi.GPIO xmpppy pydns
git clone https://github.com/mitchtech/raspi_gtalk_robot.git
cd raspi_gtalk_robot
nano raspiBot.py
Edit the following lines to configure your chat:
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:
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'
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 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:
wget https://fpgalover.com/images/manuals/SemilleroADT/RPI/lcd_raspi.py
Now you have to configure your crontab daemon. You can edit your crontab configuration file by executing the following command:
At the end of the file add the line following line to execute “lcd_raspi.py” everytime your system reboots.
@reboot python /home/pi/lcd_raspi.py
Save and exit the file by pressing CTRL + X. Press Y to confirm the saving. Finally reboot the system by the 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).
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.
- Descargue el datasheet del chip MKL46Z256, el manual de referencia, el manual del cortex M0+ y responda:
- ¿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?
*/
int seconds=0;
void TI1_OnInterrupt(void)
{
seconds++;
Green_Led_PutVal(NULL,seconds & 1);
}
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.
LED power indicator
Materials
3 Res 4k Ohm 1/4W
3 Res 2k Ohm 1/4W
3 Res 1k Ohm 1/4W
3 Res 510 Ohm 1/4W
4 Res 10k Ohm 1/4W
1 Res 330 Ohm 1/4W
2 Res 3.3k Ohm 1/4W
2 Res 82 Ohm 1/4W
2 Res 2k Ohm 1/4W
2 Res 120 Ohm 1/4W
2 Cap 1uF
1 HDF15 VGA
1 3.5mm Audio Jack
2 Cap
1 3mm LED
1 SD connector
1 2x20 Male Header Pins
1 16x1 Male Header Pins
2 2x1 Male Header Pins
Video of Multimedia ADT working:
Tutorial Video to generate the SW and HW of Demo:
Other Videos(Using the PCB):