Problem: Podczas pracy przez SSH w Putty, np. korzystając z edytora Vi, odruchowo wcisnąłem Ctrl+S. Konsola zawiesiła się i nic nie można zrobić.
Rozwiązanie: Wciśnij Ctrl+Q
strona prywatna
grep -rl --include="*.php" 'tekst' folder/
grep -nr 'tekst' plik.php
grep -rl --include="*.php" 'tekst1' folder/ | xargs sed -i 's/tekst1/tekst2/g'
Same procesorki PIC nie są najgorsze, mimo że nie wyróżniają się jakoś specjalnie od AVR. Dużo więcej problemów sprawia natomiast środowisko programistyczne. Zainstalowałem MPLAB X IDE v.1.85 wraz z kompilatorem C XC8 (v 1.20).
Ogólnie w porównaniu do AVR jest dużo gorzej. Kompilator w wersji darmowej nie pozwala wybrać optymalizacji, co oznacza że:
1) Nasz kod wynikowy będzie prawdopodobnie dużo za duży;
2) Nie wiemy, czy poprawnie zachowywać się będą funkcje typu “delay()”;
Kolejny problem: brak jednoznaczności. Wiele przykładowych kodów znalezionych w internecie nie zadziała. Brak “typowych” bibliotek jak inttypes.h, lub delay.h. Brzmi to może śmiesznie, ale uruchamiając pierwszy program typu “Hello World” migający diodą, brakuje takich funkcji.
Napotkałem dziwne problemy z ustawianiem bitów. Wydają się nie działać kody tego typu:
T2CON |= (1<<TMR2ON)|(1<<T2CKPS1);
, natomiast kod taki:
T2CON = 0x06;
już tak. O co chodzi?
Nie spodziewałem się, że będzie można wykonywać operacje na pojedynczych bitach. Tymczasem taki zapis jest poprawny:
TMR2ON =1;
Zauważyłem, że niektóre rejestry (dokładnie np. STRA) nie zerują się po resecie.
Nie mogę się też połapać, jak ustawiać w programie bity konfiguracyjne procesora. Można znaleźć trzy składnie.
Pierwsza:
#FUSES NOWDT
Druga:
#pragma config WDTEN = OFF
I trzecia:
__config _WDT_OFF
Której używać?
Jeśli macie sugestie, jak rozwiązać moje problemy, proszę piszcie w komentarzach.
Dzisiaj po raz pierwszy zaprogramowałem procesor z rodziny PIC!
Użyty układ to PIC16F690.
Programator brenner8 mini zakupiłem na aukcji internetowej za śmieszne pieniądze. Mikroprocesor otrzymałem w postaci próbki od firmy Microchip. Parę słów o nim:
Jak widać, jest to w pewnym sensie odpowiednik ATMEGA48.
Układ podpięty do programatora “zaskoczył” od razu.
UPDATE: Kolega albertb zwrócił uwagę, że pamięć tego MCU odpowiada 8KB flash w AVR. Jest to więc bardziej odpowiednik ATMEGA88. Proszę pamiętać, że nie da się dokładnie porównać obu rodzin.
Płytka testowa jest bezpośrednią reakcją na informacje prezentowane na blogu mikrokontrolery.blogspot.com odnośnie startu z mikrokontrolerami AVR. Chciałem zaprezentować praktyczną i satysfakcjonującą realizację minimalistycznego podejścia do tematu nauki ich obsługi. Płytka wymaga znajomości podstaw elektroniki oraz umiejętności lutowania. Moim celem nie było zaprojektowanie układu, który wykona przedszkolak. Chciałem po pewnym czasie spędzonym z lutownicą mieć możliwość podłączenia do mikroprocesora maksymalnie łatwo jakiś peryferii, aby potem zająć się jedynie obsługą programową oraz oglądaniem efektów.
Bez lutowania można się obejść wtedy przez naprawdę długi czas. Ważne jedynie jest przygotowanie sobie odpowiednich “klocków” do zabawy. A są to w moim przypadku:
Dlaczego Atmega8A?
Trwają prace nad podobną płytką, tylko z MCU w obudowie TQFP.
Drobna uwaga: płytka nie zawiera zabezpieczenia przed odwrotnym podpięciem zasilania. Jeśli będzie trzeba, dodam takowe w postaci diody Schottkiego oraz bezpiecznika polimerowego.
Początek: Kliknij
Poniżej prezentuję przykładowe zdjęcia użycia płytki testowej.
Podłączenie wyświetlacza LCD 16*2
Podłączenie klawiatury membranowej 4×4
Przykładowe moduły. Modułami nazywam drobne układy, które mogą współpracować z MCU i są wykonane tak, aby ułatwić ich podłączenie.
Dioda nadawcza IR wraz z rezystorem ograniczającym. Można podłączyć bezpośrednio pod 2 piny MCU.
Zegar RTC na DS1307. Podłączany poprzez I2C (TWI).
Pamięć 24lc08 (1KB). Podłączana poprzez I2C. Wystarczą 4 przewody: GND, VCC, SDA, SCL.
Możliwości jest o wiele więcej. Szczególnie polecam zakupy na portalach aukcyjnych, wyszukując pod hasłem “arduino” gotowe moduły, które można wykorzystać do nauki. Aktualnie posiadam dalmierz ultradźwiękowy HC-SR04 oraz klawiaturę membranową.
Jeśli będzie zainteresowanie, opiszę jak wykonać i wykorzystać różne moduły.
Kontynuacja informacji o płytce testowej.
Wykaz części oraz orientacyjny koszt (nie zawsze da się kupić po 1 sztuce)
Dodatkowo:
Podsumowując, koszt wykonania płytki to 7,19zł.
Niech nikogo nie przerażą użyte elementy SMD. Dzięki ich wykorzystaniu, płytka jest sporo mniejsza, jest mniej wiercenia, a wykonanie układu jest tańsze. Wszystko da się polutować zwykłą lutownicą za 30zł, używając zwykłej grubej cyny 1mm. Wystarczy pęseta, jakaś lupa i trochę staranności. W razie potrzeby można wykonać prowizoryczny topik w płynie, w postaci gęstego roztworu kalafonii w denaturacie lub izopropanolu.
Elementy SMD, dłuższe zworki oraz wybrane złącza Pinów (u mnie PortB oraz PortC) lutujemy od strony druku. Popzostałe elementy tradycyjnie.
Przedstawiam Wam zaprojektowaną przeze mnie płytkę pod mikroprocesor ATMega8 (ATMega8A, ATMega48/88/168/328) w wersji DIP. Płytka powstała w celu ułatwienia nauki mikroprocesorów z wykorzystaniem płytki stykowej.
Możliwości i cechy:
Jak prezentuje się płytka razem z płytką stykową
Schemat (przepraszam, że tak nieestetycznie narysowany)
Pobierz PDF’a z mozaiką ścieżek gotową do termotransferu: atmega8_test_board
Jeśli występują problemy z wyszukiwaniem komputerów w sieci, należy upewnić się, że następujące usługi w systemie są odpowiednio skonfigurowane:
Oraz:
Włączyć te usługi najszybciej jest za pomocą następujących poleceń (uruchamianych w konsoli z uprawnieniami administracyjnymi):
sc config dnscache start= demand sc config fdrespub start= demand sc config ssdpsrv start= demand sc config upnphost start= demand sc config lanmanserver start= auto sc config nlasvc start= auto
Zamiast “demand” można dać “auto”, byle nie “disabled”.
Przykłady na PORTC, pin nr 3:
Konfiguracja pinów:
DDRC = 0x00;
DDRC = 0xFF;
Sterowanie wyjściami:
PORTC &= ~_BV(3);
PORTC |= _BV(3);
PORTC ^= _BV(3);
Odczyt stanu wejść:
bit_is_set(PINC,3)
bit_is_clear(PINC,3)