Złożenie i uruchomienie karty typu FunCard

 

Zanim omówię uruchomienie karty kilka słów o jej możliwościach : 

        FunCard jest nowoczesną kartą opartą na czterokrotnie szybszym od PIC'a 16F84 procesorze RISC z rodziny AVR (Atmel AT90S8515). Pamięć EEPROM w tej karcie (24LC64) jest także czterokrotnie większa - jest to 64-kilobitowa (8KB) pamięć służąca do przechowywania np. kluczy dla zamka szyfrowego (jak i innych informacji zależnych od użytego softu i zastosowania). Wersja z LEDami umożliwia sygnalizacje stanu pracy karty. Powstała ona z myślą aby zaspokoić gusta najbardziej wymagających użytkowników. Karta może być wyposażona także w miejsce na złącze do wyświetlacza LCD - jednak soft musi go obsługuwać.

Wersja HMT Wersja SMD

Wracamy do budowy karty:        

         Na początek kompletujemy potrzebne elementy - można zajrzeć na stronę: http://www.cyfronika.com.pl/funcard/opisfun.htm  - jest tu spis elementów, można je tu też bezpośrednio kupić ale w innych sklepach może być taniej (najlepiej przed zakupem zorientować się, gdzie jest najtaniej [szczególnie polecam rozejrzeć się w ofercie zwykłych sklepów z częściami elektronicznymi w naszym mieście, np. w Częstochowie znalazłem dwa sklepy, gdzie można kupić komplet elementów / włącznie z odpowiednimi płytkami drukowanymi / potrzebnych do złożenia karty jak i programatora]). W powyższym miejscu można też kupić płytkę drukowaną, ale jeśli zdecydujesz się ją sam wykonać to odpowiednie schematy znajdziesz pod poniższymi adresami:

Kupno poszczególnych elementów polecam także w sklepie Epsilon. Kupisz tu m.in. :
  • Procesor AVR (Atmel) AT90s8515 - obudowa: DIL 40.

  • Procesor AVR (Atmel) AT90s8515 (SMD) - obudowa: PLCC 44 (SMD).

  • Pamięć EEPROM 24LC64 - pamięć szeregowa 64 kbit (8KB) - obudowa DIL 8.  

  • Pamięć EEPROM 24LC64 SMD - obudowa SO 8 (SMD).

  • Pamięć EEPROM 24C128 N - pamięć szeregowa 128 kbit (16KB) - obudowa SO 8 (SMD).

  • Pamięć EEPROM 24LC256 - pamięć szeregowa 256 kbit (32KB) - obudowa DIL 8.

Po złożeniu karty powinna ona wyglądać podobnie do tej z poniższego zdjęcia (jest to wersja z LEDami). Poniższa płytka do tej karty została wykonana przez Mateusza.
A na poniższym rysunku przedstawiłem przykładowy projekt płytki drukowanej do tej karty (wykonany przez Mateusza)
Kliknij na rysunku aby zobaczyć więcej szczegółów

Jeszcze kilka uwag o montażu karty - wskazówki odnoszą się do powyższego przykładu karty.

Opis elementów:

            Jeśli nie czujesz się na siłach zbudować samemu karty, to wyjściem z tej "kłopotliwej sytuacji" może być kupienie już gotowej/złożonej karty - (jednak zazwyczaj o jej zaprogramowanie będziesz musiał się sam postarać) - po szczegóły zapraszam na tą stronę.

 
           Jeśli posiadasz odpowiednie możliwości, to możesz zbudować kartę w wersji SMD, będzie ona wyglądała podobnie do poniżej przedstawionej karty - wykonanej na podstawie tego projektu karty FunCard  (płytka dwustronna, wersja SMT, LCD podłączony przez PORTC. ) : 

Możesz także kupić gotowa kartę SMD - po szczegóły zapraszam na tą stronę.

Możesz wykorzystać inne projekty kart w wersji SMD - umieszczone tu -> FunCard - budowa, schematy, projekty kart FunCard.

