Ero sivun ”8051” versioiden välillä
p (→Laajennukset) |
|||
(53 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä) | |||
Rivi 4: | Rivi 4: | ||
| tekijät = useita | | tekijät = useita | ||
| aloitettu = 2023 | | aloitettu = 2023 | ||
− | | tila = version 0 | + | | tila = version 1.0 |
| github = | | github = | ||
}} | }} | ||
Rivi 11: | Rivi 11: | ||
== 8051 kokeilu- ja kehitysalusta == | == 8051 kokeilu- ja kehitysalusta == | ||
− | Metropoliasta saadun lahjoituksen myötä hacklabille | + | Metropoliasta saadun lahjoituksen myötä hacklabille suunniteltiin ja toteutettiin 8051 kokeilulauta. |
− | + | ||
+ | Ohessa kuvat käyttövalmiista kurssilaudasta: | ||
+ | [[Tiedosto:8051-A.png|576x432px|right|top]] | ||
+ | |||
+ | === 8051 Paketti === | ||
+ | Paketti sisältää siis | ||
+ | # Prosessorilaudan | ||
+ | # Näyttölevyn (näyttölevy ei ole pakollinen eikä välttämätön, mutta kuuluu pakettiin) | ||
+ | #:Prosessorilaudalla on 2x20 pinninen koirasliitin ja näyttölevyssä 2x20 pinninen naarasliitin. | ||
+ | #:Käytännössä tämä on laajennusväylä. | ||
+ | #:Jos haluaa rakentaa useampia laajennuksia pinottavaksi, pitää liitimet olla pitkäpinnisiä (pitkäpinnisiä ei ole). | ||
+ | #::Pitkäpiikkiseksi väyläliittimeksi sopii esim. [https://www.partco.fi/fi/liittimet/piikkirima-liittimet/piikkirimat-tuumarasterilla/19155-pr-2x20-n-pp.html tämä] | ||
+ | # FTDI RS232-USB muuntimen (kiinakopio, näkyy toimivan). Valmis muunnin on halvempi kuin FTDI-piiri. | ||
+ | # USB-A - Mini-USB johto | ||
+ | |||
+ | |||
+ | [[Tiedosto:8051-B.png|576x432px|right|top]] | ||
+ | Komponentit, jotka eivät ole putkissa, nauhassa tai laatikoissa (MCU,RAM,573-latch,PLCC32-kanta, Näyttö, FTDI) ovat KAKSI-kerroksisessa lokerikossa. | ||
+ | |||
+ | Lokerikossa on muovipussissa valmiiksiohjelmoituja PM3 (monitori-ohjelman) rommeja PM3 tarralla ROM1-kantaan sekä blankoja testiohjelmia sisältäviä rommeja ROM2-kantaan. | ||
+ | |||
+ | Lokerikossa on myös FTDI-muuntimia. | ||
+ | |||
+ | Lokerikko kannattaa avata varovasti ja sulkea huolella. Lattialle kipatut komponentit ovat ikäviä kerätä. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Ohessa kuvat lokerikon pääli- ja pohjakerroksesta. | ||
+ | Pohjakerroksessa ovat pääosa liittimistä. | ||
+ | [[Tiedosto:8051-C.png|576x432px]] | ||
+ | [[Tiedosto:8051-D.png|576x432px]] | ||
+ | |||
+ | Tietenkin tarvitaan myös piirilevyt. | ||
+ | Samassa laatikossa tullee olemaan myös valmiiksiohjelmoitu rommi. | ||
+ | |||
+ | [[Tiedosto:8051-E.png|576x432px]] | ||
+ | |||
+ | === Kokoamisohjeita === | ||
+ | Piirilevyssä on hyvin merkittynä sinne kuuluvat komponentit. | ||
+ | Hacklabilla saatavilla olevista komponenteista johtuen on valittava seuraavat vaihtoehdot: | ||
+ | #7.5k vastus 10k vastusten tilalle. | ||
+ | #560R vastus 470R tilalle | ||
+ | #22pF konkat ovat itseasiassa lokerikossa 33pF, mutta sitä ei päältä huomaa. Ei vaikuta toimivuuteen. | ||
+ | #R14 ja R15 (10k) tilalle kannattaa laittaa 4k7, näissä pinneissä oli kynnysjänniteongelmia. | ||
+ | |||
+ | LEDit ovat varmaankin kinkkisimmät komponentit kolvata. | ||
+ | Ne on sivulle näyttäviä ledejä, jolloin piirilevyn voi myös koteloida ja saada ledit näkyviin. | ||
+ | Näitä oli tuurilla labilla yksi kela. | ||
+ | |||
+ | Jos ei ole kokemusta pintaliitoskokoonpanosta, niin ensimmäinen kurssijakso on pintaliitoksista ja levyn kokoonpanosta. Kurssilta voivat kokeneetkin saada hyviä vinkkejä. | ||
+ | |||
+ | === Näyttölevy === | ||
+ | Näyttölevyn komponentteja ei ole koottu lokerikkoon, vaan näiden keräily on jätetty komponetti-wikin ja seinälokerikoiden käytön opiskeluksi ja tutustumiseksi. | ||
+ | |||
+ | === Laajennukset === | ||
+ | Laajennuksia tullaan tekemään muutamia ja muitakin kannustetaan tekemään omia keksintöjään. | ||
+ | #Breakpoint-HW prototyyppi on käyttövalmis ohjelmistoineen | ||
+ | #Näppäimistön piirilevy on toteutettu | ||
+ | #External Ram osoitteisiin mapattua IO:ta on helppo tehdä | ||
+ | #Lisätiedoissa [https://nx2063.your-storageshare.de/s/aLowG8cqK82R8wY Application Notes] löytyy AN425, jossa on I2C kontrollerin PCF8584 esimerkkitoteutus koodiajureineen. | ||
+ | :: Näitä PCF8584:ia löytyy labilta. Se on toteutukseltaan niin pieni, että sen voi sisällyttää vaikka jokaiseen levyyn. Osoitteen rajaus vaatii enemmän rautaa. | ||
+ | |||
+ | # Breakpoint Board: | ||
+ | :: Breakpoint Board dokumentit on talletettu hakemistoon: [https://nx2063.your-storageshare.de/s/Yy7pNHdGRSxM382 BREAKPOINT BOARD] | ||
+ | :: Toiminnallisuuden koodi kasvoi neljään kiloon ja piti lopettaa ominaisuuksien lisääminen kooditilan puutteessa. | ||
+ | |||
+ | :: Koodi on vielä testiversiota ja testaus on tervetullutta. | ||
+ | :: Protolevyä on vielä yksi jäljellä, jos on kiinnostusta niin tilataan lisää. | ||
+ | :: Koodin voi kääntää RAM-pohjaiseksi (03000H - 03FFFH), | ||
+ | :: ROM pohjaiseksi 8051-Boardilla ohjelmoitavaksi (ROM osoite on 08000H, koodiosoite 08000H), | ||
+ | :: tai ohjelmointilaitteella ohjelmoitavaksi (ROM osoite on 00000H, koodiosoite on 08000H0. | ||
+ | :: Hakemisto sisältää myös Paulmon3 päivityksen, jossa on: | ||
+ | ::: * korjattu bugi (ei ladannut koodi osoitteesta 08000H), | ||
+ | ::: * siirretty pino alkamaan 080H:sta | ||
+ | ::: * siirretty koodin latauslaskurit 0F0H:aan | ||
+ | ::: * 02FH tavun käyttö muokattu pois | ||
+ | |||
+ | === Tekniset dokumentit === | ||
+ | Tekninen materiaali löytyy Depilin github-sivuilta: | ||
+ | https://gitlab.com/Depili/80c51 | ||
+ | |||
Soveltuvat lahjoituksessa saadut komponentit ovat seuraavat: | Soveltuvat lahjoituksessa saadut komponentit ovat seuraavat: | ||
Rivi 26: | Rivi 122: | ||
5. 2x16 LCD-paneeli LR4422 | 5. 2x16 LCD-paneeli LR4422 | ||
− | + | Ohjelmistototeutukseen on päätetty käytettäväksi Paul Stoffregen:in PAULMON2 - monitoria. | |
− | |||
− | |||
Viitteenä on myös vastaava piirikaavio. | Viitteenä on myös vastaava piirikaavio. | ||
Paulin sivusto on hyvinkin mielenkiintoinen: [https://www.pjrc.com/ PRJC.com] | Paulin sivusto on hyvinkin mielenkiintoinen: [https://www.pjrc.com/ PRJC.com] | ||
Rivi 48: | Rivi 142: | ||
[https://nx2063.your-storageshare.de/s/5XHASG3tPCMpRkC Paulmon_8051_board.pdf] | [https://nx2063.your-storageshare.de/s/5XHASG3tPCMpRkC Paulmon_8051_board.pdf] | ||
− | + | [https://www.pjrc.com/tech/8051/board5/lcd_example.html LCD-koodi] | |
+ | |||
+ | ===Muuta materiaalia:=== | ||
+ | Kirja: | ||
+ | [https://nx2063.your-storageshare.de/s/os9gGsanKpzwJAM The 8051 Microcontroller] | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/aLowG8cqK82R8wY Application Notes] | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/4nKj7oCiP3bPRyF Datasheets] | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/eNYB7tx8BLwzSpR Software] | ||
+ | :# asl-current.tar.gz - ASL Assembler - Linux | ||
+ | :# aswcurr.exe - ASL Assembler - Windows | ||
+ | :# sdcc-4.4.0-amd64-unknown-linux2.5.tar.bz2 - Small Device C Compiler | ||
+ | :#:lcd_ex01.c esimerkkikoodi 8051:lle, kääntäjän testaukseen | ||
+ | :#:sdccman.pdf Ohje | ||
+ | :# Kaikenlaista muuta | ||
+ | |||
+ | ===PAULMON2 - käyttöohje=== | ||
+ | Käyttöohjeet on koottu PAULMON2:n html-tiedoistoista ja lokalisoitu (viittaukset poistettu) | ||
+ | omalla koneella käytettäväksi. Koottu HTML-dokumentti on tulostettu PDF-tiedostoksi. | ||
+ | Käyttöohjeet sisältävät alkuperäisen ohjeistuksen, joten Hacklabin 8051-projektin muutokset | ||
+ | eivät välttämättä (ellei niitä sinne editoida) sisälly. | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/FLR7zmRTj5GzNdM PAULMON2 Docs.pdf] | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/7xyFmHWYwdSSFe6 docs.html] | ||
+ | |||
+ | ===Linkkejä=== | ||
+ | |||
+ | [https://sdcc.sourceforge.net/ Open source C-kääntäjä, Windows/Linux/Mac] | ||
− | [ | + | [http://www.noise.inf.u-szeged.hu/Education/Mikrovez/PCAcookbook.pdf PCA Cookbook, hyvä yleisesitys PCA:sta] |
− | + | [https://www.keil.com/c51/baudrate.asp UARTin baudinopeuslaskin] | |
− | [https://nx2063.your-storageshare.de/s/ | + | [https://nx2063.your-storageshare.de/s/LR2BZL9JYEJ6Zb6 8051-käskykanta käyttökelpoisessa muodossa] |
== Rauta == | == Rauta == | ||
+ | J3:lla ohjataan prosessorille näkyvää muistikarttaa. Pinnit oikosuljettu=HIGH ja avoin=LOW. | ||
+ | {| class="wikitable" | ||
+ | |- style="font-weight:bold; text-align:center;" | ||
+ | ! style="border-color:inherit; text-align:left;" | Osoite | ||
+ | ! colspan="2" | Layout HIGH | ||
+ | ! colspan="2" | Layout LOW | ||
+ | |- style="font-weight:bold;" | ||
+ | | style="font-weight:normal;" | | ||
+ | | style="text-align:center;" | Progmem | ||
+ | | Ext.Ram | ||
+ | | style="text-align:center;" | Progmem | ||
+ | | Ext.Ram | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | 0000-1FFF | ||
+ | | Rom1 | ||
+ | | Ram1 | ||
+ | | Rom2 P0 | ||
+ | | Ram1 | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | 2000-3FFF | ||
+ | | Ram2 | ||
+ | | Ram2 | ||
+ | | Rom2 P1 | ||
+ | | | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | 4000-5FFF | ||
+ | | | ||
+ | | IO.0 | ||
+ | | Rom2 P2 | ||
+ | | IO.0 | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | 6000-7FFF | ||
+ | | | ||
+ | | IO.1 | ||
+ | | Rom2 P3 | ||
+ | | IO.1 | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | 8000-9FFF | ||
+ | | Rom2 P0 | ||
+ | | Rom2 P0 | ||
+ | | | ||
+ | | | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | A000-BFFF | ||
+ | | Rom2 P1 | ||
+ | | Rom2 P1 | ||
+ | | | ||
+ | | | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | C000-DFFF | ||
+ | | Rom2 P2 | ||
+ | | Rom2 P2 | ||
+ | | | ||
+ | | | ||
+ | |- style="text-align:center;" | ||
+ | | style="border-color:inherit; text-align:left;" | E000-FFFF | ||
+ | | Rom2 P3 | ||
+ | | Rom2 P3 | ||
+ | | Ram2 | ||
+ | | Ram2 | ||
+ | |} | ||
+ | |||
+ | * 2 x 128k rom; toiseen monitori (rom1), toiseen käyttäjän koodi (rom2). Näin käyttäjän koodia sisältävä rommi saadaan ohjelmallisesti kirjoitettavaksi. | ||
+ | * 2 x 8k ram: toinen aitoa rammia, toinen mapattuna sekä extrammiin että progmemiin, täten tänne voi kirjoittaa kokeilukoodia ilman rommiin kirjoittamista. | ||
− | + | == Dokumentit (skemat, bom, layout)== | |
− | |||
Laudan skema: | Laudan skema: | ||
− | [https://nx2063.your-storageshare.de/s/ | + | [https://nx2063.your-storageshare.de/s/PWCkiYH2ErRtipo 80c51_main.pdf] |
+ | |||
+ | Laudan BOM: | ||
+ | [https://nx2063.your-storageshare.de/s/Gty2qZEJpxMSgB9 80c51_main_BOM.pdf] | ||
+ | |||
+ | Laudan layout: | ||
+ | [https://nx2063.your-storageshare.de/s/EGs7QrMyFrdk9oy Layout 80c51_Layout.png] | ||
+ | |||
+ | LCD-laajennuksen piirikaavio: | ||
+ | [https://nx2063.your-storageshare.de/s/XRric9MB7J534aN LCD piirikaavio] | ||
+ | |||
+ | LCD-laajennuksen layout: | ||
+ | [https://nx2063.your-storageshare.de/s/rbRDJxdMTBkxz3d LCD layout] | ||
+ | |||
+ | Printattava kotelo: | ||
+ | [https://nx2063.your-storageshare.de/s/WRmPaw5pXKN5ZrN 8051_PLasticCase.zip] | ||
+ | |||
+ | ==Asennusohjeita== | ||
+ | |||
+ | |||
+ | ===ASL-kääntäjän asennus=== | ||
+ | |||
+ | ====Asennus Windowsiin==== | ||
+ | |||
+ | # Lataa ASL-asennuspaketti. Löytyy ylempää tältä sivulta kohdasta Muuta materiaalia -> Software, täältä '''aswcurr.zip'''. | ||
+ | # Pakettia ei tarvitse varsinaisesti asentaa, riittää että se puretaan sopivaan hakemistoon. Tee hakemisto tätä varten haluamaasi polkuun ja pura zip sinne. Tässä esimerkissä on tehty hakemisto C:\MCS51\ASL. Itse kääntäjä on tämän jälkeen paikassa C:\MCS51\ASL\bin\asl.exe ja manuaali C:\MCS51\ASL\doc\as_EN.pdf | ||
+ | # ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto [https://gitlab.com/Depili/80c51/-/blob/main/code/p80c51fa.inc p80c51fa.inc]. Lataa tämä itsellesi ja kopioi ASL:n include-hakemistoon C:\MCS51\ASL\include. | ||
+ | |||
+ | Kääntäjä on nyt asennettu. | ||
+ | |||
+ | ====Kääntäjän käyttö Windowsissa==== | ||
+ | |||
+ | Käännös muodostuu kahdesta vaiheesta: | ||
+ | * Kääntäjä tuottaa omaa formaattiaan olevan p-päätteisen binäärin (''source.asm -> source.p'') | ||
+ | * Jotta tämä saadaan ladattua Paulmoniin, se pitää konvertoida Intel-hex-formaattiin ohjelmalla p2hex (''source.p -> source.hex'') | ||
+ | |||
+ | Näiden vaiheiden ajamiseen on useita tapoja, riippuen siitä, minkälaista käännösympäristöä kukin on tottunut käyttämään. Tässä eräs yksinkertainen tapa, joka ei vaadi mitään lisäkilkkeiden (esim. make-systeemin) lataamista Windowsiin eikä ympäristömuuttujien kanssa pelaamista. | ||
+ | |||
+ | Halutaan kääntää ''blinky.asm''. Tehdään source-koodin kanssa samaan hakemistoon ''make.bat'', johon tulee rivit: | ||
+ | |||
+ | C:\MCS51\ASL\bin\asl -cpu 8051 -L -i C:\MCS51\ASL\include blinky.asm | ||
+ | C:\MCS51\ASL\bin\p2hex blinky.p | ||
+ | |||
+ | Ensimmäisellä rivillä ajetaan kääntäjä. Kääntäjälle annetaan nämä parametrit: | ||
+ | * ''-cpu 8051'': kerrotaan kääntäjälle, että ollaan kääntämässä 8051:n assemblyä | ||
+ | * ''-L'': pyydetään kääntäjää tuottamaan myös listaustiedosto | ||
+ | * ''-i C:\MCS51\ASL\include'': kerrotaan kääntäjälle, että inc-tiedostoja kannattaa etsiä täältä | ||
+ | |||
+ | Toisella rivillä muodostetaan edellä syntyneestä ''blinky.p'':stä ''blinky.hex''. | ||
+ | |||
+ | Ajetaan Command prompt-ikkunassa source-koodin hakemistossa ''make'', jolloin syntyy ''blinky.hex''. | ||
+ | |||
+ | Tässä lyhyt koodi, jonka voi tallettaa ''blinky.asm'':ksi ja testata edellä kuvattua prosessia. | ||
+ | |||
+ | ; Blink led at P1.7 using busy-loop based delay | ||
+ | |||
+ | INCLUDE p80c51fa.inc | ||
+ | |||
+ | ORG 2000H | ||
+ | main_loop: | ||
+ | CPL P1.7 ; complement led at P1.7 | ||
+ | |||
+ | ; delay | ||
+ | MOV DPTR,#0 | ||
+ | delay_loop: | ||
+ | INC DPTR ; 2 | ||
+ | MOV A,DPL ; 1 | ||
+ | ORL A,DPH ; 1 | ||
+ | JNZ delay_loop ; 2 | ||
+ | |||
+ | JMP main_loop | ||
+ | |||
+ | ====Asennus Linuxiin==== | ||
+ | |||
+ | ===== Linux mint - ympäristössä ===== | ||
+ | |||
+ | 1. Lataa asl-current.tar.gz Software-hakemistosta: | ||
+ | |||
+ | [https://nx2063.your-storageshare.de/s/eNYB7tx8BLwzSpR Software] | ||
+ | |||
+ | 2. Pura hakemisto haluamaasi paikkaan: | ||
+ | |||
+ | tar xvof ./asl-current.tar.gz | ||
+ | |||
+ | 3. Siirry hakemistoon asl-current ja kopioi: | ||
+ | |||
+ | cp ./Makefile.def-samples/Makefile.def-x86_64-unknown-linux ./Makefile.def | ||
+ | |||
+ | 4. Käännä komennolla: | ||
+ | |||
+ | make | ||
+ | |||
+ | 4.1 Jos käännös ei onnistu perusasennuksessa, asenna build-essential ja käännä uudestaan: | ||
+ | |||
+ | apt install build-essential | ||
+ | |||
+ | 4.2 Testaa: | ||
+ | |||
+ | make test | ||
+ | |||
+ | 4.3 Makefile on vähän vajaa, tahtoo tehdä latex-pdf käännöksen. Jos latexia ei ole asennettuna niin: | ||
+ | |||
+ | 4.3.1 Editoi Makefile (estä dokumenttien käännös): | ||
+ | |||
+ | all: binaries docs ==> all: binaries #docs | ||
+ | |||
+ | 4.3.2 Asenna: | ||
+ | sudo make install | ||
+ | |||
+ | 4.3.3 Jos haluat dokumentit: | ||
+ | Editoi Makefile (palauta dokumenttien käännös, käännä ainoastaan englanninkieliset): | ||
+ | |||
+ | all: binaries #docs ==> all: binaries docs | ||
+ | |||
+ | docs: doc_DE doc_EN ==> docs: doc_EN | ||
+ | |||
+ | Käännä dokumentit: | ||
+ | make docs | ||
+ | |||
+ | 5. ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto [https://gitlab.com/Depili/80c51/-/blob/main/code/p80c51fa.inc p80c51fa.inc]. Lataa tämä itsellesi ja kopioi ASL:n include-hakemistoon /usr/local/include/asl | ||
− | + | ====Asennus Maciin==== | |
− | |||
− | + | 1. brew install pkorpine/asl/asl | |
− | + | 2. ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto [https://gitlab.com/Depili/80c51/-/blob/main/code/p80c51fa.inc p80c51fa.inc]. Lataa tämä itsellesi haluamaasi paikkaan. | |
− | |||
− | |||
− |
Nykyinen versio 12. syyskuuta 2024 kello 14.37
{{{kuvateksti}}}
| }}8051
{{#if: | | }} {{#if: | | }}Tyyppi: | electronics |
Tekijät: | useita |
Aloitettu: | 2023 |
Tila: | version 1.0 |
GitHub: | [] |
URL: | [{{{url}}}] |
8051 kokeilu- ja kehitysalusta
Metropoliasta saadun lahjoituksen myötä hacklabille suunniteltiin ja toteutettiin 8051 kokeilulauta.
Ohessa kuvat käyttövalmiista kurssilaudasta:
8051 Paketti
Paketti sisältää siis
- Prosessorilaudan
- Näyttölevyn (näyttölevy ei ole pakollinen eikä välttämätön, mutta kuuluu pakettiin)
- Prosessorilaudalla on 2x20 pinninen koirasliitin ja näyttölevyssä 2x20 pinninen naarasliitin.
- Käytännössä tämä on laajennusväylä.
- Jos haluaa rakentaa useampia laajennuksia pinottavaksi, pitää liitimet olla pitkäpinnisiä (pitkäpinnisiä ei ole).
- Pitkäpiikkiseksi väyläliittimeksi sopii esim. tämä
- FTDI RS232-USB muuntimen (kiinakopio, näkyy toimivan). Valmis muunnin on halvempi kuin FTDI-piiri.
- USB-A - Mini-USB johto
Komponentit, jotka eivät ole putkissa, nauhassa tai laatikoissa (MCU,RAM,573-latch,PLCC32-kanta, Näyttö, FTDI) ovat KAKSI-kerroksisessa lokerikossa.
Lokerikossa on muovipussissa valmiiksiohjelmoituja PM3 (monitori-ohjelman) rommeja PM3 tarralla ROM1-kantaan sekä blankoja testiohjelmia sisältäviä rommeja ROM2-kantaan.
Lokerikossa on myös FTDI-muuntimia.
Lokerikko kannattaa avata varovasti ja sulkea huolella. Lattialle kipatut komponentit ovat ikäviä kerätä.
Ohessa kuvat lokerikon pääli- ja pohjakerroksesta. Pohjakerroksessa ovat pääosa liittimistä.
Tietenkin tarvitaan myös piirilevyt. Samassa laatikossa tullee olemaan myös valmiiksiohjelmoitu rommi.
Kokoamisohjeita
Piirilevyssä on hyvin merkittynä sinne kuuluvat komponentit. Hacklabilla saatavilla olevista komponenteista johtuen on valittava seuraavat vaihtoehdot:
- 7.5k vastus 10k vastusten tilalle.
- 560R vastus 470R tilalle
- 22pF konkat ovat itseasiassa lokerikossa 33pF, mutta sitä ei päältä huomaa. Ei vaikuta toimivuuteen.
- R14 ja R15 (10k) tilalle kannattaa laittaa 4k7, näissä pinneissä oli kynnysjänniteongelmia.
LEDit ovat varmaankin kinkkisimmät komponentit kolvata. Ne on sivulle näyttäviä ledejä, jolloin piirilevyn voi myös koteloida ja saada ledit näkyviin. Näitä oli tuurilla labilla yksi kela.
Jos ei ole kokemusta pintaliitoskokoonpanosta, niin ensimmäinen kurssijakso on pintaliitoksista ja levyn kokoonpanosta. Kurssilta voivat kokeneetkin saada hyviä vinkkejä.
Näyttölevy
Näyttölevyn komponentteja ei ole koottu lokerikkoon, vaan näiden keräily on jätetty komponetti-wikin ja seinälokerikoiden käytön opiskeluksi ja tutustumiseksi.
Laajennukset
Laajennuksia tullaan tekemään muutamia ja muitakin kannustetaan tekemään omia keksintöjään.
- Breakpoint-HW prototyyppi on käyttövalmis ohjelmistoineen
- Näppäimistön piirilevy on toteutettu
- External Ram osoitteisiin mapattua IO:ta on helppo tehdä
- Lisätiedoissa Application Notes löytyy AN425, jossa on I2C kontrollerin PCF8584 esimerkkitoteutus koodiajureineen.
- Näitä PCF8584:ia löytyy labilta. Se on toteutukseltaan niin pieni, että sen voi sisällyttää vaikka jokaiseen levyyn. Osoitteen rajaus vaatii enemmän rautaa.
- Breakpoint Board:
- Breakpoint Board dokumentit on talletettu hakemistoon: BREAKPOINT BOARD
- Toiminnallisuuden koodi kasvoi neljään kiloon ja piti lopettaa ominaisuuksien lisääminen kooditilan puutteessa.
- Koodi on vielä testiversiota ja testaus on tervetullutta.
- Protolevyä on vielä yksi jäljellä, jos on kiinnostusta niin tilataan lisää.
- Koodin voi kääntää RAM-pohjaiseksi (03000H - 03FFFH),
- ROM pohjaiseksi 8051-Boardilla ohjelmoitavaksi (ROM osoite on 08000H, koodiosoite 08000H),
- tai ohjelmointilaitteella ohjelmoitavaksi (ROM osoite on 00000H, koodiosoite on 08000H0.
- Hakemisto sisältää myös Paulmon3 päivityksen, jossa on:
- * korjattu bugi (ei ladannut koodi osoitteesta 08000H),
- * siirretty pino alkamaan 080H:sta
- * siirretty koodin latauslaskurit 0F0H:aan
- * 02FH tavun käyttö muokattu pois
Tekniset dokumentit
Tekninen materiaali löytyy Depilin github-sivuilta: https://gitlab.com/Depili/80c51
Soveltuvat lahjoituksessa saadut komponentit ovat seuraavat:
1. 74HC573D SOIC20 8-bit osoite latch
2. CAT28F010NI-12 PLCC32 eeprom
3. AS6C6264-55SCN SOP28 8kx8 SRAM
4. P80C51FA-4A PLCC44 prosessori
5. 2x16 LCD-paneeli LR4422
Ohjelmistototeutukseen on päätetty käytettäväksi Paul Stoffregen:in PAULMON2 - monitoria. Viitteenä on myös vastaava piirikaavio. Paulin sivusto on hyvinkin mielenkiintoinen: PRJC.com
Muuta materiaalia:
Kirja: The 8051 Microcontroller
- asl-current.tar.gz - ASL Assembler - Linux
- aswcurr.exe - ASL Assembler - Windows
- sdcc-4.4.0-amd64-unknown-linux2.5.tar.bz2 - Small Device C Compiler
- lcd_ex01.c esimerkkikoodi 8051:lle, kääntäjän testaukseen
- sdccman.pdf Ohje
- Kaikenlaista muuta
PAULMON2 - käyttöohje
Käyttöohjeet on koottu PAULMON2:n html-tiedoistoista ja lokalisoitu (viittaukset poistettu) omalla koneella käytettäväksi. Koottu HTML-dokumentti on tulostettu PDF-tiedostoksi. Käyttöohjeet sisältävät alkuperäisen ohjeistuksen, joten Hacklabin 8051-projektin muutokset eivät välttämättä (ellei niitä sinne editoida) sisälly.
Linkkejä
Open source C-kääntäjä, Windows/Linux/Mac
PCA Cookbook, hyvä yleisesitys PCA:sta
8051-käskykanta käyttökelpoisessa muodossa
Rauta
J3:lla ohjataan prosessorille näkyvää muistikarttaa. Pinnit oikosuljettu=HIGH ja avoin=LOW.
Osoite | Layout HIGH | Layout LOW | ||
---|---|---|---|---|
Progmem | Ext.Ram | Progmem | Ext.Ram | |
0000-1FFF | Rom1 | Ram1 | Rom2 P0 | Ram1 |
2000-3FFF | Ram2 | Ram2 | Rom2 P1 | |
4000-5FFF | IO.0 | Rom2 P2 | IO.0 | |
6000-7FFF | IO.1 | Rom2 P3 | IO.1 | |
8000-9FFF | Rom2 P0 | Rom2 P0 | ||
A000-BFFF | Rom2 P1 | Rom2 P1 | ||
C000-DFFF | Rom2 P2 | Rom2 P2 | ||
E000-FFFF | Rom2 P3 | Rom2 P3 | Ram2 | Ram2 |
- 2 x 128k rom; toiseen monitori (rom1), toiseen käyttäjän koodi (rom2). Näin käyttäjän koodia sisältävä rommi saadaan ohjelmallisesti kirjoitettavaksi.
- 2 x 8k ram: toinen aitoa rammia, toinen mapattuna sekä extrammiin että progmemiin, täten tänne voi kirjoittaa kokeilukoodia ilman rommiin kirjoittamista.
Dokumentit (skemat, bom, layout)
Laudan skema: 80c51_main.pdf
Laudan BOM: 80c51_main_BOM.pdf
Laudan layout: Layout 80c51_Layout.png
LCD-laajennuksen piirikaavio: LCD piirikaavio
LCD-laajennuksen layout: LCD layout
Printattava kotelo: 8051_PLasticCase.zip
Asennusohjeita
ASL-kääntäjän asennus
Asennus Windowsiin
- Lataa ASL-asennuspaketti. Löytyy ylempää tältä sivulta kohdasta Muuta materiaalia -> Software, täältä aswcurr.zip.
- Pakettia ei tarvitse varsinaisesti asentaa, riittää että se puretaan sopivaan hakemistoon. Tee hakemisto tätä varten haluamaasi polkuun ja pura zip sinne. Tässä esimerkissä on tehty hakemisto C:\MCS51\ASL. Itse kääntäjä on tämän jälkeen paikassa C:\MCS51\ASL\bin\asl.exe ja manuaali C:\MCS51\ASL\doc\as_EN.pdf
- ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto p80c51fa.inc. Lataa tämä itsellesi ja kopioi ASL:n include-hakemistoon C:\MCS51\ASL\include.
Kääntäjä on nyt asennettu.
Kääntäjän käyttö Windowsissa
Käännös muodostuu kahdesta vaiheesta:
- Kääntäjä tuottaa omaa formaattiaan olevan p-päätteisen binäärin (source.asm -> source.p)
- Jotta tämä saadaan ladattua Paulmoniin, se pitää konvertoida Intel-hex-formaattiin ohjelmalla p2hex (source.p -> source.hex)
Näiden vaiheiden ajamiseen on useita tapoja, riippuen siitä, minkälaista käännösympäristöä kukin on tottunut käyttämään. Tässä eräs yksinkertainen tapa, joka ei vaadi mitään lisäkilkkeiden (esim. make-systeemin) lataamista Windowsiin eikä ympäristömuuttujien kanssa pelaamista.
Halutaan kääntää blinky.asm. Tehdään source-koodin kanssa samaan hakemistoon make.bat, johon tulee rivit:
C:\MCS51\ASL\bin\asl -cpu 8051 -L -i C:\MCS51\ASL\include blinky.asm C:\MCS51\ASL\bin\p2hex blinky.p
Ensimmäisellä rivillä ajetaan kääntäjä. Kääntäjälle annetaan nämä parametrit:
- -cpu 8051: kerrotaan kääntäjälle, että ollaan kääntämässä 8051:n assemblyä
- -L: pyydetään kääntäjää tuottamaan myös listaustiedosto
- -i C:\MCS51\ASL\include: kerrotaan kääntäjälle, että inc-tiedostoja kannattaa etsiä täältä
Toisella rivillä muodostetaan edellä syntyneestä blinky.p:stä blinky.hex.
Ajetaan Command prompt-ikkunassa source-koodin hakemistossa make, jolloin syntyy blinky.hex.
Tässä lyhyt koodi, jonka voi tallettaa blinky.asm:ksi ja testata edellä kuvattua prosessia.
; Blink led at P1.7 using busy-loop based delay INCLUDE p80c51fa.inc ORG 2000H main_loop: CPL P1.7 ; complement led at P1.7 ; delay MOV DPTR,#0 delay_loop: INC DPTR ; 2 MOV A,DPL ; 1 ORL A,DPH ; 1 JNZ delay_loop ; 2 JMP main_loop
Asennus Linuxiin
Linux mint - ympäristössä
1. Lataa asl-current.tar.gz Software-hakemistosta:
2. Pura hakemisto haluamaasi paikkaan:
tar xvof ./asl-current.tar.gz
3. Siirry hakemistoon asl-current ja kopioi:
cp ./Makefile.def-samples/Makefile.def-x86_64-unknown-linux ./Makefile.def
4. Käännä komennolla:
make
4.1 Jos käännös ei onnistu perusasennuksessa, asenna build-essential ja käännä uudestaan:
apt install build-essential
4.2 Testaa:
make test
4.3 Makefile on vähän vajaa, tahtoo tehdä latex-pdf käännöksen. Jos latexia ei ole asennettuna niin:
4.3.1 Editoi Makefile (estä dokumenttien käännös):
all: binaries docs ==> all: binaries #docs
4.3.2 Asenna:
sudo make install
4.3.3 Jos haluat dokumentit: Editoi Makefile (palauta dokumenttien käännös, käännä ainoastaan englanninkieliset):
all: binaries #docs ==> all: binaries docs
docs: doc_DE doc_EN ==> docs: doc_EN
Käännä dokumentit:
make docs
5. ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto p80c51fa.inc. Lataa tämä itsellesi ja kopioi ASL:n include-hakemistoon /usr/local/include/asl
Asennus Maciin
1. brew install pkorpine/asl/asl
2. ASL sisältää joukon eri prosessoreiden include-tiedostoja, mutta ei 80C51FA:lle sopivaa. Hae tätä varten tehty tiedosto p80c51fa.inc. Lataa tämä itsellesi haluamaasi paikkaan.