Show Posts
Pages: [1]
1  Forum 2005-2010 (read only) / Troubleshooting / Re: Software serial in 04 on: May 11, 2006, 05:23:41 am
Same question for me.

I've found some interesting files in Arduino libraries, like "uartsw.c" and "uartswconf.h". But no way to use them in my program for the moment.

Any idea?
2  Forum 2005-2010 (read only) / Français / Re: Une 2ème liaison série? on: May 10, 2006, 11:45:32 am
En fait, mon problème est que j'ai trouvé dans les lib d'Arduino les fichiers "uartsw.h" et "uartsw.c", qui sont bien prévu pour émuler une liaison série sur un port quelconque (port à configurer dans "uartswconf.h"). Mais je ne sais pas du tout comment les utiliser dans mon sketch.
J'ai essayé avec des #include, sans succès pour l'instant. Cela vient peut-être aussi du fait que je ne suis pas très à l'aise avec le C/C++ et que c'est mon premier projet sous Arduino ...  smiley-sad
3  Forum 2005-2010 (read only) / Français / Une 2ème liaison série? on: May 09, 2006, 09:38:54 am
Bonjour,

Je suis un nouvel utilisateur d'Arduino (merci Cristina  smiley-wink ) et j'aurais besoin de vos connaissances pour utiliser simultanément 2 liaisons série sur une même plaque.
J'ai pu voir sur le forum espagnol que la version 0004 d'Arduino doit permettre d'utiliser n'importe quel port numérique pour faire une liaison série grace à une émulation au niveau logiciel, et cela en plus de la liaison série existante. Malheureusement, en regardant la doc, on ne peut que spécifier la vitesse de transfert avec Serial.begin(speed) mais pas le port.

J'ai déjà pensé à l'autre solution qui serait de n'utiliser qu'une seule liaison série et de switcher régulièrement entre les destinations. Mais il me semble que cela rendrait beaucoup (oui, beaucoup!) plus complexe le fonctionnement de mon projet.

Est-ce que quelqu'un a déjà tenté cela?

Merci pour votre aide,

Antonio
4  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: serial on different pins than 0 or 1 on: May 19, 2006, 10:37:08 am
Finally, Fabrice and I got something quite interesting. The previous code for software Rx didn't work for us. So we changed some things (don't ask us why it works now, we don't really know ...).

______                                      _________                ______
|         |         __________          |               |              |          |
| PC1  |-------|  MAX233  |--------|  Arduino  |-----------|  PC2  |
|_____|         |_________|          |________|              |______|

Our PC1 serial Tx is connected on our new software Rx (pin 6) through a MAX233 (to switch from RS232 to TTL). Arduino is connected to PC2 with the classical hardware serial link.
When I type a text in a hyperterminal on PC1, it is received by Arduino and sent back on PC2 hyperterminal.

It works for a typed text, but not yet by sending a text file.  

Here is the modified software Rx code:

Code:
#define BAUDRATE 9600

// the width of a single bit of serial data in microseconds
// in each second (1000000 microseconds) there are a number of bits equal
// to the baud rate (e.g. 9600), so each bit lasts for 1000000 / baudrate
// microseconds
int width = 1000000 / BAUDRATE;
int fudge = -25;
unsigned int val = 0;
int count = 0;
int state = 0;

int rx = 6;

void setup() {
  pinMode(rx,INPUT);
  digitalWrite(13,HIGH);
  beginSerial(BAUDRATE);
}

void loop() {
  int offset;
  boolean error = true;

  // one byte of serial data (LSB first)
  // ...--\    /--\/--\/--\/--\/--\/--\/--\/--\/--...
  //       \--/\--/\--/\--/\--/\--/\--/\--/\--/
  //      start  0   1   2   3   4   5   6   7 stop

  while (digitalRead(rx));

  // frame start indicated by a falling edge and low start bit
  // jump to middle of start bit
  //delayMicroseconds(width / 2 + fudge);

  // confirm that this is a real start bit, not line noise
  if (digitalRead(rx) == LOW) {
    delayMicroseconds(width/2);
    
    for (offset = -1; offset < 8; offset++) {
      // jump to middle of next bit
        val |= (digitalRead(rx) << offset);
      delayMicroseconds(width + fudge);
    }

    // check stop bit is high
    delayMicroseconds(width + fudge);
    if (digitalRead(rx) == HIGH) {
      error = false;
    }

    Serial.print(val,BYTE);
    val = 0;

  }
}

It seems to be very sensitive to time delay. As soon as you add some code, the pin value can be sampled at a wrong instant.

Antonio
5  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: serial on different pins than 0 or 1 on: May 18, 2006, 10:21:10 am
Hi everybody,

I have the same question as Tof, but in my case, I need to have 2 simultaneous serial connections. The previous code can help me to send data on a second serial line, but there is still the problem to receive data on the second serial connection.
Mellis, you talked about libraries that provide a software serial, as far as there is an unused hardware timer. Is it possible to add a second timer to Arduino (for example on an digital pin) and then use it for the software serial?

Antonio
Pages: [1]