Home \ Help \ Search \ Login RSS

Welcome, Guest. Please Login

This forum is now READ-ONLY! Please visit http://forum.wiring.co/ for the new forum.

Wiring ForumProgramming Questions & HelpLibrary writers › virtualWire Library

Page Index Toggle Pages: 1
virtualWire Library (Read 12389 times)
07/12/09 at 07:36:04

ivandjl   Offline
YaBB Newbies

Posts: 4
*
 
Hola a todos, no se si este permitido hablar en español, pero me urge, usar esta libreria con wiring.

Se que el problema esta al momento de definir el timer en esta linea de VirtualWire.cpp
Code:
void vw_setup(uint16_t speed)
{
    // Calculate the OCR1A overflow count based on the required bit speed
    // and CPU clock rate
    uint16_t ocr1a = (F_CPU / 8UL) / speed;

#ifndef TEST
    // Set up timer1 for a tick every 62.50 microseconds
    // for 2000 bits per sec
    TCCR1A = 0;
    TCCR1B = _BV(WGM12) | _BV(CS10);
    // Caution: special procedures for setting 16 bit regs
    OCR1A = ocr1a;
    // Enable interrupt
#ifdef TIMSK1
    // atmega168
    TIMSK1 |= _BV(OCIE1A);
#else
    // others
    TIMSK |= _BV(OCIE1A);
#endif

#endif

    // Set up digital IO pins
    pinMode(vw_tx_pin, OUTPUT);
    pinMode(vw_rx_pin, INPUT);
    pinMode(vw_ptt_pin, OUTPUT);
    digitalWrite(vw_ptt_pin, vw_ptt_inverted);
} 



la libreria se puede descargar de http://www.open.com.au/mikem/arduino/

[Version 1.3]
http://www.open.com.au/mikem/arduino/VirtualWire-1.3.zip

Creo si no estoy mal, se puede solucionar con timerAttach(); solo que no se como usarlo o como definir el timer en wiring.

Mas adelante en el mismo archivo esta esta linea la cual deveria ser una funcion que se pasara al timerAttach(); envez de usar SIGNAL

Code:
SIGNAL(TIMER1_COMPA_vect)
{
    vw_rx_sample = digitalRead(vw_rx_pin);

    // Do transmitter stuff first to reduce transmitter bit jitter due
    // to variable receiver processing
    if (vw_tx_enabled && vw_tx_sample++ == 0)
    {
        // Send next bit
	// Symbols are sent LSB first
        // Finished sending the whole message? (after waiting one bit period
	// since the last bit)
        if (vw_tx_index >= vw_tx_len)
	{
	    vw_tx_stop();
	    vw_tx_msg_count++;
	}
        else
        {
	    digitalWrite(vw_tx_pin, vw_tx_buf[vw_tx_index] & (1 << vw_tx_bit++));
	    if (vw_tx_bit >= 6)
	    {
	        vw_tx_bit = 0;
                vw_tx_index++;
	    }
        }
    }
    if (vw_tx_sample > 7)
	vw_tx_sample = 0;

    if (vw_rx_enabled)
	vw_pll();
} 


 
IP Logged
 
Reply #1 - 07/12/09 at 18:50:18

ivandjl   Offline
YaBB Newbies

Posts: 4
*
 
Esto es lo que he modificado obteniendo datos pero rara vez (como 1 en 10 intentos que he hecho, y solo recibo como maximo 3 o 4 paquetes y despues deja de recibir.)


VirtualWire.cpp
Code:
	timer1Init();

	TIMSK &= ~_BV(OCIE1A);

        TCCR1A = 0;
        TCCR1B = _BV(WGM12) | _BV(CS10);

	timerAttach(TIMER1OUTCOMPAREA_INT, vw_wiring);

	OCR1A = ocr1a;

	TIMSK |= _BV(OCIE1A); 



Unas lineas mas abajo

Code:
//SIGNAL(TIMER1_COMPA_vect)
void vw_wiring()
{ 



en los headers

virtualWire.h
Code:
	extern void vw_wiring();
	extern void timer1Init(void);
	extern void timerAttach(uint8_t, void(*)(void)); 




 
IP Logged
 
Reply #2 - 07/16/09 at 03:03:28

barragan   Offline
YaBB Administrator

Posts: 939
*****
 
Claro que si se permite, voy a revisar lo que mandaste con cuidado y regreso.
 
IP Logged
 
Reply #3 - 07/23/09 at 03:56:09

ivandjl   Offline
YaBB Newbies

Posts: 4
*
 
Gracias barragan por la respuesta, el problema ya esta solucionado, con las modificaciones que hice en el codigo en el post anterior, era unicamente un problema electronico.

Igualmente gracias por el interes.
 
IP Logged
 
Reply #4 - 07/23/09 at 04:02:49

barragan   Offline
YaBB Administrator

Posts: 939
*****
 
Si la conversión funcionó bien, podemos agregar la libraria a la distribución de Wiring como contribución tuya.
Un cordial saludo.
 
IP Logged
 
Reply #5 - 07/23/09 at 15:24:50

ivandjl   Offline
YaBB Newbies

Posts: 4
*
 
Me parece,  en tal caso como entrego la libreria, que se debe hacer.
 
IP Logged
 
Reply #6 - 07/23/09 at 17:04:56

barragan   Offline
YaBB Administrator

Posts: 939
*****
 
Simplemente enviala comprimida en un zip, en la parte de licencia agregamos tu nombre como modificador de la libreria original para hacerla funcionar con Wiring y eso es todo. Puedes mandarmela por correo a hbarragan [at] uniandes.edu.co
 
IP Logged
 
Page Index Toggle Pages: 1