środa, 2 stycznia 2013

Instalacja Eagle pod Linuxem i386 oraz amd64 - wariant 1

W internecie pojawia się cała sterta herezji na temat instalacji Cadsoft Eagle pod Linuxem. Jedni piszą, że się nie da, inni, żeby spełnić zależności i zadziała. Szkoda, że nikt nie pisze jak je spełnić. Większą kreatywnością wykazują się osoby, które opisują wklejanie bibliotek prosto do systemowych katalogów, jednak jest to dość prymitywne - trochę jak otwieranie drzwi siekierą. Na dodatek nie spotkałem się z żadnym opisem instalacji Eagla pod Linuxem 64 bitowym. Postaram się teraz naprawić całe wyżej wymienione zło.

Generalnie są dwa sposoby zainstalowania Eagla. Teraz zajmiemy się pierwszą metodą.

Instalacja

Uwaga! Zakładam, że czytelnik używa Ubuntu 32/64 bitowego w angielskiej wersji językowej oraz, że zamierza zainstalować Eagla w katalogu /opt. Czytelnicy mający inne oczekiwania powinni dostosować działania do zamiarów.

Ściągamy plik instalacyjny dla Linuxa ze strony Cadsoft. Gdy mamy już plik *.run zapisany na dysku należy zainstalować pliki z Eaglem na dysku. W terminalu:
sudo chmod +x ~/Downloads/eagle-lin-6.3.0.run
Pozwalamy, aby plik instalacyjny Eagla można było wykonywać jako program.
sudo ~/Downloads/eagle-lin-6.3.0.run /opt
Po kolei: sudo umożliwia wykonanie polecenia z uprawnieniami roota, następnie podajemy ścieżkę do pliku instalacyjnego, w końcu ścieżkę do katalogu, w którym chcemy zainstalować Eagla.

Gotowe! Eagle zainstalowany! Udało się tego dokonać dwoma poleceniami, teraz tylko zostaje uruchomienie tego co zainstalowaliśmy.

Uruchomienie

Jeśli zainstalowany Eagle nie działa, można to stwierdzić próbując go uruchomić:
/opt/eagle-6.3.0/bin/eagle
Eagle nie uruchamia się z prostego powodu - w systemie brak bibliotek niezbędnych do uruchomienia GUI. Jakich? Już sprawdzamy:
ldd /opt/eagle-6.3.0/bin/eagle
Polecenie ldd wypluje listę bibliotek, z których korzysta Eagle oraz czy biblioteki zostały odnalezione w systemie. Jeśli bibliotek brakuje należy je po prostu doinstalować - nie zapakować do systemowych katalogów na siłę. Po to są repozytoria, paczki (np. *.deb) i apt-get, żeby w systemie był porządek. Sprawdzamy, której biblioteki brakuje. Jeśli jest to na przykład pozycja "libXrender.so.1" to należy otworzyć Menedżer Pakietów (Synaptic lub odpowiednik na innych dystrybucjach) i wyszukać "libXrender". Pamiętaj, że liczba pojawiająca się na końcu nazwy biblioteki to jej wersja. Jeśli Eagle wymaga wersji 1.0.0 to taką powinniśmy zainstalować. Oto cała filozofia!

Tajemnica 64 bitów

Wyżej wymienione metody zdają się nie działać z Linuxem w wersji amd64. Dzieje się tak dlatego, że Eagle to aplikacja 32 bitowa i nie współpracuje z 64 bitowymi bibliotekami z jakich jest zbudowany nasz Linux. Rozwiązanie ponownie jest zadziwiająco proste. Wszystkie brakujące biblioteki zostaną pokazane przez ldd tak jak w przykładzie powyżej. Następnie należy je wyszukać przez Mendżer Pakietów, ale przy instalacji wybieramy wersję biblioteki z dopiskiem :i386. To wszystko! Dzięki temu dodamy do systemu biblioteki w wersji 32 bitowej i nasz Eagle będzie miał z czym współpracować!

