ATTiny85 & Oled Screen

Hello,

J'étais en train de test de flash un ATTIny85 avec mon Arduino mais j'ai été confronté à pas mal de souci sur l'upload et la compile...

Du coup je me suis fait un projet vierge et j'ai simplement mis ce bout de code :

#include <TinyWireM.h>
#include <Tiny4kOLED.h>

void setup() {
  oled.begin();
  oled.clear();
  oled.on();
  oled.setFont(FONT6X8);
}

void loop() {
  oled.setCursor(0, 0);
  oled.print("TEST");
}

Pourtant, même comme cela j'ai cette erreur :


FQBN: attiny:avr:ATtinyX5:clock=internal8
Using board 'ATtinyX5' from platform in folder: C:\Users\nanosss\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2
Using core 'arduino' from platform in folder: C:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Detecting libraries used...
C:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\nanosss\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\sketch\ArduinoISP.ino.cpp -o nul
Alternatives for TinyWireM.h: [TinyWireM@1.1.3]
ResolveLibrary(TinyWireM.h)
  -> candidates: [TinyWireM@1.1.3]
C:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\nanosss\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 -Ic:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\sketch\ArduinoISP.ino.cpp -o nul
Alternatives for Tiny4kOLED.h: [Tiny4kOLED@2.3.0]
ResolveLibrary(Tiny4kOLED.h)
  -> candidates: [Tiny4kOLED@2.3.0]
C:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\nanosss\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 -Ic:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM -Ic:\Users\nanosss\OneDrive\Documents\Arduino\libraries\Tiny4kOLED\src C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\sketch\ArduinoISP.ino.cpp -o nul
Using cached library dependencies for file: c:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM\TinyWireM.cpp
Using cached library dependencies for file: c:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp
Using cached library dependencies for file: c:\Users\nanosss\OneDrive\Documents\Arduino\libraries\Tiny4kOLED\src\Tiny4kOLED.cpp
Generating function prototypes...
C:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -IC:\Users\nanosss\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\nanosss\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2\variants\tiny8 -Ic:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM -Ic:\Users\nanosss\OneDrive\Documents\Arduino\libraries\Tiny4kOLED\src C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\sketch\ArduinoISP.ino.cpp -o C:\Users\nanosss\AppData\Local\Temp\3505269448\sketch_merged.cpp
C:\Users\nanosss\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\nanosss\AppData\Local\Temp\3505269448\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-Ic:\\Users\\nanosss\\OneDrive\\Documents\\Arduino\\libraries\\TinyWireM" "-Ic:\\Users\\nanosss\\OneDrive\\Documents\\Arduino\\libraries\\Tiny4kOLED\\src" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\sketch\\ArduinoISP.ino.cpp" -o "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\sketch\\ArduinoISP.ino.cpp.o"
Compiling libraries...
Compiling library "TinyWireM"
Using previously compiled file: C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\libraries\TinyWireM\USI_TWI_Master.cpp.o
Using previously compiled file: C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\libraries\TinyWireM\TinyWireM.cpp.o
Compiling library "Tiny4kOLED"
Using previously compiled file: C:\Users\nanosss\AppData\Local\Temp\arduino\sketches\D5AB8B005E9610E8E6F401BD7ABDE193\libraries\Tiny4kOLED\Tiny4kOLED.cpp.o
Compiling core...
Using precompiled core: C:\Users\nanosss\AppData\Local\Temp\arduino\cores\attiny_avr_ATtinyX5_cpu_attiny25,clock_internal8_a561900ebe72f218e8641e245290571a\core.a
Linking everything together...
"C:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=attiny25 -o "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.elf" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\sketch\\ArduinoISP.ino.cpp.o" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\libraries\\TinyWireM\\TinyWireM.cpp.o" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\libraries\\TinyWireM\\USI_TWI_Master.cpp.o" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193\\libraries\\Tiny4kOLED\\Tiny4kOLED.cpp.o" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/..\\..\\cores\\attiny_avr_ATtinyX5_cpu_attiny25,clock_internal8_a561900ebe72f218e8641e245290571a\\core.a" "-LC:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193" -lm
"C:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.elf" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.eep"
"C:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.elf" "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.hex"

Using library TinyWireM at version 1.1.3 in folder: C:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM 
Using library Tiny4kOLED at version 2.3.0 in folder: C:\Users\nanosss\OneDrive\Documents\Arduino\libraries\Tiny4kOLED 
"C:\\Users\\nanosss\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\nanosss\\AppData\\Local\\Temp\\arduino\\sketches\\D5AB8B005E9610E8E6F401BD7ABDE193/ArduinoISP.ino.elf"
Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.
Sketch uses 2682 bytes (130%) of program storage space. Maximum is 2048 bytes.
Global variables use 84 bytes (65%) of dynamic memory, leaving 44 bytes for local variables. Maximum is 128 bytes.
text section exceeds available space in board

Compilation error: text section exceeds available space in board

