Kuinka laajentaa ohjelmamuistia arduinolla?

Joskus loppuu ohjelmakokoinen tila upotetulle C-ohjelmalle, jonka haluan laittaa arduinoon. Joten mitä sirua tarvitsen laajentamaan arduinon ohjelmamuistia, jotta voin käyttää isompia C-ohjelmia arduinoni kanssa?

Kommentit

  • Harkitaan että kaveri nimeltä Petri H ä kkinen put arcade-tyylinen peli Atmega328P: llä, ehkä sinun pitäisi tarkastella tilaa säästämistä koodissasi? Jos se ei ole ’ käytännöllistä, kuten jotkut vastaukset sanovat, saat isomman sirun, jossa on enemmän ohjelmamuistia. Esimerkiksi Atmega644 toimitetaan muun muassa DIP-sirupaketissa.
  • Katso myös forum.arduino.cc/index.php?topic= 226465.0
  • Voitteko selittää hieman enemmän vastaustanne? 2) Arduinossa on SPI, joten SD-kortille pääsee käsiksi. Mikä tahansa SD-kortin koodi on ladattava suoritettavaan muistiin. Tämä on monimutkaista eikä aloittelijoille … Tarkoitatko, että voit muuttaa tai ohjelmoida käskymuistin ohjelman ollessa käynnissä? Voiko käynnissä oleva ohjelma soittaa käynnistyslataimeen ja ladata uusia ohjeita eri osoitteisiin? Saitko ´ tälle ikälle ohjelmamuistin? Eri ratkaisu voi olla ohjelmien rutiinien tunnistaminen ja kaikki ” -kutsu ´ s ” tallennettu tieto spi-ulkoiseen muistiin … Kiitos!

Vastaa

ATmega2560 on siru, joka lisää muistia, kun Uno-ohjelmamuisti loppuu. Muisti -sivulla osoitteessa arduino.cc näet, että sillä on Flash = 256 kt, SRAM = 8 kt, EEPROM = 4 kt, jossa ATmega328-siru on päällä Unolla on Flash = 32 kt, SRAM = 2 kt, EEPROM = 1 kt.

Kun Unossa loppuu ohjelmamuisti, sinulla on noin kolme käytännöllistä vaihtoehtoa: pienennä ohjelmaa ja poista käynnistyslatain (yhden tai kahden kt: n vapauttamiseksi); käytä toista korttia, jossa on entistä suorituskykyisempi prosessori. Uno-kortin suorittimella ei ole tapaa käyttää ohjelmatavuja muista paikoista kuin sirulla olevasta 32 kt: n salamasta. Mega2560-kortin prosessori käynnistyy kahdeksan kertaa enemmän salamaa, joten siihen mahtuu isompia ohjelmia kuin Unolla.

Jos poistat käynnistyslataimen, voit sen sijaan ohjelmoida USBASP-kortilla, kuten on kuvattu. ”Ohjelmoi AVR-siru USBASP: llä 10-napaisella kaapelilla” artikkelissa osoitteessa learningaboutelectronics.com.

Kommentit

  • mutta jos vapautat käynnistyslataimen, kuinka voin käyttää arduino IDE: tä ohjelmointiin?
  • @ qwerty10, katso editoinnin viimeinen kappale. Arduino IDE tukee USBASP ok -ohjelmaa.
  • Eikö se toimi minkä tahansa ohjelmoijan kanssa, joka voi ladata koodin ATMEGA: han? Ainoastaan USBASP: n sijasta. Ymmärtääkseni siinä ei käytetä tosiasiallisesti 10 nastaa, vaan näiden nastojen osajoukkoa.
  • @ qwerty10, USPASP on Internet-palveluntarjoaja (järjestelmäohjelmoinnissa). Yleensä mitä tahansa Internet-palveluntarjoajan ohjelmoijaa voidaan käyttää ohjelmoimaan siru (joko käynnistyslataimen kanssa tai ilman sitä), kunhan MOSI-, MISO-, SCK-, RST-, VCC- ja GND-nastat ovat käytettävissä kohdepiirissä.
  • Nykyiset Unos käyttävät erittäin pienikokoista optiboot-käynnistyslatainta. Sen poistaminen vapauttaa vain 512 tavua.

Vastaa

Toinen tapa (muu kuin MCU, jossa on enemmän muistia) on ei käytä Arduino-kehystä ja sen kirjastoja. Tällainen abstraktiotaso on kallista molemmilla tavoilla – muistin käyttö ja nopeus. Mutta se on paljon vaikeampi tapa. Jos tarvitset kirjastoa, sinun on siirrettävä se (jos et ole löytänyt omaa kirjastoa) tai ainakin annettava tarvittavat toiminnot Arduinolta.

Esimerkiksi Arduino IDE: ssä 1.6.11 tyhjä luonnos käyttää 444 tavua salamaa. Yhden pinMode ja digitalWrite(13, ! digitalRead(13)); + delay(500); käyttäminen tarkoittaa 964 tavua. Tietenkin nämä ovat todennäköisesti kertaluonteisia. Jos käytät vielä kuusi nastaa ja vaihdat sen, se käyttää paljon vähemmän ohjelmamuistia kuin ensimmäinen (1192B). Mutta se kasvaa silti todella nopeasti.

