UTNianos

Versión completa: [Tecnicas Digitales II] Apuntes para el 1 Parcial
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Chicos, el primer parcial de Tecnicas Digitales II, del curso Paradiso/Lozano, te dejan tener en el examen, una carpeta personal (Hoja de datos de transistores, ADM3232, MAX232, Librerias del CMSIS del GPIO, TIMER, PINSEL, UART, el manual de usuario del 176x, Hoja de datos del LPC176x, etc, etc)
Imprimiendo todo lo que permite tener en el parcial serian unas 800 hojas que ni en pedo las imprimo. Lo que hice fue un resumen de todo a unas 100 hojas, de tener solamente lo que se necesita para el primer parcial (alcanza y sobra perfectamente) que seria el "carpeta para el parcial.rar" . Tambien están todas las estructuras que se usan en las funciones del Timer, Pinsel, Uart y GPIO.

Aparte, les dejo tres trabajos prácticos del Profesor Lozano, que esta muy bueno para estudiarlos. Te explica brevemente en código de como configurar el GPIO, Pinsel, Uart y el Timer.

Dato extra: Lozano fabrica Base Board para el KIT del cortex-M3. Es bastante recomendable, muy comodo para practicar y hacer el proyecto. No es muy caro comparado con la original del NXP, y tiene los mas perfericos el de Lozano que la original.
Empiezo con esto entonces, me vas a tener que ayudar loco!!
Ves lo que te digo... Ustedes programan muy Info2, nosotros hacemos todo re diferente
No se lo que ven ustedes. Pero no solo vemos programacion.
Sino tambien vemos la arquitectura del Cortex-M3 (me duermo en todas las clases teoricas), programacion del cortex_m3 como configurarlo todo esas cosas, y la parte Hardware. Como conectar el puerto serie con el micro, que integrados usar, como conectar un transistor, que resistencia usar para conectar a un GPIO, etc.

Dale, marian. Cuando tengas dudas de como programar el Cortex-m3 (Uart, timer (Systick o TIM), y GPIO) avisame que es lo que mas entiendo jaja. El resto (hard y teoria de arquitectura ) entiendo poco y nada jajaj.
thumbup3thumbup3thumbup3
Sos un grande, me viene como anillo al dedo, justo lo estoy preparando y me quede sin material de estudio.
Ademas tengo unos inconvenientes con la RubuenBoard, el LCD todavía no lo pude hacer funcionar y el teclado matricial tampoco. Vos pudiste?

Adjunto otro conjunto de hojas de datos y resúmenes que me paso un amigo hace poco, por lo que vi se complementan.
EDIT: No se adjunto, veo de subirlo a Rapishare o similar...
Si hacen funcar el LCD avisen!!!
Les dejo los apuntes! También hay míos y lo ordene un poco, seguro que les sirve.
http://www.mediafire.com/file/4ahcrb1d9k...es_TD2.zip

Se que un amigo lo hizo funcionar con el siguiente código, pero por alguna razón a mi no me sirve (aparece basura en la pantalla).[/code]


#include "LPC17xx.h"

void Config_Puerto(void);
void Enable(void);
void IniciarLCD(char N,char F, char D, char C, char B, char ID, char SH);
void EsCharLCD(char Caracter);

#define LCD_D4 5
#define LCD_D5 6
#define LCD_D6 7
#define LCD_D7 8
#define LCD_RS 0
#define LCD_EN 1

#define Delay_1mS for (i=0;i<170;i++){}
#define Delay_2mS for (i=0;i<300;i++){}
#define Delay_43mS for (i=0;i<7200;i++){}
#define Delay_43uS for (i=0;i<8;i++){}

#define Borra_todo LPC_GPIO2->FIOCLR |= (1<<LCD_D7) | (1<<LCD_D6) | (1<<LCD_D5)| (1<<LCD_D4)

unsigned int i=0;


int main(void) {

Config_Puerto();
IniciarLCD(0,0,1,0,1,1,0);

EsCharLCD('H');
EsCharLCD('o');
EsCharLCD('l');
EsCharLCD('a');
EsCharLCD(' ');
EsCharLCD('M');
EsCharLCD('u');
EsCharLCD('n');
EsCharLCD('d');
EsCharLCD('o');

while(1) {

}

return 0 ;
}


void Enable(void){

LPC_GPIO2->FIOSET |= (1<<LCD_EN);
Delay_43uS;
LPC_GPIO2->FIOCLR |= (1<<LCD_EN);
Delay_43uS;
Borra_todo;

}

void EsCharLCD(char CaracterEN){

union {
char Caract;
struct {
unsigned int b0:1;
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b4:1;
unsigned int b5:1;
unsigned int b6:1;
unsigned int b7:1;
};
}Caracter;

Caracter.Caract=CaracterEN;

LPC_GPIO2->FIOSET |= (1<<LCD_RS);

LPC_GPIO2->FIOSET |= (Caracter.b7<<LCD_D7) | (Caracter.b6<<LCD_D6) | (Caracter.b5<<LCD_D5) | (Caracter.b4<<LCD_D4);
Enable();
LPC_GPIO2->FIOSET |= (Caracter.b3<<LCD_D7) | (Caracter.b2<<LCD_D6) | (Caracter.b1<<LCD_D5) | (Caracter.b0<<LCD_D4);
Enable();

LPC_GPIO2->FIOCLR |= (1<<LCD_RS);

}

