VirtualWire e ATmega8, cattivi amici

Ciao a tutti, dopo molte ore trascorse a provare e a nominare invano il nome di tutte le divinità esistenti ho scoperto che la libreria virtualWire non funziona sugli ATmega8.
Sto giocando con dei moduli radio 433 MHz, di fatto con gli ATmega8 non ne vogliono proprio sapere di comunicare.
Ho provato anche diverse frequenze 16, 8, 1 MHz per il micro ma il risultato non cambia.
L'IDE compila senza problemi gli sketch.

Ho testato infine gli stessi sketch con un ATmega328 a 1MHz e tutto funziona bene.

Questo post non è la solita richiesta di aiuto, metto gli ATmega328 e via... ho il sangue abbastanza avvelenato stasera :slight_smile:
Spero che queste informazioni possono evitare qualche incazzatura a qualcuno in futuro... se sapete perchè non va comunque fa sempre piacere :sweat_smile:

Hai un link alla citata lib? Magari dandogli un'occhiata si riesce a capire se l'adattamento al'Atmega8 è fattibile oppure no.

L'ho presa qui

Dice anche che è compatibile con gli ATmega8 ma non riesco proprio a ottenere un minimo di comunicazione con quei micro.

Ho dimenticato di dire che nelle prove stavo usando l'IDE 022, se può servire posso anche fare un ultimissimo tentativo con l' 1.01

pelletta in base alla tua esperienza confermi le distanze raggiungibili ?
nella pagina che hai lincato dice che gia' a 6 metri (in un ufficio), nonostante l'uso di un antenna da 13cm, la comunicazione e' corrotta

e senza antenna ?

Non mi risultano dati corrotti.
Con uno spezzone di filo di 15 cm per antenna su entrambi i moduli (ricevente e trasmittente) ho passato tranquillamente 4 piani.
Senza antenna devo ancora vedere quanto coprono

La lib pare settare correttamente i registri per Atmega8, per lo meno da una rapida occhiata.
Sicuramente è scritta per supportare l'IDE 002x dato che carica il file wiring.h e non Arduino.h, quindi la prova con l'IDE 1.0 non dovrebbe neanche compilare lo sketch.

Tornando alla lib, vedo che comunque qualcuno l'ha usata con gli Atmega8 con successo:
http://www.robertoinzerillo.com/wordpress/?p=74

Lì hanno un Atmega8A, ma non dovrebbe cambiare nulla rispetto all'Atmega8 se non i consumi leggermente minori.

Non so che dire... a me non funzionano.
Ho visto il codice che usa per trasmettere ed è lo stesso che ho io.
Appena ho un ritaglio di basetta faccio una schedina per l'ATmega8A, ce l'ho solo in package qfn e non posso testarlo su breadboard al momento

non hai qualcosa per verificare i valori che escono dal pin? forse addirittura con un arduino usando gli interrupt on change e bufferizzando i tempi di cambio... ovviamente anche le richieste dal mini dovreanno essere intervallate il più possibile.

ecco il codice (non testato, ma compila)

/*
Logical state analizer by Lesto @ www.arduino.cc/forum
*/
const byte arraySize = 128;//must be power of 2
const byte indexJump = 256/arraySize; //we will use this index as increment to play with overflow!

volatile uint32_t buffer[arraySize];
volatile uint8_t index = 0;
volatile uint8_t toPrint = 0;

uint8_t print_index = 0; 

void setup(){
  Serial.begin(115200);
  Serial.println("Remeber first result is invalid and max precision is 4microsec, 250kHz");
  attachInterrupt(0, countTime, CHANGE);//0 is pin 2 on arduino uno, ethernet, mega; 3 on Leonardo; 0 on due
}

void loop(){
  while(print_index != index){
    if (toPrint > arraySize){
      Serial.println("There is too much data for buffer size, some data is lost forever");
    }
    Serial.println(buffer[print_index]-buffer[print_index-indexJump]); //first result is invalid
    Serial.flush();
    print_index+=indexJump;
    toPrint--;

  }
}

void countTime(){
  buffer[index]=micros();
  index += indexJump;
  toPrint++;
}

poichè il 1wire lavora in millisecondi la precisione e la velocità seriale non dovrebbero essere un rosso problema. 1-Wire - Wikipedia

ovviamente poi devi confrontare i valori misurati con il vero arduino

Lesto che centra 1wire? :roll_eyes:

ehm ho confuso virtualWire e 1Wire.. BTW quei moduli funzionano normalmente a 9600baud, il che non dovrebbe essere un grosso problema SE le comunicazioni sono inframezzate