130-Com série Attiny861
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