Wiring Forum
http://wiring.org.co/cgi-bin/yabb/YaBB.pl
Programming Questions & Help >> Library writers >> virtualWire Library
http://wiring.org.co/cgi-bin/yabb/YaBB.pl?num=1247384164

Message started by ivandjl on 07/12/09 at 07:36:04

Title: virtualWire Library
Post by ivandjl on 07/12/09 at 07:36:04
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();
}


Title: virtualWire Library
Post by ivandjl on 07/12/09 at 18:50:18
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));




Title: Re: virtualWire Library
Post by barragan on 07/16/09 at 03:03:28
Claro que si se permite, voy a revisar lo que mandaste con cuidado y regreso.

Title: Re: virtualWire Library
Post by ivandjl on 07/23/09 at 03:56:09
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.

Title: Re: virtualWire Library
Post by barragan on 07/23/09 at 04:02:49
Si la conversión funcionó bien, podemos agregar la libraria a la distribución de Wiring como contribución tuya.
Un cordial saludo.

Title: Re: virtualWire Library
Post by ivandjl on 07/23/09 at 15:24:50
Me parece,  en tal caso como entrego la libreria, que se debe hacer.

Title: Re: virtualWire Library
Post by barragan on 07/23/09 at 17:04:56
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

Wiring Forum » Powered by YaBB 2.5 AE!
YaBB Forum Software © 2000-2010. All Rights Reserved.