void IniciarLCD(char N,char F, char D, char C, char B, char ID, char SH){

Delay_43mS;

LPC_GPIO2->FIOSET |= (1<<LCD_D5);
Enable();

LPC_GPIO2->FIOSET |= (1<<LCD_D5);
Enable();

LPC_GPIO2->FIOSET |= (N<<LCD_D7) | (F<<LCD_D6); //N, F
Enable();

Delay_1mS;

Enable();

LPC_GPIO2->FIOSET |= (1<<LCD_D7) | (D<<LCD_D6) | (C<<LCD_D5) | (B<<LCD_D4); //D, C, B,
Enable();

Delay_1mS;

Enable();

LPC_GPIO2->FIOSET |= (1<<LCD_D4);
Enable();

Delay_2mS;

Borra_todo;
Enable();

LPC_GPIO2->FIOSET |= (1<<LCD_D6) | (ID<<LCD_D5) | (SH<<LCD_D4); // I/D, SH
Enable();

}

void Config_Puerto(void){


// LCD_RS - P2.0 (PIN 42 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<0); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<1); //

LPC_PINCON->PINMODE4 |=(1<<0); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<1); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<0); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<0); //Configuro el pin como Salida


// LCD_EN - P2.1 (PIN 43 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<2); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<3); //

LPC_PINCON->PINMODE4 |=(1<<2); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<3); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<1); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<1); //Configuro el pin como Salida


// LCD_D4 - P2.5 (PIN 47 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<10); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<11); //

LPC_PINCON->PINMODE4 |=(1<<10); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<11); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<5); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<5); //Configuro el pin como Salida


// LCD_D5 - P2.6 (PIN 48 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<12); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<13); //

LPC_PINCON->PINMODE4 |=(1<<12); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<13); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<6); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<6); //Configuro el pin como Salida


// LCD_D6 - P2.7 (PIN 49 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<14); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<15); //

LPC_PINCON->PINMODE4 |=(1<<14); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<15); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<7); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<7); //Configuro el pin como Salida


// LCD_D7 - P2.8 (PIN 50 del LPC1769)
LPC_PINCON->PINSEL4 &=~(1<<16); //Funcion Estandar IO
LPC_PINCON->PINSEL4 &=~(1<<17); //

LPC_PINCON->PINMODE4 |=(1<<16); //Selecciono Resistencias de
LPC_PINCON->PINMODE4 |=(1<<17); //pull-up

LPC_PINCON->PINMODE_OD2 &=~(1<<8); //sin Open Drain

LPC_GPIO2->FIODIR |=(1<<8); //Configuro el pin como Salida

}


Ojo que el lcd solo funca bien si esta habilitado una sola fila del lcd. Osea cambia en la inicializacion del lcd nomas.

Enviado desde mi MB526 usando Tapatalk
No entendi eso Gon....
viste, que cuando inicializas el lcd, pones las caracteristicas? Nombre del lcd, 16 columnas, 2 filas porque es un lcd 16x2.

el ruben board esta mal diseñado. Si vos pones para que funcione como un 16x2, se ve con muuy poca fuerza las letras en el lcd, casi ni se ve. No alcanza la alimentacion. En cambio si vos inicializas como un 16x1 anda perfecto y se ve muy bien. Dsp subo un proyecto que hizo alejandro Celery, que funciona todo.

Enviado desde mi MB526 usando Tapatalk


Codigo que subio envido, esta todo hecho por registros. Usen las librerias del cmsis que es muchisimo mas facil.

Enviado desde mi MB526 usando Tapatalk
Eso ultimo seguro Gonza, por las CMSIS es mil veces mas entendible.

Espero lo de Celery !
Logre hacer funcional el LCD, estoy acomodando el codigo para que sea entendible y en CMSIS con Timer, pero esta basado en el que me pasaron.

Lo del contraste se soluciona haciendo un puente en la resistenicia R35 (algunos la cambian por un pote para controlar el contraste, pero puenteandola se ve bien)
(27-08-2012 16:02)Envido32 escribió: [ -> ]Logre hacer funcional el LCD, estoy acomodando el codigo para que sea entendible y en CMSIS con Timer, pero esta basado en el que me pasaron.

Lo del contraste se soluciona haciendo un puente en la resistenicia R35 (algunos la cambian por un pote para controlar el contraste, pero puenteandola se ve bien)

Puenteando se ve bien los dos renglones del LCD??? si es asi buenisimo! gracias!!
otro: Manual de referencia de FreeRTOS, con eso y el manual de CMSIS (esta en el otro archivo que subi) pueden hacer funcionar todo
http://www.freertos.org/Interactive_Fram...ource-code
muchas gracias ! el año que viene puedo cursarla, pero los docentes de acá me han dicho que son pésimos no les entendes nada y medio "malos".
Qué libro me recomendadas para introducirme a la asignatura, tengo el Mandado me lo prestaron, pero me dicen que no me fíe del todo,
cual es su experiencia muchachos,

Muchas gracias por los apuntes y parciales!
Páginas: 1 2
URLs de referencia