bus of attiny85, in softserial, get data from all when powerup bus

hello everyone
i have an hw setup this way:
master- attynyA–attinyB–attyniC…
rx - tx rx–tx rx–tx rx-…
power - power --power-- power-…

legend: – represent conections

when power up the bus i pretend to get all id of all attynis in the bus like: ABC, i have a field in the data for the position that increment everytime an attiny forward the data. i burn hfuse to use rsetpin as i/o, and the id of the attiny is set by and internal hex value(high nibble) and 4pins input solder(low nibble)

the code: (sorry i dnt know how to put in code type cytation)

#include <SoftwareSerial.h>

SoftwareSerial s(4, 3); // RX, TX
String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete
const int bit0 = 0;//pin
const int bit1 = 1;//pin
const int bit2 = 2;//pin
const int bit3 = 5;//pin

int id = 0x0A; //high nibble id
char start = ';';//data starter
char fim = '@';//data ender
void setup()
  pinMode(bit0, INPUT);
  pinMode(bit1, INPUT);
  pinMode(bit2, INPUT);
  pinMode(bit3, INPUT);
//get id from hw
  id = id << 1;
  id = id | digitalRead(bit0);
  id = id << 1;
  id = id | digitalRead(bit1);
  id = id << 1;
  id = id | digitalRead(bit2);
  id = id << 1;
  id = id | digitalRead(bit3);
//id look like 0xAy- where y depende on hw 
  // Serial.println(id,HEX);
  delay(100);//start-up time will be increased to 14CK + 4 ms because hfuse

int envia = 1;//one time execution validator
void loop() {
  if (envia) {//one time execute -when start up
    //get and print own id
    s.print(id, HEX);
//data send is ";Ay;0@"
    envia = 0;//executed

  serialEvent(); //call the function
  // print the string when a newline arrives:
  if (stringComplete) {
   int colonPosition = inputString.indexOf(',');
//get char in data received on position validator
//incret«ment char value, as it start 0 (1st sender) it increment to 1 when pass 1st attiny..2 when pass 2nd attiny...
    char n = inputString.charAt(colonPosition + 1);
    inputString.setCharAt(colonPosition + 1, n);
//resend received data whith the position validator incress
    inputString = "";
    stringComplete = false;

  SerialEvent occurs whenever a new data comes in the
 hardware serial RX.  This routine is run between each
 time loop() runs, so using delay inside loop can delay
 response.  Multiple bytes of data may be available.
void serialEvent() {
  while (s.available()) {
    // get the new byte:
    char inChar = (char)s.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;

as all the bus start at same time the attiny dnt handle the received data vs own data to send.
if i connect one at time it works as expeted, if serie already connected and powerup bus—breaks…

thanks in advance
grettings from portugal,

attachs: schematic, and tipycal assembly

slave.pdf (9.78 KB)

i get the problem : bitbang serial (softserial) cant handle receive and transfer apening at same time .. i tested it with arduino uno before going to attiny85 and it works, the major diference is the kind of serial used..
...changing to attiny841...

but still the question:
power up
launch timmer randon time (mas 200ms)
receive data(pause timmer), process, send(play timmer)
timmer goes out
send own data

when in line the two cases:

  1. last one 'll dnt get data, so timme out
  2. midle ones 'll receive data from the first to timme out