- #include <p24fj128ga010.h>
- _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
- _CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS );
- #include <uart.h>
- char DataUART;
- char KbhitUART;
- /* ** *********************************************************************************** ** */
- // Definciones para calculo de Baud Rate.-
- #define FCY 10000000 // MHz
- #define BAUDRATE 9600
- #define BRGHigh 1
- #if BRGHigh
- #define BRGVAL ((FCY/BAUDRATE)/4)-1
- #else
- #define BRGVAL ((FCY/BAUDRATE)/16)-1
- #endif
- //__attribute__ ((__section__ (".text"), __space__(prog)))
- const char Texto[]= "Probando comunicación serial...\r\nPIC24FJ128GA010 xD ...\r\n";
- /* ** *********************************************************************************** ** */
- void __attribute__((__interrupt__, __shadow__)) _U2RXInterrupt(void){
- DataUART=getcUART2();
- KbhitUART=1;
- _U2RXIF=0; // Borramos flag.
- }
- /* ** *********************************************************************************** ** */
- int main (int argc, char * argv[]){
- /* ** Utilizando las funciones definidas en C30 ** */
- OpenUART2(UART_EN & UART_IDLE_STOP & UART_IrDA_DISABLE & UART_MODE_SIMPLEX &
- UART_UEN_00 & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_UXRX_IDLE_ONE &
- UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_BRGH_FOUR & UART_1STOPBIT,
- 0xFFFF & UART_IrDA_POL_INV_ZERO & UART_SYNC_BREAK_DISABLED &
- UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR,
- BRGVAL);
- ConfigIntUART2(UART_RX_INT_EN & UART_RX_INT_PR1 & UART_TX_INT_DIS & UART_TX_INT_PR0 );
- /*U2MODEbits.USIDL=1; // Al pasar al modo Sleep, apagar modulo.
- U2MODEbits.IREN=0; // Codificacion/decodificacion IrDA deshabilitado.
- U2MODEbits.RTSMD=1; // RTS en modo simple.
- U2MODEbits.UEN=0b00; // Tx/Rx habilitado, CTS/RTS deshabilitados.
- U2MODEbits.WAKE=0; // Wake-up deshabilitado.
- U2MODEbits.LPBACK=0; // Modo LoopBack deshabilitado.
- U2MODEbits.ABAUD=0; // Auto-Baud rate deshabilitado.
- U2MODEbits.RXINV=0; // Modo normal de pin RX, en reposo = 1.
- U2MODEbits.BRGH=BRGHigh; // Mode seleccionado en define.-
- U2MODEbits.PDSEL=0b00; // 8 bits- sin paridad.
- U2MODEbits.STSEL=0; // 1 bit de Stop.
- U2STAbits.UTXISEL1=1; // Interrupcion por transimision no usada.
- U2STAbits.UTXISEL0=1; // Interrupcion por transimision no usada.
- U2STAbits.UTXINV=0; // Pin Tx en reposo igual a 1.
- U2STAbits.UTXBRK=0; // Break deshabilitado.
- U2STAbits.URXISEL=0b00; // Interrumpir cuando se recibe un caracter.
- U2STAbits.ADDEN=0; // Auto-Address deshabilitado.
- U2STAbits.OERR=0; // Borramos bits de error por overflow.
- U2BRG =BRGVAL; // Baud Rate determinado en defines.
- IPC7bits.U2RXIP=0b01; // Fijamos nivel de prioridad.
- IFS1bits.U2RXIF=0; // Borramos flag.
- IEC1bits.U2RXIE=1; // habilitamos interrupcion por recepción.
- U2MODEbits.UARTEN=1;// Encendemos modulo.
- U2STAbits.UTXEN=1; // Transmision habilitada.*/
- KbhitUART=0;
- putsUART2(Texto);
- while(1){
- if(KbhitUART==1){
- KbhitUART=0;
- putcUART2(DataUART);
- }
- }
- }
domingo, 20 de marzo de 2016
COPYPASTE (p24fj128ga010)
Configuración UART más interrupción:
COPYPASTE (p24fj128ga010)
Configuración de timer 2y3 para formar timer de 32-bits, más interrupción:
- #include <p24fj128ga010.h>
- _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
- _CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS );
- /*#define FCY 20000000UL
- #include <libpic30.h>*/
- #include <timer.h>
- /* ***************************************************************** */
- void __attribute__((__interrupt__, __shadow__)) _T3Interrupt(void){
- LATDbits.LATD8=~LATDbits.LATD8; // Cambiamos de estado pin F2.-
- _T3IF = 0; //Borramos flag.
- }
- int main (int argc, char * argv[]){
- TRISD=0xF0FF;
- OpenTimer23(T23_ON & T2_IDLE_STOP & T2_GATE_OFF & T2_PS_1_1 & T2_SOURCE_INT,0x004C4B40);
- ConfigIntTimer23(T3_INT_PRIOR_1 & T3_INT_ON);
- WriteTimer23(0x00);
- while(1){
- }
- }
COPYPASTE (PIC24FJ128GA010)
Esta sección de mi BLOG es simple, pequeños programas plantilla para cualquier integrado. Copielo, peguelo, compilelo y transfieralo. (tecnica del jugar aprendiendo)
Titilar leds, modificación y utilización de delays en libpic30.h
Titilar leds, modificación y utilización de delays en libpic30.h
- #include <p24fj128ga010.h>
- _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
- _CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS );
- #define FCY 10000000UL
- #include <libpic30.h>
- /* ** Modificando en libpic30.h ** */
- /*
- #if !defined(FCY)
- extern void __delay_ms(unsigned long);
- extern void __delay_us(unsigned long);
- #else
- #define __delay_ms(d) __delay32( (unsigned long long) (d)*(FCY)/1000)
- #define __delay_us(d) __delay32( (unsigned long long) (d)*(FCY)/1000000)
- #define __delay_s(d) __delay32( (unsigned long) (d)*(FCY))
- #endif
- */
- int main (int argc, char * argv[]){
- TRISF=0xFFF3;
- LATFbits.LATF2=0;
- LATFbits.LATF3=0;
- while(1){
- LATFbits.LATF2=0;
- __delay_ms(500);
- LATFbits.LATF2=1;
- __delay_ms(500);
- }
- }
viernes, 4 de marzo de 2016
RTOS (Programa sencillo)
Saludos les dejo un programa interesante y muy sencillo de comprender la lógica de RTOS/CCS Pic.
#include <18F452.h>
#FUSES XT
#FUSES NOWDT
#FUSES PROTECT
#use delay(clock=4M)
#use RTOS(timer=0,minor_cycle=1ms)
#include <lcd.c>
// DEFINICIONES DE PIN A USAR PARA LOS SEMAFOROS
#define ON PIN_A0
#define A2 PIN_B0
#define V2 PIN_B1
#define R3 PIN_B2
#define A3 PIN_B3
#define V3 PIN_B4
#define R4 PIN_B5
#define A4 PIN_B6
#define V4 PIN_B7
#define R1 PIN_C4
#define A1 PIN_C5
#define V1 PIN_C6
#define R2 PIN_C7
// TAREAS
#task (rate=1ms,max=1ms)
void INICIO();
#task (rate=1ms,max=1ms,enabled=false)
void ROJO1();
#task (rate=10s,max=1ms,enabled=false)
void AMARILLO1();
#task (rate=2s,max=1ms,enabled=false)
void VERDE1();
#task (rate=6s,max=1ms,enabled=false)
void AMARILLO12();
void main()
{
setup_timer_0(RTCC_INTERNAL| RTCC_DIV_1);
rtos_run();
}
void INICIO()
{
if(input(ON))
rtos_enable(ROJO1);
}
void ROJO1()
{
rtos_disable(INICIO);
output_low(A1);
output_high(R1);
rtos_disable(ROJO1);
rtos_enable(AMARILLO1);
}
void AMARILLO1()
{
output_low(R1);
output_high(A1);
rtos_disable(AMARILLO1);
rtos_enable(VERDE1);
}
void VERDE1()
{
output_low(A1);
output_high(V1);
rtos_disable(VERDE1);
rtos_enable(AMARILLO12);
}
void AMARILLO12()
{
output_low(V1);
output_high(A1);
rtos_disable(AMARILLO12);
rtos_enable(ROJO1);
}
/*
SEGUNDO SEMAFORO
*/
#FUSES XT
#FUSES NOWDT
#FUSES PROTECT
#use delay(clock=4M)
#use RTOS(timer=0,minor_cycle=1ms)
#include <lcd.c>
// DEFINICIONES DE PIN A USAR PARA LOS SEMAFOROS
#define ON PIN_A0
#define A2 PIN_B0
#define V2 PIN_B1
#define R3 PIN_B2
#define A3 PIN_B3
#define V3 PIN_B4
#define R4 PIN_B5
#define A4 PIN_B6
#define V4 PIN_B7
#define R1 PIN_C4
#define A1 PIN_C5
#define V1 PIN_C6
#define R2 PIN_C7
// TAREAS
#task (rate=1ms,max=1ms)
void INICIO();
#task (rate=1ms,max=1ms,enabled=false)
void ROJO1();
#task (rate=10s,max=1ms,enabled=false)
void AMARILLO1();
#task (rate=2s,max=1ms,enabled=false)
void VERDE1();
#task (rate=6s,max=1ms,enabled=false)
void AMARILLO12();
void main()
{
setup_timer_0(RTCC_INTERNAL| RTCC_DIV_1);
rtos_run();
}
void INICIO()
{
if(input(ON))
rtos_enable(ROJO1);
}
void ROJO1()
{
rtos_disable(INICIO);
output_low(A1);
output_high(R1);
rtos_disable(ROJO1);
rtos_enable(AMARILLO1);
}
void AMARILLO1()
{
output_low(R1);
output_high(A1);
rtos_disable(AMARILLO1);
rtos_enable(VERDE1);
}
void VERDE1()
{
output_low(A1);
output_high(V1);
rtos_disable(VERDE1);
rtos_enable(AMARILLO12);
}
void AMARILLO12()
{
output_low(V1);
output_high(A1);
rtos_disable(AMARILLO12);
rtos_enable(ROJO1);
}
/*
SEGUNDO SEMAFORO
*/
¿Por q FREERTOS?
¿Sabías?
|
¿Por qué elegir FreeRTOS?
. "Es probablemente seguro decir en este punto que FreeRTOS pasa por más" revisión por pares "que cualquier otro RTOS disponible en el planeta lo he utilizado en varios proyectos - uno de los cuales era un entorno multiprocesador que utiliza más de 64 procesadores y . necesaria para hacer funcionar de forma fiable durante meses El núcleo RTOS tuvo un buen desempeño Tome FreeRTOS para dar una vuelta ".. - John Westmoreland
FreeRTOS es una opción libre de riesgo, proporcionando el mejor de los mundos: FreeRTOS es verdaderamente libre y apoyado , incluso cuando se utiliza en aplicaciones comerciales. La licencia de código abierto FreeRTOS no plantea ningún riesgo para su software propietario. Usted puede tomar un producto al mercado utilizando FreeRTOS sin ni siquiera hablar con nosotros, y mucho menos pagar ningún cargo, y miles de personas hacer precisamente eso. Si, en cualquier momento, que le gustaría recibir copia de seguridad adicional, o si su equipo legal requiere garantías adicionales por escrito o indemnización, entonces hay una sencilla ruta de actualización comercial de bajo costo. Su tranquilidad viene con el conocimiento que se puede optar por tomar la ruta comercial en cualquier momento que elija.
Aquí hay algunas razones por FreeRTOS es una buena opción para su próxima aplicación - FreeRTOS ...
- Proporciona una solución única e independiente para muchas arquitecturas diferentes y herramientas de desarrollo.
- Se sabe que es fiable. La confianza está asegurada por las actividades realizadas por el proyecto hermano SafeRTOS.
- Es rico en características y aún en fase de desarrollo activo continuo.
- Tiene un mínimo de ROM, RAM y el procesamiento de arriba. Típicamente, una imagen binaria kernel RTOS estará en la región de 6K a 12K bytes.
- Es muy simple - el núcleo del núcleo RTOS está contenida en sólo 3 archivos C . La mayoría de los muchos archivos incluidos en el archivo de descarga .zip se refieren únicamente a las numerosas aplicaciones de demostración.
- Es verdaderamente libre para su uso en aplicaciones comerciales (ver condiciones de la licenciapara más detalles).
- Viene con una portabilidad, desarrollo de la plataforma, o el servicio de desarrollo de aplicaciones si se requiere.
- Está bien establecida con una gran base de usuarios y cada vez mayor.
- Contiene un ejemplo pre-configurado para cada puerto. No hay necesidad de encontrar la manera de configurar un proyecto - sólo tiene que descargar y compilar!
- Tiene una excelente, vigilados y activo libre foro de soporte .
- Tiene la seguridad de que el soporte comercial es si se requiere disponibles.
- Proporciona una amplia documentación.
- Es muy escalable, simple y fácil de usar.
- FreeRTOS ofrece una alternativa más pequeña y más fácil el procesamiento en tiempo real para aplicaciones en las que eCOS, Linux embebido (o Linux de Tiempo Real) e incluso uCLinux no caben, no son apropiados o no están disponibles.
FreeRTOS lista de correo de anuncios
Puede mantenerse al día con anuncios FreeRTOS muy ocasionales conectándose a la lista de correo FreeRTOS. Los correos electrónicos son poco frecuentes y mantenerse cortas. Respetamos su privacidad, por lo que no proporcionan direcciones de correo electrónico de terceros. Cada correo electrónico enviado contiene instrucciones para cancelar la suscripción.
NUEVO: Usted también puede ahora seguir FreeRTOS en Twitter para las notificaciones instantáneas.
Suscribirse a:
Entradas (Atom)