Mikrokontroler jednoukładowy AT90S8515 w wersji SMD może istnieć w dwóch wersjach:
Obudowa: TQFP  Obudowa: PLCC  Dla porównania obudowa typu DIL

        Obudowy te mają 44 wyprowadzeń, wersje dla układu w obudowie TQFP przedstawiłem na przykładzie powyższej karty. Jeśli zdecydujesz się na budowę karty z tym układem to możesz skorzystać z dodatkowego (oprócz przedstawionego wcześniej ) projektu płytki - FunCard SMD by DEXT65 (dokładnie chodzi o plik fundext65smd.bmp). W pliku z tym(i) projektem(ami) karty przedstawiono również wersje w obudowie PLCC. Układ w tej obudowie możesz kupić m.in. w sklepie Epsilon. Karta według tego projektu może wyglądać np. tak jak na poniższych zdjęciach:

 Kliknij na zdjęciu aby zobaczyć kartę w powiększeniu.

Inne projekty płytek dla układu w obudowie PLCC to: FunCard SMD/DIL by OverVolt oraz FunCard SMD (trzy wersje płytki - każda dla eeprom-a w innej obudowie [SMD, DIL, ...] ). Kartę z układem w obudowie PLCC planuje sprzedawać również Epsilon (szczegóły przeczytałeś wcześniej).

Wróćmy teraz do sytuacji, kiedy zdecydujemy się na składanie karty w prostszej wersji. 

        Jeśli posiadamy płytkę dwustronną to należy zwrócić uwagę aby otwory były metalizowane tzn. aby istniało połączenie miedzy ścieżkami po obu stronach płytki biegnących do tego samego otworu. Jeśli tej metalizacji nie ma to należy odpowiednio przylutować podstawki aby te połączenia zapewnić. Poniżej przedstawiam zdjęcie przykładowej płytki, gdzie powyższy problem wystąpił.

Na powyższej karcie zastosowano zwykłe rezystory, ale ja jednak polecam rezystory typu SMD (o wiele ładniej to wszystko wtedy wygląda ... ).

Problemu braku metalizacji otworów nie ma, gdy posiadamy płytkę jednostronną. 

Poniżej widać przykłady karty jednostronnej

            Jednostronną kartę łatwiej wykonać w domowych warunkach (chodzi o płytkę). Funkcjonalnie niczym się nie różnią: na dwustronnej po jednej stronie jest o dwa styki kontaktowe więcej, służące do programowania karty. W wersji jednostronnej te dwa styki też mogą występować, ale są zazwyczaj podłączane za pomocą zworek tylko na czas programowania karty. Oczywiście stosuje się też płytki jednostronne gdzie te dwa styki są na stałe połączone z Atmelem. Jeśli będziemy używać wersję jednostronną to nie będziemy mieli problemów przy współpracy np. z modułami CI ponieważ jeśli używamy wersji dwustronnej w tym module, to może dojść do zwarcia i spalenia modułu. Dlatego gdy mamy płytkę dwustronną to należy na jednej stronie (najlepiej na tej, gdzie są te dwa dodatkowe styki służące do programowania karty) zakleić styki taśmą klejącą (gdy projektowano moduł CI to nie przewidziano izolacji na dolnej stronie tego modułu - przecież oryginalne karty nie są dwustronne). Jeszcze dodatkowa uwaga odnośnie używania karty w module CI - należy pamiętać o "spiłowaniu" rogów karty czyli je odpowiednio zaokrąglić tak jak to jest na kartach typu plastik - gdy rogi są ostre to karta może źle kontaktować ze stykami występującymi w tym module. 

           Poniżej widać zdjęcia dwóch przykładowych płytek jednostronnych. Widzimy tu brak dwóch styków służących do programowania karty, więc układy trzeba zaprogramować przy pomocy innej karty lub bezpośrednio w programatorze (AT90S8515 w podstawce programatora dla tej karty a 24c65 np. w JDM-ie)

A tu widać złożoną kartę na podstawie powyższej płytki. Diody LED w wersji SMD. Zwykłe diody LED .
Widok z góry Widok z góry

