Ile razy mogę wgrać program lub szkic na moją tablicę Arduino Uno Clone?

12

Mam zamiar pracować nad moim pierwszym projektem przy użyciu arduino (mam zamiar kupić następny w przyszłym tygodniu), a jeden z naszych profesorów mówi, że możemy wgrać program lub szkic do tablicy Arduino Uno tylko około 8 razy . Dodał również, że jeśli używamy wersji klonowanej, może ona wystarczyć tylko na 2 przesłanie szkicu. Czy to prawda, czy blefuje? Z góry dziękuję.

A. Raymundo
źródło
2
Podczas tworzenia i testowania kilkakrotnie szkicowałem szkice do jednego konkretnego Nano, a sam byłem ciekawy tego w ciągu ostatnich kilku dni. Wiedziałem, że będzie to przynajmniej setki razy, ale nie byłem pewien, ile. Dzięki, że pytasz.
raddevus
9
Czas zakwestionować wiarygodność tego profesora. Program zostanie przeniesiony do wewnętrznej pamięci flash ATMega328P, a pamięć flash przetrwa kilka tysięcy cykli zapisu. Jeszcze więcej dla EEPROM. STMicro cytuje „cykle od 10K do 100K” ( st.com/resource/en/application_note/cd00165693.pdf )
Maximilian Gerhardt
Powiązane: SPIFFS na poziomach zużycia 8266, więc jeśli oszczędzasz 3 KB z 3 MB wolnego miejsca, możesz zapisać 1024X przed pierwszym nadpisaniem (teoretycznie 512X przeciętnie bez nakładania się bloków), co oznacza miliony zapisów.
dandavis
4
@ jsotola, chyba że Google pokaże Ci, że na SE już odpowiedziano na to pytanie, nie mów użytkownikom Google (źródło: FAQ)
Głowonóg
1
Jest to odpowiednik fałszywych wiadomości ASE.
copper.hat

Odpowiedzi:

24

Mówi kompletnie i całkowicie bełkotem. Aby cytować z arkusza danych ATMega328P :

  • Trwałe segmenty pamięci nieulotnej
    • 32 KB bajtów wbudowanej w system pamięci programu Flash
    • EEPROM 1KBytes
    • 2KBytes Internal SRAM
    • Cykle zapisu / kasowania: 10 000 pamięci Flash / 100 000 pamięci EEPROM
    • Przechowywanie danych: 20 lat w 85 ° C / 100 lat w 25 ° C (1)
    • Opcjonalna sekcja kodu rozruchowego z niezależnymi bitami zamka
      • Programowanie w systemie za pomocą programu rozruchowego na chipie
      • Prawdziwa operacja odczytu i zapisu
    • Blokada programowania dla bezpieczeństwa oprogramowania

Masz więc co najmniej 10.000 zastosowań, zanim zacznie się łuszczyć.

Majenko
źródło
3
Powiedziałbym, że ma co najmniej 10 000 zastosowań.
Edgar Bonet
3
Sposób działania pamięci Flash, ponieważ się starzeje, trwa usuwanie strony. 10 000 to minimalna oczekiwana liczba operacji usuwania na stronie, zanim czas potrzebny na usunięcie może zacząć przekraczać wstępnie zdefiniowany (określony przez producenta) próg. Więc tak, spodziewałbyś się uzyskać więcej niż ten numer (jest to minimum gwarantowane), lub po prostu trochę dłużej trwa usuwanie stron.
Majenko
2
W praktyce ponownie używałem Arduino Uno i ciągle wprowadzałem drobne poprawki w kodzie. Ponowne przesyłanie zajmuje tyle czasu, że nie warto się o to martwić. O wiele bardziej prawdopodobne jest wygłuszenie płyty w inny sposób, jeśli lutujesz lub zginasz druty. Ponadto, podczas robienia Arduino ... płyty są tak szalenie tanie (szczególnie, jeśli możesz przejść do MiniPro 5V), że najważniejszą rzeczą, o którą musisz się martwić, jest ostrożność podczas lutowania czujnika / IO. Tablica jest wyjątkowo niezawodna i możesz ją tanio wymienić, jeśli kiedykolwiek będziesz mieć wątpliwości co do tablicy.
Rob
1
za każdym razem, gdy mówisz o „zużywaniu się” pamięci, pamiętaj, że ogólnie jest to: 1) Musisz „stresująco” wysadzić całe obszary pełne zer, a następnie zapisać je nad nimi. 2) Pamięć półprzewodnikowa zwykle ma złożone algorytmy wyrównywania zużycia, aby zminimalizować jej wpływ. 3) To tanie Arduino. 4) Język jest podzbiorem C ++, więc możesz wyśmiewać środowisko testowe, aby w pełni przetestować, zanim trafi na sprzęt; aby ograniczyć niepotrzebne wypychanie niesprawdzonego kodu do sprzętu.
Rob
1
tutaj jest prosty przykład wyśmiewania płyty, abyś mógł po prostu przetestować ją lokalnie pod Linuksem (skompilowany z GCC), zamiast ciągle naciskać na sprzęt do testowania. Podstawową ideą jest stworzenie frameworka, który wygląda na tyle samo wywołań Arduino, ile faktycznie wykonujesz ze swojego kodu: github.com/rfielding/octaveRounder/tree/master/test
Rob