Communication série Attiny861



Voici commet avoir une communication série avec un Attiny861 sans avoir d'UART. C'est un UART soft.


Installation des fichiers Cores:


En premier il faut installer les fichier pour que l'attiny soit reconnu par IDE Arduino.

Télécharger les fichiers sur le site https://github.com/TCWORLD/ATTinyCore ou ici.

Décompresser l'archive.


Installer les fichiers du répertoire tiny dans le répertoire C:\Users\<XXX>\Documents\Arduino\hardware . Dans mon cas C:\Users\Christophe\Documents\Arduino\hardware. J'ai installé les fichiers dans le répertoire Tiny2 car j'ai déjà installé d'autre fichier hardware pour les autres attiny.




Raccorder votre programmateur à l'Attiny861 ou votre Arduino voir chapitre Programmation des Attiny


USBASP          Attiny861

2  5V               5        

10 GND            6

7 (SCK)            3

9 (MISO)          2

1 (MOSI)          1

5 (RESET)       10


ArduinoISP


RESET:      10

MOSI:        11

MISO:        12

SCK:         13


Chargement du bootloader dans l'Attiny861:


Ouvrir IDE Arduino. Choisir le type de carte. Attiny861 @ 1Mhz



Puis outils et Graver la séquence d'initialisation.


Charger le programme suivant dans l'Attiny:


int i=0; //initialisation de la variable i

void setup() {

 //OSCCAL = 170; //Clibration de l'oscillateur

 // Initialisation de la liaison serie

 Serial.begin(4800);

 OSCCAL  = i;    // Calibration à 0

}


void loop() {

 if (Serial.available() > 0) { // si des données entrantes sont présentes

     serialEvent();

    }

}

//Fonction pour la lecture de 32 Caratères

void serialEvent() {

char Buffer[32] = ""; //Initialisation du buffer

i++;

OSCCAL  = i;

int x=0;

while (Serial.available()>0){ //lecture si caractere present

Buffer[x]=Serial.read();

x++;

}


Serial.println(Buffer); // envois les caracteres recu

Serial.println("Valeur oscillateur:");

Serial.print(i);    // Valeur de l'oscillateur

}


Programme ici


Dans votre Arduino Uno vous devez avoir aucun programme. Pour cela charger:


void setup() {                

}


void loop() {

}



Raccordement entre l'Attiny et l'Arduino:



Pins

Attiny          Arduino

11               0               RX                    

12               1               TX


Ouvrir le moniteur série et régler la vitesse sur 4800:

Appuyer sur entrée.



Continuer à appuyer sur entrée car cela va permettre de calibré oscillateur.



On se rapproche de la bonne valeur....



Envoyer maintenant un texte de moins de 32 caractères.Exemple azerty azerty azerty azerty azerty



Recommencer à l'envoyer et attendre que le message soit exactement le même.


Valeur dans mon cas entre 164 et 170.



Je vais prendre 167 pour la valeur du calibrage de l'oscillateur.


Modifier le programme de l'Attiny:


//int i=0; //initialisation de la variable i

void setup() {

 OSCCAL = 167; //Calibration de l'oscillateur

 // Initialisation de la liaison serie

 Serial.begin(4800);

// OSCCAL  = i;    // Calibration à 0

}


void loop() {

 if (Serial.available() > 0) { // si des données entrantes sont présentes

     serialEvent();

    }

}

//Fonction pour la lecture de 32 Caratères

void serialEvent() {

char Buffer[32] = ""; //Initialisation du buffer

// i++;

//OSCCAL  = i;

int x=0;

while (Serial.available()>0){ //lecture si caractere present

Buffer[x]=Serial.read();

x++;

}


Serial.println(Buffer); // envois les caracteres recu

//Serial.println("Valeur oscillateur:");

//Serial.print(i);    // Valeur de l'oscillateur

}


Programme ici.

Et le charger dans l'Attiny.


Faire un test avec le moniteur série:




Mise à jour 20/04/2014

Créé avec HelpNDoc Personal Edition: Écrire des livres électroniques ePub pour l'iPad