Bonjour,
J'ai remarqué une différence de taille de mon sketch après compilation si j'utilise la libraire EEPROM de avr ou celle de arduino.
Je passe de 28474 (avec avr) à 28508 bytes (avec arduino).
Savez-vous pourquoi il y a cette différence ?
Bonjour,
J'ai remarqué une différence de taille de mon sketch après compilation si j'utilise la libraire EEPROM de avr ou celle de arduino.
Je passe de 28474 (avec avr) à 28508 bytes (avec arduino).
Savez-vous pourquoi il y a cette différence ?
Bonjour,
Shain:
J'ai remarqué une différence de taille de mon sketch après compilation si j'utilise la libraire EEPROM de avr ou celle de arduino.
Je passe de 28474 (avec avr) à 28508 bytes (avec arduino).Savez-vous pourquoi il y a cette différence ?
C'est trés simple, la librairie EEPROM arduino est écrite en C++ avec une classe "EEPROMClass" appelant les fonctions de la librairie EEPROM AVR.
Cela ajoute donc une portion de code en plus pour la création / gestion de l'objet C++.
La librairie EEPROM AVR utilise les registres directement elle est donc plus légère que la version arduino avec une couche de C++ par dessus ![]()
Pour donner une petite idée de l'inutilité de la librairie EEPROM arduino voici son code complet :
#include <avr/eeprom.h>
#include "Arduino.h"
#include "EEPROM.h"
uint8_t EEPROMClass::read(int address)
{
return eeprom_read_byte((unsigned char *) address);
}
void EEPROMClass::write(int address, uint8_t value)
{
eeprom_write_byte((unsigned char *) address, value);
}
EEPROMClass EEPROM;
C'est à ce demander si une simple macro #define n'aura pas suffit ...
Bonjour,
Ok, merci ![]()
Tu m'avais dit avant que les librairies en C++ prennent plus de place en fait.. j'avais zappé..
J'ai vu le code de la librairie arduino, c'est vrai qu'il n'y a pas vraiment d'utilité..
Qui plus est la "librairie" Wiring/Arduino, (c'est de l'héritage mot à mot de Wiring), ne retient que l'écriture/lecture octet par octet alors que les fonctions de l'avr-libc proposent en plus l'écriture/lecture par "mot" (2 octets) et par bloc (N octets).