• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Obejście niepotrzebnego limitu rozmiaru szkicu
#1
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.
 
Odpowiedź
#2
Wgrywaj HEX bez użycia szmacianego Arduino IDE mylnie nazywanego środowiskiem programistycznym.
Nie masz oscyloskopu, analizatora logicznego? Może wystarczy Zaawansowana Sonda Logiczna?

Kod z Delay i/lub bez WDT to nie kod, to DEMO!
Kod wymaga komentarzy!




 
Odpowiedź
#3
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.
 
Odpowiedź
#4
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.
Nie masz oscyloskopu, analizatora logicznego? Może wystarczy Zaawansowana Sonda Logiczna?

Kod z Delay i/lub bez WDT to nie kod, to DEMO!
Kod wymaga komentarzy!




 
Odpowiedź
#5
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.
 
Odpowiedź
#6
@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.
 
Odpowiedź
#7
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!
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości