Arduino Polska Forum
Obejście niepotrzebnego limitu rozmiaru szkicu - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Obejście niepotrzebnego limitu rozmiaru szkicu (/watek-obej%C5%9Bcie-niepotrzebnego-limitu-rozmiaru-szkicu)



Obejście niepotrzebnego limitu rozmiaru szkicu - quinty - 12-01-2019

Witam
używam płytki digispark z attiny85, najnowszej wersji programu arduino i sklejam z przykladów program do obsługi ds18b20 i OLED ssd1306.
Program wynikowy zajmuje 7KB i nie daje się skompilować przez limit 6KB, który wynika z tego, że z 8KB pamięci uC 2KB zajmuje bootloader micronucleus. Ja i tak nie używam bootloadera bo gotowego hexa chcę wgrać zewnętrznym programatorem. Niestety arduino nawet po wybraniu opcji "wgraj uzywając zewnętrznego programatora" wstrzymuje kompilację przez limit 6KB.

Pytanie moje brzmi jak obejść ten limit? Jest jakaś opcja globalna w arduino lub da się jakoś zedytować ustawienia samej płytki digispark?

Pozdrawiam, Marek.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - es2 - 12-01-2019

Wgrywaj HEX bez użycia szmacianego Arduino IDE mylnie nazywanego środowiskiem programistycznym.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - quinty - 12-01-2019

Tzn. ja i tak wgrywam hexy avrburnomat'enm bo arduino ma problemy z usbasp, ale klikałem tą opcję tylko po to żeby się hex wygenerował - myślałem, że w ten sposób ominie limit. Ale problem w tym, że kompilacja nie dochodzi do momentu generowania HEX.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - es2 - 13-01-2019

Coś mu się kojarzy, ze można wykorzystać przestrzeń FALSH przeznaczona na bootloader. Wyślij PW do @kaczakat. On dobrze zna IDE Arduino. Dziwię się nawet, czemu jeszcze się nim bawi, powinien dawno temu olać Arduino tym bardziej, że pisał już z użyciem AS7.

Swoja drogą, dlaczego wybrałeś tam mały uC? Mało RAM uniemożliwia umieszczenie całego bufora wyświetlacza w uC. Z mojego punktu widzenia wyklucza to już użycie tam małego uC. Jeśli program zajmuje 80% lub więcej dostępnej pamięci FLASH czy RAM trzeba wybrać większy bo jak zaczniesz modyfikować soft, to się nie zmieści. W swoich projektach staram się zmieścić w ok 50% pojemności największego uC z danej linii. Jak program działa na Tiny45 to zawsze masz możliwość wymiany uC na Tiny85. Twój projekt zajmuje prawie 90% FLASH a pewnie jest w nim dużo do dodania. Jeśli uważasz, że nie, pokaż kod a napiszę co nie jest zrobione a powinno być. Jak zrobisz to co brakuje, to pewnie 12k zajmie kod. Powinieneś więc użyć uC z 32kB FLASH. 2kB RAM wystarczy pewnie na styk, ja był wybrał coś z 4 lub lepiej 8kB RAM.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - kaczakat - 13-01-2019

Sposób wgrywania nic nie mówi Arduino IDE ile max może zająć program (pomimo iż wgrywanie kasuje bootloader, choć nie powinno - może tylko u mnie). Dodaj sobie do Arduino płytki DIY Attiny, Attiny Core lub Attiny Microcontrollers i wtedy możesz wykorzystać pełne 8kb w attiny85. Masz trzy do wyboru, w niektórych jest opcja bootlodera, w niektórych od razu dają 8kb. Niektóre płytki wymagają wyłączenia bootloadera - tu przynajmniej jak już jest taka opcja. W digispark bez bootloadera płytka przestaje być attiny digispark (obsługującą łącze USB), więc pewnie dlatego opcji wyłączenia bootlodera nie ma.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - quinty - 15-01-2019

@es2
Tak mały, bo mi się dużo wala, a docelowy projekt będzie jak najmniejszy (SOIC8).
Do tej pory pisałem w zwykłym C w MkClipse i limit 8KB do takich zastosowań był w zupełności wystarczający. To moje pierwsze podejście do Arduino bo w zwykłym C nie mogłem znaleźć biblioteki do tiny85+SSD1306. Te biblioteki specjalnie nie używają RAMu jako bufora (a przynajmniej jako pełnego) właśnie z tego powodu co podałeś - RAM jest tu za mały na pełny bufor 128x64.

Obczaiłem czemu się nie da zmienić tego limitu. W boards.txt w tych wbudowanych płytkach Uno, mini itp.. da się zmienić, bo plik mam na dysku możliwy do edycji. A Digispark jest zaciągany online i nie mogę znaleźć żeby lokalnie gdzieś tworzył swoje "boards.txt" możliwe do edycji.

@kaczakat
Piękne dzięki, Attiny Core to było to, rozwiazało problem i w dodatku mogę ustawić każda możliwą kombinację zegara i BODa, bomba. Musiałem tylko ręcznie osobno dodać biblioteki, które jakoś były wbudowane w repozytorium digisparka, chyba od 1wire.

A w opcjach wyboru płytki digisparka jest nawet opcja "NO USB", ale programista go tworzący musiał zapomnieć zmienić limitu szkicu.


RE: Obejście niepotrzebnego limitu rozmiaru szkicu - kaczakat - 15-01-2019

Jest opcja nousb ale raczej do czegoś innego, bo upload dalej jest zdefiniowany przez USB. Teraz to już bez znaczenia, nie jest łatwo to wytłumaczyć jak to zmieniać ręcznie w plikach, ale jak kiedyś będziesz potrzebował to dodatkowe definicje płytek są wgrywane albo w "moje dokumenty" i dalej w Arduino/hardware, albo w c:\Users\***\AppData\Local\Arduino15\packages\ . Digispark jest w tym drugim katalogu i ma też swój plik boards.txt. Rozumiem, że biblioteki MK nie pasują? Buahahaha... Witaj w wolnym świecie Arduino!