TADAM!!!

Za tydzień wariant 2. O wiele prostszy, ale mniej wydajny. Jeśli znaleźliście jakieś błędy lub niedomówienia piszcie w komentarzach.

Zainteresowanych zapraszam również do zapoznania się z wariantem 2.

piątek, 30 listopada 2012

Płytki wtykowe do płytki stykowej - ATmega8/8A/48/88/168/328

W życiu każdego konstruktora, który zajmuje się mikrokontrolerami, nadchodzi taki moment, w którym mówi:
Tak było również ze mną.Wcześniej używałem płytki stykowej, w którą bezpośrednio wtykałem scalaki. Miało to jednak pewne wady - za każdym razem, gdy chciałem przetestować program na np. ATmega musiałem podłączyć milion pierdółek i kabelków, niezbędnych do tego, żeby ATmega w ogóle wystartowała.
Powstały więc dwie płytki-adapterki, które baaardzo ułatwiają życie. Pierwsza z ATmega8 i druga z ATtiny13, obie zawierają elementy niezbędne do uruchomienia i zaprogramowania procesora oraz pozwalające się wetknąć do płytki stykowej.

 

Schemat

Oto schemat płytki przeznaczonej dla ATmega8/8A oraz ATmega48/88/168/328:
  

Jak widać na schemacie płytka zawiera wszystkie elementy, które są potrzebne do uruchomienia i zaprogramowania procesora. Jest też, filtracja zasilania, dodatkowa filtracja dla przetwornika analogowo-cyfrowego, kwarc, gniazdo programatora, sygnalizację poprawnego zasilania, przycisk reset oraz wyprowadzenie wolnych pinów. Niestety kwarc nie ma kondensatorów - nie starczyło miejsca na płytce. W związku z tym przy programowaniu należy pamiętać o ustawieniu fusebita odpowiedzialnego za dołączenie wewnętrznych kondensatorów.

 

Płytka

Płytka jest dosyć mocno upakowana, zawiera dużo elementów na małej przestrzeni. Dla oszczędności miejsca, czasu i wierteł część elementów jest w obudowach SMD. Są to wszystkie rezystory i kondensatory. 
Trzeba przyznać, że ta płytka jest trudna do wykonania w domowych warunkach przede wszystkim ze względu na cienkie ścieżki prowadzące do gniazda programatora. Jednak, kiedy już ją wytrawimy i zlutujemy do kupy naprawdę przyspiesza projektowanie prototypów na płytce stykowej.

 

Adapterek w akcji

Poniżej zamieszczam kilka zdjęć z płytką adapterka na żywo:


W kolejnej części płytka ATtiny13/13A/25.
Pobierz schemat i płytkę (Eagle): KLIK
Dwa zdania w kwestii licencji na te pliki (jak to głupio brzmi!). Źródła są darmowe dla zastosować hobbystycznych lub osobistych (produkcja pojedynczych sztuk), jedynie chciałbym żeby osoby, które zbudują taką płytkę pochwaliły się nią na użytek innych. Może to być wpis na swoim blogu, na jakimś forum lub zdjęcia wysłane do mnie. Piszcie na maila:

wieloiksiasty małpa gie mail kropka kom

Gdyby ktoś chciał sprzedawać sprzęt wg. mojego projektu masowo (taaa, na pewno by  ktoś chciał to sprzedawać) również proszę o kontakt. Brrrr, zamieniam się w korporację...

czwartek, 22 listopada 2012

Makefail: undefined reference to `main'

Zainstalowałem Eclipse według tego poradnika: KLIK. Następnie postanowiłem sprawdzić, czy wszystko działa tak jak powinno, tworząc nowy projekt według tego poradnika: KLIK. Jak zwykle coś nie chciało działać. Tym razem ujrzałem piękny komunikat:
../crt1/gcrt1.S:195: undefined reference to `main'
Hmm... Linker zdaje się sugerować, że nie może znaleźć funkcji `main', do której odwołuje się jakiś tam kawałek kodu inicjalizacyjnego. Ale przecież widzę jak na dłoni, ślepy jeszcze nie jestem, przede mną na ekranie jawi się funkcja `main'.

