Makieta uruchomieniowa dla procesorów rodzin 51 AVR MSP AR…
Transkrypt
Makieta uruchomieniowa dla procesorów rodzin 51 AVR MSP AR…
Makieta uruchomieniowa dla procesorów rodzin: ’51, AVR, MSP i ARM Opracowanie Marcin Saj Spis treści 1. Geneza projektu makieta 1.1 1.2 1.3 1.4 1.5 Pomysł……………………………………………………………..3 Problemy…………………………………………………………..3 Prototyp……………………………………………………………4 Makieta uruchomieniowa dla procesora AT89C5131…………10 Rozbudowa makiety……………………………………………...10 2. Makieta uruchomieniowa dla procesorów rodzin: ’51, AVR, MSP430 i ARM 2.1 2.2 Problemy………………………………………………………….11 Makieta – opis…………………………………………………….13 2.2.1 Zworki……………………………………………………..14 2.3 Dodatek……………………………………………………………15 1. Geneza projektu makieta 2 1.1. Pomysł Pierwowzorem makiety uruchomieniowej dla 4 rodzin procesorów była makieta przystosowana do pracy tylko z jednym procesorem - rodziny ’51 a mianowicie AT89C5131. Pomysłodawcą projektu był dr inŜ. Andrzej Stępień kierownik dydaktyki Katedry Metrologii Elektronicznej i Fotonicznej, opiekun koła naukowego MOS – Microsystems Oriented Society. 1.2. Problemy Przed przystąpieniem do projektowania makiety waŜnym elementem, który musiał zostać sprawdzony to czy poziom napięć wejściowych, które pojawiały się na porcie procesora AT89C5131 podczas pracy z wyświetlaczem LCD nie uszkodzą procesora – wyświetlacz zastosowany w makiecie jest zasilany napięciem 5V zaś sterowany poziomami 3,3V, podczas sprawdzania zajętości wyświetlacza, wyświetlacz wystawia na linie danych sygnały o poziomie 5V co mogło spowodować uszkodzenie portu procesora. Mimo próśb o odpowiedź w tej kwestii, producent nie odpowiedział. Współpraca wyświetlacza z procesorem AT89C5131 musiała zostać sprawdzona doświadczalnie. Przeprowadzona próba rozwiała wątpliwości w kwestii odporności procesora na poziomy napięć rzędu 5V. Rys 1. Współpraca procesora z wyświetlaczem LCD 3 1.3. Prototyp. Po stworzeniu schematu ideowego makiety, drugą bardzo waŜną kwestią było zbudowanie prototypu. W warunkach domowych przy uŜyciu pseudo profesjonalnych narzędzi zbudowano prototyp makiety. Rys 2. Pokrywanie laminatu emulsją światłoczułą. Rys 2. Naświetlanie laminatu przez maskę lampą ultrafioletową. 4 Rys 3. Wywoływanie. Rys 4. Proces trawienia. 5 Rys 5. Proces trawienia. Rys 6. Proces trawienia. 6 Rys 7. Punktowanie. Rys 8. Nawiercanie. 7 Rys 9. Pokrywanie płytki kalafonią. Rys 10. MontaŜ. 8 Rys 11. Działający prototyp 9 1.4. Makieta uruchomieniowa dla procesora AT89C5131 Po uruchomieniu prototypu, przyszedł czas na profesjonalne wykonanie. Rys 12. Makieta uruchomieniowa dla procesora AT89C5131 Sercem Makiety był procesor AT89C5131, programowany przez port USB. Makieta mogła być zasilana z portu USB lub z zewnętrznego zasilacza ( wybór zasilania zworką VCC/USB). Makieta została wyposaŜona w wyświetlacz LCD 2*16, czujnik temperatury DS1820, zegar czasu rzeczywistego DS1338C (z wbudowanym rezonatorem kwarcowym) wraz z baterią podtrzymującą zasilanie RTC, szereg diod sygnalizacyjnych (diody dołączone do portu wraz z klawiszami, diody dołączone do źródeł prądowych oraz diody sygnalizujące zasilanie makiety i komunikację RS232), klawiszy dołączonych do portu i wejść przerwań, dwa stabilizatory napięcia 5V (zasilanie wyświetlacza) i 3,3V (zasilanie makiety), szereg zworek do wyboru róŜnych opcji makiety, układ MAX3232 – konwerter poziomu napięć - do komunikacji przez RS232 z komputerem i piezo bez generatora do prostych efektów akustycznych, zostały teŜ wyprowadzone wszystkie porty procesora. 1.5. Rozbudowa makiety Z chwilą, gdy powstała makieta zrodził się nowy pomysł. Pomysł Ŝeby stworzyć uniwersalną makietę dla kilku rodzin procesorów. 10 2. Makieta uruchomieniowa dla procesorów rodzin: ’51, AVR, MSP430 i ARM. 2.1. Problemy. Pierwszym problemem, który się pojawił był sposób dołączenia do makiety modułów z innymi mikrokontrolerami. Jedynym rozsądnym rozwiązaniem było wlutowanie w miejsce podstawki PLCC52 - w której był nasz podstawowy procesor – gniazda na piny precyzyjne Rys. 13a. W gniazdo to mogła być wpinana bezpośrednio podstawka z naszym procesorem Rys. 13b i jak planowano, teŜ moduły (poprzez piny precyzyjne dwustronne, które z jednej strony musiały zostać wlutowane w płytkę modułu z interesującym nas procesorem innej rodziny, co obrazuje rysunek 13c). Na początku próbowano makietę przystosować do modułu z procesorem rodziny AVR ATmega16, ale gdy przystąpiono do prac z procesorem rodziny MSP okazało się, Ŝe prac „uśredniających” makietę nie moŜna przeprowadzać dla kaŜdego mikrokontrolera osobno, poniewaŜ występuje wiele róŜnic, które uniemoŜliwiałyby poprawną współpracę makiety z procesorami innych rodzin. Rys 13a. Gniazdo na piny precyzyjne. Rys 13b. Podstawka w gnieździe precyzyjnym. 11 Rys 13c. Dwustronne piny precyzyjne Priorytetem w łączeniu modułów z makietą miała być kolejność pinów w poszczególnych portach. Chodzi o to, Ŝe moduły z mikrokontrolerami innych rodzin miały być wpinane w gniazdo o ściśle przyporządkowanych wcześniej pinach. JeŜeli przykładowo łączymy port pierwszy mikrokontrolera rodziny ’51 (tutaj symbolicznie – chodzi o piny gniazda precyzyjnego, które gdy był dołączony nasz mikrokontroler rodziny ’51 odpowiadały wyprowadzonemu portowi) z portem pierwszym (port A) mikrokontrolera rodziny AVR konkretnie ATmega16 to automatycznie straciliśmy dostęp do interfejsu SPI na makiecie, poniewaŜ w ATmega16, interfejs SPI jest na porcie C a w naszej ‘51nce na porcie pierwszym. Dalej jeŜeli połączymy port pierwszy ‘51ki do portu C AVRa (w dalszej części oznaczenia mikrokontrolerów będą podawane skrótowo np. ’51, AVR itp.) i jak wyŜej wspomniane priorytetem będzie układ pinów (pin P1.0 do pinu PC.0, P1.1 do PC.1 itd.) to w dalszym ciągu nie mamy dostępu do SPI poniewaŜ odpowiadające sygnały MOSI MISO itd. były wyprowadzone w AVR na inne piny niŜ w ‘51nce. Z kolei, gdy próbowano zaprojektować moduł z procesorem MSP (wybrano MSP430F135) i połączono port P3 MSP z portem P1 ‘51ki okazało się Ŝe piny interfejsu SPI teŜ są w innych miejscach a w dodatku teŜ w innej kolejności niŜ w AVR. Na domiar złego na tym samym porcie w MSP było łącze szeregowe, które na makiecie jest na porcie P3 (w AVR na porcie PD) nie wspominając o tym, Ŝe do portu P1 ‘51ki dołączone są teŜ klawisze z diodami LED. Czym więcej rodzin procesorów, problemy rosną wykładniczo. To jest tylko przykład występujących problemów, zostały teŜ inne interfejsy I2C, 1wire czy LCD albo cztery diody LED, które były dołączone do źródeł prądowych ‘51ki bez szeregowego rezystora. Dołączając inny procesor (pozostałe wybrane procesory innych rodzin nie mają źródeł prądowych) mógł on zostać uszkodzony przez płynący prąd bez szeregowego rezystora. Zaprojektowanie makiety dla kilku rodzin procesorów nie było łatwym zadaniem. Problem interfejsu SPI został rozwiązany w sprytny sposób, stworzono układ zworek, które ulokowano w odpowiednie miejsca dla ‘51ki, AVR i MSP, dołączając poszczególne sygnały tam gdzie one powinny być. Łącze szeregowe zostało uratowane w podobny sposób. Dla procesora ARM makieta nie była specjalnie przygotowywana jak dla pozostałych procesorów, poniewaŜ dodatkowo skomplikowałoby to makietę i uniemoŜliwiłoby to jej budowę. Aby procesor ARM poprawnie współpracował, zmodyfikowano w odpowiedni sposób płytkę modułu z tymŜe procesorem. WyposaŜoną ją w szereg zworek do wyboru opcji podobnie jak w przypadku interfejsu SPI. 12 2.2. Makieta – opis Rys 14. Makieta uruchomieniowa dla procesorów rodzin ’51, AVR, MSP430 i ARM. Nowa uniwersalna makieta zawiera w swej budowie to, co pierwsza wersja makiety, ale dodatkowo: przetwornik AC, przetwornik CA, podstawkę na pastylki firmy maxim-dallas, wyprowadzono napięcia zasilające i makietę wyposaŜono w układ zworek, dzięki którym makieta stała się uniwersalna (przy zmianie modułu dołączanego do gniazda precyzyjnego musimy odpowiednio ustawić zworki). 13 2.2.1. Zworki USB_VCC - wybór źródła zasilania makiety, piezo_J - dołączanie piezo do pinu procesora, RW_J - opcja odczytu stanu zajętości wyświetlacza, LT_J - opcja podświetlania wyświetlacza, LCD_LT - opcja wyboru dla wyświetlaczy z róŜnym układem pinów zasilania podświetlenia wyświetlacza – zworka powinna zostać ustawiona „na stałe” po ustaleniu pinów podświetlania, (naleŜy sprawdzić w dokumentacji wyświetlacza kolejność pinów podświetlenia i skorelować ze schematem ideowym makiety a następnie ustawić odpowiednio zworki LCD_LT i LT_J) INT1/Dp4 - wybór obsługi wejścia przerwań bądź diody LED Dp4, SPI/Dp3 - ustawić na SPI w przypadku korzystania z przetworników AC lub CA, RST_J - podczas programowania procesora MSP mogą wystąpić problemy z resetowaniem procesora, naleŜy wtedy zworkę ustawić na OFF, JP–SPI - w przypadku korzystania z SPI naleŜy odpowiednio ustawić zworki w zaleŜności od typu procesora, Rys 15a. ’51 Rys 15b. AVR Rys 15c. MSP Rys 15d. ARM 14 LED&SPI/RS(MSP) - wybór opcji poprawnego działania komunikacji przez RS232 w przypadku pracy z procesorem MSP lub SPI i diod LED, Rys 16a. LED&SPI Rys 16b. RS(MSP) 2.3. Dodatek Klawisze PSEN i Vref (otwieranie sesji USB) – uŜywane tylko podczas programowania procesora ‘51 – patrz do opisu „Flip – programowanie procesora AT89C5131” Obsługiwane typy procesorów – patrz do opisów: „Moduł AVR”, „Moduł MSP” i „Moduł ARM”, Szczegółowy opis projektu makieta – patrz do opisu „Makieta – schemat i płytka” 15