A na poniższych zdjęciach widać kartę gdzie przewidziano miejsce na eeprom typu SMD - jednak z niego nie skorzystano.

        Przy budowie karty można też wykorzystać rezystory umieszczone w jednej obudowie, tzw. matryca rezystorowa (najlepiej przeznaczona do montażu powierzchniowego - SMD). W takiej obudowie 16-pin SMD jest umieszczonych 8 rezystorów, każdy rezystor ma oddzielne wyprowadzenia i wszystkie rezystory w matrycy mają taką sama rezystancję. Przy budowie karty w tej wersji możesz skorzystać z projektu karty umieszczonego w pliku Funcard_by_Peperino. Karta będzie wyglądała podobnie do tej przedstawionej na poniższych zdjęciach:

        Po zmontowaniu karty oraz programatora (do dalszej pracy z kartą jest raczej wymagany) można sprawdzić poprawność wykonania karty (ten etap można pominąć). Robimy to tak: programujemy kartę plikiem Funled1.hex (plik ten znajduje się w FUNTEST.zip dostępnym pod: http://www.funcard.net/ -> Funcard (Misc.) lub na mojej stronie )
Następnie podłączamy ją zgodnie ze wskazówkami z Readme.txt :

  To get these programs to work, the FunCard needs to be connected to 
+5V
0V (GND)
clocksignal (shold be 3-4MHz)

Ja ją włożyłem do Phoenix-a -> zapewnia wszystkie potrzebne sygnały. Jeśli karta jest wykonana poprawnie to diody LED zaczynają cyklicznie się świecić.

Polecam także wykorzystać nowszy test - programujemy kartę plikiem FunTest.hex (plik ten znajduje się w pliku FunTest_new by DaD, dostępnym na mojej stronie [Jest to prosta integracja starych testów FunLed i FunLcd do 2in1, LCD testowane tym razem na PORTC i 8 bitowo] ). 

        Możemy także złożyć kartę bez LED-ów . Do takiej karty należy wgrać wersję oprogramowania bez obsługi LEDów, choć nic nie zaszkodzi jak wgrasz wersje normalną - w której zazwyczaj obsługę LED-ów można wyłączyć. Karta z wersją programu bez obsługi LED-ów lepiej współpracuje z niektórymi urządzeniami gdyż wtedy karta pobiera mniej prądu. Na takiej karcie niestety nie możemy przeprowadzić powyższego testu poprawnego złożenia karty ( nie wlutowaliśmy przecież LED-ów ).

          Lepszą kontrolę nad tym co mamy włączone o co nie na karcie (mam na myśli LEDy i ewentualnie dodatkowy wyświetlacz LCD) zapewnia nam niektóre softy. Kontrolę tę zapewnia nam pozycja w menu "Edit SECA -> Config" w programie FunProm (2.33 lub nowszym). Więcej szczegółów na temat wyświetlacza LCD napisałem na stronie. To tylko przykład - inne wersje softu mogą inaczej zarządzać ta kontrolą.

        Podczas programowania w FunProm możemy zetknąć się z komunikatem: "Unknown procesor ID". Jedną z przyczyn owego komunikatu jest ustawienie/zaprogramowanie w Atmelu: Lock Bit 1 i Lock Bit 2 a więc został zablokowany dostęp do układu. W tej sytuacji należy teraz wykasować całą zawartość układu (opcja Erase w FunProm) - wtedy te dwa bity się "odblokowują" i układ jest dostępny dla programatora. Jeśli te dwa bity są ustawione (zaprogramowane na "0") to "wyczyszczenie" zawartości układu jest jedyną metodą na ich skasowanie (ustawienie w pozycji "1" - układ odblokowany), nie można ich z takiego stanu przestawić w moim "ręcznym" programatorze

        Może się także zdarzyć przypadek zawieszenia procedury programowania na etapie eeproma [ writing block 00 ] (pisząc ogólnie: komputer się "wiesza" a na karcie świecą się LEDy [czerwona + pomarańczowa] ). Najwidoczniej trafiłeś na eeproma który do programowania wymaga 5V. Programator podaje napięcie w okolicach 3 - 3.5 V -> większości układom to wystarcza. Jednym z rozwiązań problemu jest zewnętrzne zasilanie podłączone do programatora (+5V, np. z komputera -> dajemy je np. na diodę Zenera [trzeba tu pamiętać o zachowaniu biegunowości], musimy jeszcze odciąć zasilanie od portu LPT (te trzy rezystory)). Drugie to zastosowanie 24LC64 zamiast 24C64. 24LC64 jest mniej "wrażliwy" na niepoprawne zasilenie. Może się też zdarzyć, że mimo poprawnego zaprogramowania układu (przez podanie zew. napięcia na programator) taki układ nie będzie poprawnie działał w karcie, bo urządzenie obsługujące kartę także podaje za małe napięcie - rozwiązanie jakie się tu nasuwa (zew. zasilanie na kartę [po uprzednim oczywiście odcięciu zasilania od tego urządzenia dla karty]) mija się z celem, lepiej od razu zaopatrzyć się w "lepszą" wersję układu. 

Powyższy problem rozwiązuje też programator według projektu z pliku: FunCard Programmer by JANDE - przeróbka programatora v1.1 polegająca na dodaniu zewnętrznego zasilania.

Programator z możliwością podłączenia zew. zasilania posiada także: Programator Fun Prog PRO (ver.5.07) do kupienia na stronie Epsilon-a. Przewidziano w nim miejsce pod złącze zew. zasilania (konieczne dla niektórych PC do programowania pamięci eeprom na kartach FUN i tylko dla pamięci innych niż Microchip'a (wymagających wyższego napięcia programowania).

Na problemy z programowaniem pomaga także zastosowanie w naszym programatorze układów 74HC14.

Opis budowy programatora dla FunCard zamieściłem tu:

Uwaga !!! W programatorze typu phoenix nie zaprogramujesz w całości karty FunCard (phoenix to jest tylko interfacem do komunikacji miedzy karta chip'ową a portem szeregowym PC-ta) - możesz tylko zaprogramować ext. eeprom ale tylko po uprzednim wgraniu do Atmela przez FunProg-a (lub inny programator to umożliwiający) softu obsługującego programowanie eeprom-a (ogólnie pisząc loadera dla eeproma) ... ostatnio większość programów do FunCard ma tę usługę wbudowaną. Dzięki temu możesz eprom zaprogramować np. bezpośrednio z poziomu PicBinEditor-a tak jak to zostało opisane tu.

        Teraz pojawia się jeden z głównych problemów - brak ustawionego bitu FSTRT w układzie AT90S8515 (nie wszystkie zastosowania karty wymagają ustawienia tego bitu). Znaczenie tego bitu opisane jest tu, a jego zaprogramowanie tu, ( zobacz też inne metody zaprogramowania tego bitu opisane na mojej stronie ). Jeszcze raz tu napiszę, że zwykłym programatorem typu FunProg czy Phoenix nie zaprogramujemy tych bitów !!!  Może się zdarzyć, że już w danym sklepie ten układ będzie miał ustawiony ten bit - np. Cyfronika sprzedaje odpowiednio zmodyfikowany AT90S8515. Następny krok to wgranie do karty właściwego oprogramowania - to co wgrasz do karty zależy już od ciebie, od tego do czego taką kartę chcesz wykorzystać.

Kartę programujemy wykorzystując odpowiednie programy -  znajdziesz je np. tu:

Polecam także częste odwiedzanie uploadów - często pojawiają się tam najnowsze programy dla tej karty. 

Jak przeprowadzamy operacje programowania? Opis tej czynności opisany jest tu:

        I to już praktycznie koniec, jeśli poradziliśmy sobie z bitem FSTRT to karta powinna ruszyć. Jeśli nie, a test z plikiem Funled1.hex przeszedł pomyślnie to albo dalej bit FSTRT jest nie uaktywniony albo niepoprawnie przeprowadziliśmy operacje programowania karty.

        Myślę, że to krótkie wprowadzenie (bo można by jeszcze o tym dużo napisać) naprowadzi na właściwy trop i ograniczy ilość pytań związanych z tym tematem na Bulletin Board   ;-) 

Jeśli znajdziesz w powyższy opisie błąd to napisz mi o tym.

Ostatnia aktualizacja: 11.05.2002

Wróć