Przekopałem cały internet i wszystko inne. Co ciekawe, ten problem pojawiał się już na forach, ale nikt nie podał jednoznacznego konkretnego rozwiązania tego dziwacznego błędu. Cóż, musiałem poradzić sobie samodzielnie.

Rozwiązanie

Osoby o słabszych nerwach proszone są o nieczytanie ciągu dalszego. Inne, które już zdążyły zapytać kolegę o przyczynę, powinny jak najszybciej zmienić numer telefonu i wyprowadzić się jak najdalej. Uwaga!!! Teraz:

Naciskamy Ctrl+S i sprawdzamy czy działa. Działa?

sobota, 10 listopada 2012

Wacom Bamboo i Linux Mint 13

Gdy po raz pierwszy podłączyłem mój tablet do komputera z Mintem na pokładzie spotkał mnie wielki zawód... przeogromny, przeogromniasty. Mój ulubiony sprzęt do projektowania PCB w Eaglu nie działa? Tak być nie może!

Na szczęście rozwiązanie mojego problemu okazało się być całkiem łatwe. Po prostu brakowało oprogramowania do obsługi tego modelu (Wacom Bamboo CTH-470). Najdziwniejsze jest w tym to, że na wcześniejszych wersjach Ubuntu (Mint to w zasadzie nic innego jak Ubuntu z małymi zmianami) tablet działał od razu i bez żadnego problemu.

Okazuje się, że aby zmusić sprzęt do współpracy należy w terminalu wydać (tylko/aż) trzy komendy:
sudo apt-add-repository ppa:lekensteyn/wacom-tablet
sudo apt-get update
sudo apt-get install wacom-dkms xserver-xorg-input-wacom
Po restarcie wszystko powinno działać.

piątek, 9 listopada 2012

Eliminacja drgań styków - część II

Część pierwsza: KLIK 

Sposoby eliminacji drgań styków




Drganiom styków można zaradzić na dwa sposoby:
  • Sprzętowo – za pomocą filtru RC (rysunek 3) lub wykorzystując specjalny układ scalony np. MAX6816, MAX6817 czy MAX6818. Wady tej metody to koszty części niezbędnych do realizacji wybranego sposobu, słaba dostępność wyspecjalizowanych układów scalonych oraz zajęcie cennego miejsca na płytce drukowanej. Przy eliminacji drgań (ang. debouncing) jednego przycisku te wady wydają się nie mieć znaczenia, jednak kiedy musimy obsłużyć jednocześnie kilka i więcej przycisków warto zwrócić na nie uwagę. Na rysunku 4 widać efekt działania filtru RC.
Rysunek 3 – filtr RC.
Źródło: http://konto.bydgoszcz.wsinf.edu.pl
Rysunek 4 - Drgania przefiltrowane przez filtr RC.
Źródło: Opracowanie we współpracy autora i Przemek6
  • Programowo – ten sposób nie wymaga żadnych dodatkowych elementów na płytce. Jego wady to pewne zapotrzebowanie na czas procesora oraz zajęcie części pamięci programu, która w małych mikrokontrolerach AVR (lub podobnych) jest zazwyczaj bardzo ograniczona. Programową eliminację drgań styków najłatwiej zrealizować przez wstrzymanie się z kolejnym odczytem stanu przycisku, dopóki nie ustaną drgania. Tą metodę przedstawia przykładowy kod na rysunku 5. Ma ona dużą wadę - przed każdym odczytem procesor bezczynnie czeka przez pewien czas (na przykładzie aż 20 ms). Dla procesora to bardzo długo. Przez ten czas procesor mógłby dalej wykonywać pozostałą część programu. Ten sposób również nie gwarantuje pełnej skuteczności.
Rysunek 5 – najprostsza programowa eliminacja drgań styków.
Źródło: Opracowanie własne