MSP430 pierwsze kroki

Witam! Zacząłem naukę MSP430 od zestawu:

formatting link
ć to chyba nie ma znaczenia dla moich pytań :)

  1. Napisałem sobie obsługę odczytu temperatury z wbudowanej diody, ale co dziwne dwa ostatnie bity w rejestrze ADC12MEM0 są zawsze 11, dzięki czemu i dokładność i rozdzielczość spadła. Co może być nie tak, nie mam kodu przy sobie, ale jak trzeba to wkleję w środę. I czy w ogóle ma jakikolwiek sens używanie tej diody do mierzenia temperatury otoczenia, procesor przy 32kHz chyba nie grzeje się aż tak bardzo?

  1. Poczułem radość z pisania w C (choć nie znam go dobrze - prawie wcale) i zacząłem używać zmiennych typu float, ale one strasznie dużo pamięci zabierają. Program zliczający ilość naciśnięć klawisza + proste menu + kilka obliczeń zajmuje ponad 7kB! Tak na moje oko to podobny mieściłem w C2051 Atmela. Są jakieś inne biblioteki do przecinków, czy po prostu unikacie liczb float. Acha kompiluję MSPGCC.

  2. Mam jeszcze pytanie o programowanie wewnętrznego flasha, chcę używać information memory do zapisywania ustawień. Ale po lekturze mam pytanie, czy jeżeli program zajmuje ok 10kB to pozostałe 50kB z program memory mogę wykorzystać jako DataFlash? byłoby fajnie, a nie znalazłem w DS żednych zakazów co do tego, oczywiście z pominięciem ostatniego bloku, gdzie są wektory przerwań.

To na razie tyle, pewnie się jeszcze urodzą jakieś pytania pozdrawiam Grzegorz

Reply to
Grzegorz Latocha
Loading thread data ...
Reply to
Bogdan Gutknecht

Niestety ale na 8-bitowe procki 4 dzialania zajmuja ok kilobajta. A jak jeszcze wstawiles printf w pelnej wersji, to to jest wielka kobyla.

J.

Reply to
J.F.

Bogdan Gutknecht napisał(a):

no przeciez nie dodaje impulsow w zmiennej float. Ale pozniej te impulsy mnoze razy np. 25 i dziele przez 0,9873 i tu przyznasz że float bywa pomocny, no ale nic zrobię tak, że przemnoże wszystko przez 10000 a potem na etapie konwersji na LCD skrocę o kilka miejsc. Obsluga mnożenia dwu słownego powinna być krótsza niż floaty. Chyba, że macie inny pomysł? pozdrawiam

Reply to
Grzegorz Latocha

to dobrze, że MSP jest 16 ;) hmmm, nie używam printf, bo nie bardzo wiem co by mi to moglo dać, przecież nie wyrzuci mi tego na LCD domyślnie??

pozdrwiam GL

Reply to
Grzegorz Latocha
Reply to
Bogdan Gutknecht

Grzegorz Latocha napisał(a):

(...)

Jeżeli wolny procesor i jest mało miejsca to lepiej unikać. Niestety w tego typu procesorach, obliczenia na liczbach zmiennoprzecinkowych są emulowane, a kod do ich emulacji trochę zajmuje i niestety jest bardzo wolny.

(...)

Jak go zmusisz to tak, ale trzeba trochę pokombinować. Lepiej użyć sprintf. Co on daje, ano bardzo dużo: możesz ładnie wszystko skonwertować i sformatować do ślicznej postaci dającej się pokazać użytkownikowi. Z tym że pełna wersja to Ci z 10KB wsyśnie ;)

Przykład: Chcesz wyświetlić aktualny czas:

char bufor[50]; int godzina=14; int minuta=05; int sekunda=50;

sprintf(bufor,"%d Godzin %d Minut %d Sekund",godzina,minuta,sekunda);

w bufor masz:

14 Godzin 5 Minut 50 Sekund

łatwiej czegoś takiego nie zrobisz :)

Pozdrawiam MD

Reply to
Maksymilian Dutka

Bogdan Gutknecht napisał(a):

hmm, a jak się zastępuje dzielenie mnożeniem, zawsze zastępowałem odejmowaniem, ale jeżeli da się mnożeniem byłoby miło bo procesor ma sprzętowe mnożenie :) proszę o algorytm

Reply to
Grzegorz Latocha

Maksymilian Dutka napisał(a):

ooo, super, super, tylko ciekawe ile kodu, ja to na pieszo przez dziesięć i reszta z dzielenia, co jest dosyć krótkie :) ale podoba mi się bardzo, dzisiaj zobaczę ile zajmuje w pamięci :) Dzięki wielkie wszystkim pozdrawiam GL

Reply to
Grzegorz Latocha

Grzegorz Latocha napisał(a): (...)

(...)

Poczytaj sobie:

formatting link
Na początku pisanie programu, miejsce zajmowane przez program będzie szybko rosło potem się wszystko uspokoi.

Pozdrawiam MD

Reply to
Maksymilian Dutka
Reply to
Bogdan Gutknecht

Bogdan Gutknecht napisał(a):

hmm, będę musiał popróbować i dowiedzieć się jak skopiować wyższe dwa bajty z long int do zwykłego int. Narazie mam zrobioną pętlę odejmującą, używam tego do konwersji na znaki, więc maksymalnie robi 9 pętli - tragedii nie ma, ale na przyszłość.

A tak w ogóle to dziękuję za dobre tipsy. Wyrzuciłem floaty i dzielenie i program zmalał o połowę :)) Teraz jeszcze problem z napisami, który też trochę zredukuje, ale to nowy wątek założyłem bo taki bardziej ogólny:).

pozdrawiam GL

Reply to
Grzegorz Latocha

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.