Puhtaassa C: ssä tyhjä ohjelma on noin 134 tavua pitkä. Sama toiminto (yhden nastan vaihtaminen 500 ms välein) vie 158 tavua (ja se on nopeampaa).

Mutta harrastusprojektissa haluaisin käyttää ATMega2560- tai ATMega644 / 1284-mallia.

Ja voit käyttää myös suoraa pääsyä laitteistoon. Vaihda pin-luonnos suoraan rekistereihin ja _delay_ms avr-kirjastoista käyttää 468 tavua 964B: n sijasta. Arduino-ydinkirjastojen viiveellä se on 602B.

Kommentit

  • Tarkoitat _delay_ms().
  • Tällä on lisäetu, kun opit todella mcu: sta, jonka ’ uudelleen käytössä. Näiden Arduinojen AVR: t ovat paljon kykenevämpiä kuin ” vakiokirjasto ” uskot.++

vastaus

Entä vadelma pi nolla ? Minulla on pari ja käytän niitä melko usein arduinoina.

Kommentit

  • Muita arkkitehtuureja tulisi todellakin harkita, mutta sulautettu Linux-järjestelmä , jossa on pakollinen SD-kortin käynnistys , kuten pi lisää paljon monimutkaisuutta ja on hauras ainutlaatuisilla tavoilla, vaikka ei kalliimpaa. On olemassa paljon levyjä, jotka perustuvat pienempiin, syvemmälle integroituihin ARM MCU: iin, jotka ovat sovellusten suhteen paljon samanlaisia kuin Arduino, samalla kun ne ovat huomattavasti kykeneviä. Mutta jos tarvitset paljon prosessointia tai megatavuja muistia, kyllä, nämä monimutkaisuudet alkavat olla kannattavia.
  • Pidän myös nollasta, koska se on niin joustava. Voit lisätä tallennustilaa tai upottaa sen projekteihin samalla, kun sinulla on myös riittävän suuri prosessori melkein kaiken tekemiseen.

Vastaa

Voit myös etsiä muita alustoja. Esimerkiksi Teensy 3.2 on Arduino-yhteensopiva ja sillä on 2 kt eepromia ja 64 kt RAM-muistia.

Vastaa

Wen kysyy laajaa kysymykseen, on hyödyllistä sisällyttää joitain yksityiskohtia. Kuten kuinka paljon muistia ja miksi luulet tarvitsevasi sitä.

Määritin kerran prosessorin 2 kt: n ohjelmatilassa, 64 tavua RAM-muistia ja 1 KIPS. Insinööri kysyi, MIPS, selitin tuhansia sekunnissa. Hän vastasi, että he eivät tule niin hitaasti. Projektin lopussa lisättiin valtava käyttöliittymä ja muisti supistui … mutta sopivat silti ongelmitta.

Harkitse siis harkitsevaisuutta. käytetyistä resursseista.

Vastaus kysymykseen:

1) Arduino ei tarjoa kätevää väylää muistin hakemiseen. Joten, ei ole mitään tapaa kytkeä siru saadaksesi enemmän muistia.

2) Arduinossa on SPI, joten SD-kortille pääsee käsiksi. Mikä tahansa SD-kortin koodi on ladattava suoritettavaan muistiin. Tämä on monimutkaista eikä aloittelijoille. …

3) Kiristä koodisi ehdotetulla tavalla. Tämä on todennäköisesti hyvä tapa oppia.

3) Siirry suurempaan Arduinoon.

Arduino-prosessoreita on erilaisia. Jotkut ACR-rivillä, toiset ARM-rivillä. Eri laitteiden käyttäminen samassa perheessä on suhteellisen vaatimaton muutos ja voi tuottaa jopa 368 tavua ohjelmoitavaa FLASH-muistia. tarkalleen.

Arduino ARM -pohjaiset laitteet ovat hyvin erilaisia ja käytä erilaisia kirjastoja.

Katso Arduino Mega 2560, se on hyvin samanlainen kuin Uno, sillä on samanlainen jalanjälki, koodin pitäisi siirtyä suhteellisen helposti ja se on edullista.

On suurempia laitteita AVR-perheessä.

Huomaa, että AVR32 on erilainen prosessori ja oheislaitteet ovat riittävän erilaisia, että se on erilainen laite.

Jos haluat päästä erittäin suuriin ohjelmiin ( gigatavua muistia). Siinä on täysi linux, virtuaalimuistilla (katso yllä oleva kohta 2) ja tehokkaampia I / O-mekanismeja.

Kommentit

  • Ehkä korjata kirjoitusvirheet, kuten Wen, 3 ja differnt
  • Tarkoitan, että jos korjaat nämä kirjoitusvirheet, joku saattaa äänestää vastauksesi …

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *