HomeMade

Pełna wersja: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Ponawiam prośbę.
Jaki procek.
Jaki kwarc w Arduino.
Jakie napięcie do wyświetlacza nokia 5110.
U mnie używam arduino nano3 klon ale myślę ze i na Uno nie będzie problemu u mnie atmega328.
kwarc 16mhz
mój lcd ma zasilanie od 3 do 5V ja używam 3v3
Andrzej!
W poście #15 napisałeś że wszystko Ci weryfikuje, ja w poście #20 odpisałem Ci na jakim ja pracuję, jaką mam ATmegę i kwarc do niej. Napisałem też że wszystkie Arduino mają taki sam kwarc. Dzisiaj pytasz o napięcie na wyświetlacz. Dla bezpieczeństwa zasilam go napięciem z Arduino 3V3, moje Duemilanowe ma taki stabilizator dodatkowo. Ponadto dodam że wszystkie piny sterujące wyświetlaczem (RST,CE,DC,DIN,CLK) zasilam poprzez rezystory 3k3, dla bezpieczeństwa. Pin 07 LIG wyświetlacza zasilam z dzielnika rezystorowego (potencjometr montażowy 10k). Nic więcej dodać nie mogę, to komplet informacji.
Rysio!
(14-10-2014 22:19)SQ9MDD napisał(a): [ -> ]Hejka Panowie... mam nadzieję że jesteście z nami, bo coś ucichło.

Już zamówiłem klocki. Miały dziś przyjść i nie przyszły.
Dalej obserwuję z drugiego rzędu jak się pięknie bawicie
i zazdroszczę.
Cześć.

Andrzej z arduino jest tak że niezależnie od procesora i kwarca kod jest w 100% przenoszalny pomiędzy płytkami. No chyba że ktoś stosuje jakieś nietypowe zaklęcia.
Więc odpowiadając na twoje pytania, płytka arduino dowolna.
Jeśli chodzi zaś o zasilanie to ja zasilam z pięciu wolt syntezer a wyświetlacz z 3,3V i działa wyśmienicie. Nie dawałem rezystorów w liniach sterowania wyświetlaczem.

Dzisiaj skoczyłem wcześniej nieco pracę a że siedzę w hotelu (delegacja) to zaraz napiszę ograniczenie częstotliwości do naszego złomka.

Oczywiście Panowie zachęcam do samodzielnego eksperymentowania z kodem i dzielenia się tymi eksperymentami tutaj na forum.
Moze nazwa forka "Rysiek", bo "wszystkie Ryśki to fajne chłopaki", Zlomek nie brzmi tak dobrze Smile
O ile kod pisany na arduino jest większy (po kompilacji) od konkretnego w C pod dany proc?
Wiesz nie sprawdzałem ale sądzę że trochę narzutu będzie. Każda specyficzna dla arduino funkcja (jakiś map czy coś podobnego) to zawsze coś wiecej bajtów. więc kod puchnie. Tyle że dla większości zastosowań niema to znaczenia i tak się mieści. ATMega328 ma 32kb pamięci -2kb na bootloader więc sporo pozostaje na kod. Ot taka łatwość tworzenia okupiona większym wynikowym.
Ogólnie niema tragedii
Chyba bardziej niż na rozmiar samego programu trzeba uważać na wykorzystanie RAMu. Wiem, że Maciek pisząc Heńka trafił na właśnie ten problem i okazało się, że z pamięcią nie można obchodzić się zbyt beztrosko Wink
to na szczęście nie była pamięć, tylko do d.. napisana obsługa wyświetlacza a dokładniej wyświetlania w przerwaniach. Teraz na czas wyświetlania wyłczam przerwania encodera i jest OK

MAc
mrn
Tak Przemek zdecydowanie masz rację, kilkakrotnie w swoich projektach otarłem się o ten problem. Dlatego zawsze staram się stosować różne zabiegi by nieco zaoszczędzić pamięć.

Kod:
const int jakas_zmienna = 123;
Zamiast:
Kod:
int jakas_zmienne = 123;

Oczywiście dla zmiennych które nie są modyfikowane w trakcie pracy programu.

Często też stosuje jeden bufor służący do printowania danych i zmieniam tylko jego zawartość. Jeden uniwersalny zajmuje często mniej miejsca niż pięć mniejszych do konkretnych celów.

Dodatkowym utrudnieniem jest też słabość środowiska arduino w tej kwestii. Nie posiada ono narzędzi do diagnostyki, debugowania.

Nasz program ten powyżej w tej chwili zużywa około 300 bajtów ramu z dostępnego obszaru 2kb.

Jest taki fajny kawałek kodu który pozwala ocenić wielkość dostępnej pamięci:

Kod:
int freeRam () {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Wystarczy gdzieś w głównej pętli wyprintować efekt działania tej funkcji.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Przekierowanie