Je comprend alors qu'il s'agit bien un problème de place mais je ne comprend pas pourquoi certaines personnes sur internet y arrivent avec simplement ce code...

Comment faire ?
Merci

Bonsoir
Deja on sait pas si c est un oled spi ou i2c
Ni la taille ecran
Moi j eviterais toutes les librairies qui reservent un buffer ecran

Il est relativement facile de trouver des exemples sans bufferiser l ecran qui te bouffe toute la memoire.

Il faudra quand meme s assurer que le bon écran avec la bonne taille est choisi

Recherche pixoled et twioled qui fonctionne tres bien pour i2c

Voir exemple sur ma musicbox avec un uno mais c est transposable en attiny

En effet désolé j'ai oublié de préciser, voici mon écran :slight_smile:

Ecran OLED Blanc 0,96" 128x64 Graphique I2C SSD1306

Ah super, je vais regarder ton projet, merci !

Regarde sur google pour attiny moi c est plus 328 sans buffer
Mais les fonction d affichage des bitmaps peuvent peut etre t inspirer
J ai cherché longtemps avec un tas de post qui pretendent qu on peu pas sans buffer faire du bitmap
La preuve que si

Salut. Le message ne concerne pas la partie RAM, mais la partie code (section TEXT), donc rien à voir avec un buffer.

Bonjour,

Tu es sur que tu as bien sélectionné attiny85 et non attiny25? Car un attiny85 a 8k de flash.

Je utilisé cette config :
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Qui me propose de choisir entre version X5 ou x4

Et j'ai acheté ça :
https://a.aliexpress.com/_EJtHfwB

Si tu sélectionnes ATtiny 25/45/85 comme type de carte, il faut sélectionner ensuite :
Processeur : ATtiny85

Parfait, la configuration ne s'était pas sélectionnée correctement. Merci !

Autre petite question, étant donné que mon code que j'ai fais pour ma board Arduino doit être différent pour mon ATTiny85 (par exemple je dois utiliser TinyWire et d'autre librarie pour mon Tiny85), comment rendre facile le test ET le déploiement sur l'ATTiny?

Car actuellement je suis obligé de faire un certain montage pour upload, et un autre pour test.
Est ce que je peux tout brancher en même temps pour upload puis test à la volée ?
Ou existe t'il un moyen d'utiliser toutes ces librairies pour mon ATMega328 ?

J'ai ce genre d'erreur par exemple :

c:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'void USI_TWI_Master_Initialise()':
c:\Users\nanosss\OneDrive\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:64:3: error: 'PORT_USI' was not declared in this scope

Tu veux parler de pouvoir compiler le même code source pour ATTINY et pour ATMEGA328 ?

Entre autre, mais je sais que l'ATTIny85 n'utilise pas les mêmes références de certaines lib que l'ATMEGA, par exemple le Wire qui est TinyWire sur ATTiny85 ou encore le SSD1306 qui ne peut pas être utilisé sur les deux.

Donc j'en conclus que je dois avoir un code différent entre les deux => ce n'est pas un souci
Le souci serait plutot de pouvoir upload facilement mon code sur mon AT85 sans avoir a brancher et débrancher toute mon arduino juste pour test

En gros que mon AT85 soit plug sur mon arduino pour pouvoir la flash facilement ET que le reste soit branché directement sur ma breadboard. Le souci c'est que je ne sais pas si ca poserait problème d'avoir tout de connecté en même temps

/opt/arduino-1.8.19/portable/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-gcc -c -g -x assembler-with-cpp -flto -MMD -mmcu=atmega328p -
DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR
-I/opt/arduino-1.8.19/portable/packages/arduino/hardware/avr/1.8.6/cores/arduino -I/opt/arduino-1.8.19/portable/packages/arduino/hardware/avr/1.8.6/variants/eightanaloginputs -I/home/riton/Arduino/libraries/MySensors -I/opt/arduino-1.8.19/portable/packages/arduino/hardware/avr/1.8.6/libraries/SPI/src -I/opt/arduino-1.8.19/libraries/Adafruit_SHT31 -I/opt/arduino-1.8.19/portable/packages/arduino/hardware/avr/1.8.6/libraries/Wire/src /home/riton/Arduino/libraries/MySensors/MyASM.S -o /tmp/arduino_build_795400/libraries/MySensors/MyASM.S.o

Il faut utiliser les directives de compilation. Sur la ligne de commande de compilation on en voit quelques unes, en particulier -DARDUINO_ARCH_AVR, ce qui permet de faire ceci :

#ifdef ARDUINO_ARCH_AVR
// code AVR
#else
// code ATTINY
#endif

Pour ce qui est des branchements pour le chargement du code et le test, je ne vois pas comment tu pourrais partager les broches dédiées au chargement avec des modules ou composants externes.

Ca marche, oui en effet ca me parait compliqué

Par contre j'ai trouvé ceci :

Ca me parait pas mal si ca peut éviter de tout débrancher et rebrancher à chaque fois