Menu Principal

Joomla Slide Menu by DART Creations

Comunicacion Inalambrica QE8 y JM8 parte 2

Valoración de los usuarios: / 1
PobreEl mejor 
Índice de artículos
Comunicacion Inalambrica QE8 y JM8 parte 2
Receptor JM8
Software C#
Todas las páginas

Seguimos con la descripción del programa, en el archivo 1_wire.c se describen todas las funciones, debido a su tamaño, no lo pondré directamente, pero estará como archivo adjunto para poder descargarlo. Aquí una parte del programa, donde se describen las funciones para escribir y leer un bit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*****************************************************************************
**
** unsigned char read_bit(void)
** reads a bit from the one-wire bus. The delay
** required for a read is 15us
*****************************************************************************/
 
char read_bit(void){
 
char i;
DQ_TX=0; //
delay_1us(1);
DQ_TX=1;
delay_1us(16);//delay for 16 us
i=DQ_RX;
return i;
}
 
 
/*****************************************************************************
**
** unsigned char write_bit(void)
** writes a bit to the one-wire bus, passed in bitval.
*****************************************************************************/
 
void write_bit(char bit){
if(bit){
 
DQ_TX=0;
delay_1us(2); //delay for 2 us
DQ_TX=1;
delay_1us(30);
 
}else{
DQ_TX=0;
delay_1us(30);//delay for 30us
DQ_TX=1;
delay_1us(2);
 
}
 
}
 

El programa en main funciona de la siguiente manera, cuando se genera una interrupción en RTC cada dos segundos, el microcontrolador sale del estado STOP, o dormido, para leer el sensor y mandarlo por el puerto SCI al modulo RF.

1
2
3
4
5
6
void interrupt VectorNumber_Vrtc rtc_isr(void){
RTCSC_RTIF=1;
LED=~LED;
flag_tick=1;
}
 

Y dentro del ciclo for(;;) tenemos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
for(;;) {
 
 
 
 
if(flag_tick){
 
 
RTCSC_RTIE=0; //DISABLE INTERRUPT RTC
flag_tick=0;
ENABLE_RF=HIGH_POWER;
delay_ms(500); // si estamos utilizando un mosfet para conmutarlo, sino es el caso, mejor borrarlo
temperature= Read_Temperature();//function for only one device on net
 
send_char_RF('T');
send_char_RF('1');
send_char_RF(temperature);
send_char_RF(ENTER);
delay_ms(500);
ENABLE_RF=LOW_POWER;
RTCSC_RTIE=1; //ENABLE INTERRUPT RTC
 
 
STOP;
 
}

En el diagrama se describe mejor como esta el programa:

 

Un inconveniente que tuve, fue que el QE8 solo tiene 512bytes en RAM, por lo tanto, como la libreria del sensor DS18S20 ocupa bastante memoria, tuve que borra el sector de la RAM ZERO para hacer un direccionamiento directo, asi quedo el archivo project.prm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* This is a linker parameter file for the mc9s08qe8 */
 
NAMES END /* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */
 
SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */
 
    RAM                      =  READ_WRITE   0x060 TO 0x025F;
    ROM                      =  READ_ONLY    0xE000 TO 0xFFAD;
    ROM1                     =  READ_ONLY    0xFFC0 TO 0xFFCD;
 /* INTVECTS                 =  READ_ONLY    0xFFCE TO 0xFFFF; Reserved for Interrupt Vectors */
END
 
PLACEMENT /* Here all predefined and user segments are placed into the SEGMENTS defined above. */
    DEFAULT_RAM,                        /* non-zero page variables */
                                        INTO  RAM;
 
    _PRESTART,                          /* startup code */
    STARTUP,                            /* startup data structures */
    ROM_VAR,                            /* constant variables */
    STRINGS,                            /* string literals */
    VIRTUAL_TABLE_SEGMENT,              /* C++ virtual table segment */
    DEFAULT_ROM,
    COPY                                /* copy down information: how to initialize variables */
                                        INTO  ROM; /* ,ROM1: To use "ROM1" as well, pass the option -OnB=b to the compiler */
 
 
END
 
STACKSIZE 0x50
 
VECTOR 0 _Startup /* Reset vector: this is the default entry point for an application. */

 



Escribir un comentario

No agredir a los demás compañeros
Evitar comentarios racistas o insultantes


Código de seguridad
Refescar

Buscador ThinkChip

Ingresar

¿Deseas apoyarme?

Enter Amount:

Distribuidores

Banner

Más allá de la ciencia

1En el principio creó Dios los cielos y la tierra. 2Y la tierra estaba desordenada y vacía, y las tinieblas estaban sobre la faz del abismo, y el Espíritu de Dios se movía sobre la faz de las aguas.

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterToday40
mod_vvisit_counterYesterday161
mod_vvisit_counterThis week377
mod_vvisit_counterLast week579
mod_vvisit_counterThis month717
mod_vvisit_counterLast month1863
mod_vvisit_counterAll days2580

We have: 1 guests, 2 bots online
Your IP: 38.107.191.102
 , 
Today: Sep 08, 2010