Say NO to Power Line Communication !


Pic micro(tm) & Linux

More up to date version in english

Jos osaat englantia edes välttävästi, lue englanninkielinen versio.

(Se on paremmin ajan tasalla.)
Tämän dokumentin tarkoituksena on selvittää hieman miten tehokasta on PIC-mikrokontrollerien ohjelmointi linux-käyttöjärjestelmässä ;)

Lähtökohtana pari asiaa:


Tarvittavat ohjelmat

Kehitykseen voitaisiin käyttää ns. "IDE"-kehitysympäristöä WIN9* puolella (Microchip MBLab), mutta Linux-puolelle ei tietojeni mukaan vielä ole käännetty mitään simulaattoria. Joten pääasiassa "kehitys" tapahtuu tekstieditorilla & assemblyllä & prommerisoftalla. Yksi hyvä vaihtoehto editoriksi on cooledit niminen softa. Siihen voi vapaasti määritellä esim. PIC-prommauksen / assembly käännön. Lisäksi softassa on suora tuki C/C++/HTML/PERL/JAVA... kielille...

Olen itse lisännyt ohjelmaan tuen PIC-assemblylle, tulosta voit katsoa tästä... Tämän väriloiston luo pic.syntax tiedosto. Lisää kuvia työympäristöstäni... Polttelen softat pikkiin prommerilla, joka on kytketty rinnakkaisporttiin...

Mutta takaisin asiaan.
Periaatteessa on kokonaistyössä on kaksi vaihtoehtoa:

  1. Konsolipohjainen työskentely
  2. Graafisen käyttöliittymä (esim. KDE)


Graafinen KDE-ympäristö

SOT-linuxissa oletuksena oleva KDE-ympäristö käynnistyy kirjoittamalla "startx", joka vastaa hieman "win" komentoa M$-järjestelmistä. Tämän jälkeen voimme ottaa käyttöön "kedit" ohjelman tekstin muokkaukseen. Ohjelman saat käyntiin painamalla yhtäaikaisesti Alt-F2, ja kirjoittamalla esiintulleeseen ruutuun "kedit". Vaihtoehtoisesti voit kirjoittaa konsolilla "kedit". Lisäksi saatat tarvita ohjelman piirilevyjen suunnittelua ja piirtoa varten. Sellainen on pcb. Sillä onnistuu tarvittavat piirilevyn piirtelyt vaivatta, kunhan käyttöliittymän oppii.

Konsolityöskentely

Toinen vaihtoehto on tehdä työ suoraan konsolilla. Tällöin työhön riittää perus 386SX. M$ "edit"-ohjelmaa vastaava editori on "pico". Käynnistys tapahtuu kirjoittamalla "pico" komentorivillä... ;)

Ominaisuus, joka helpottaa työskentelyämme on "virtuaalikonsolien" käyttö. Näiden avulla saamme monta "istuntoa" järjestelmään. Yhdessä voimme editoida picolla tekstiä, toisessa meillä voi olla kääntö/prommaus menossa, ja kolmannessa vaikkapa "minicom" terminaali.

(Ja kaikki tämä siis vaikkapa 386SX koneessa ;=O) Virtuaalikonsolien vaihto/käyttö tapahtuu painamalla ALT ja "funktionäppäin" eli esim. Alt-F2. Konsoleita voi olla käytössä F1-F6 asti. F7 on ensimmäinen "graafinen" ikkuna (esim. KDE).


Tietenkin näiden "perustyökalujen" lisäksi tarvitsemme PIC-assemblerin ja prommaus-softan. Molempia löytyy useita, itse olen kokeillut "picprog" sekä "pp" prommereita. Assemblerinä olen käyttänyt "picasm" ohjelmaa.

Tarvittavat "PIC-spesifiset" softat ovat siis:


Ohjelmien kääntö

Linux ohjelmia levitetään usein c/c++ lähdekoodina. Tästä johtuen ohjelmat pitää "kääntää" käyttökuntoon saattamiseksi. Yleensä pakettien mukana tulee "README" tiedosto, josta ohjeet kääntämiseen löytyvät, mutta tässä esimerkkinä picasm ja pp ohjelmien kääntö.

pp

Levityspaketin nimi on "linuxpp.zip".

Tarvittavat vaiheet:

pp:n asetukset

pp:n asetukset määritellään 'mypp.sh' -tiedostossa. Sitä voi editoida millä tahansa tekstieditorilla, kuten pico:lla tai kedit:lla.

Oma koneeni käyttää seuraavia asetuksia:


#!/bin/bash
export PPSETUP=3
export PPDELAY=1
export PPLPT=0
/home/henkka/bin/pp $*

Tällä konfiguraatiolla pp tulostaa seuraavaa:


Hardware setup: 7407/PNP using LPT1 at 0378 (delay = 1)
Eli käytän 7407 piiriin pohjautuvaa prommeria. Mahdollisia vaihtoehtoja voi etsiä vaihtamalla 'PPSETUP' parametria.

Picasm

Levityspaketin nimi on "picasm106.tar.gz".

Tarvittavat vaiheet:


Picprog

Käytin picprog-ohjelmaa aiemmin vanhassa koneessani, mutta nykyisellä (300 PII) sarjaprommaus ei onnistunut enää ongelmitta. Joten siirryin käyttämään rinnakkaisprommausta. Pääperiaatteisaan kääntö & käyttö sujuu kuten em. ohjelmillakin.

Varsinainen käyttö

Huomaa etteivät win9x asm-listaukset suoraan käy picasm ohjelmalle. Katso konvertointitaulukko englanninkieliseltä sivulta...

Esimerkkiohjelma, joka vilkuttaa RA0:n kytkettyä lediä:


; eka.asm
; vilkuttaa RA0:n kytkettyä lediä.

device  pic16f84
config  CP=off,WDT=on,PWRT=on,OSC=xt

;määrittelyt

porta   equ     0x05
ncount  equ     0x0d
mcount  equ     0x0e
f       equ     1 

;alkupiste
        org     0x000

;alku
start   movlw   0x00
        tris    porta
        clrf    porta

;pyörityksen alkupiste
go      bsf     porta,0
        call    delay
        call    delay
        call    delay
        bcf     porta,0
        call    delay
        goto    go
;pyörityksen loppu

;viive
delay   movlw   0xff
        movwf   mcount
loadn   movlw   0xff
        movwf   ncount
repeat  decfsz  ncount,f
        goto    repeat
        decfsz  mcount,f
        goto    loadn
        return
        end
Kun olet kirjoittanut ohjelman esim. pico editorilla, käännät sen komennolla

'picasm eka.asm'

Tämän jälkeen sinulla pitäisi olla vastaava 'eka.hex' tiedosto, joka näyttää tältä:


:1000000000306500850105140A200A200A20051029
:100010000A200328FF308E00FF308D008D0B0E2844
:060020008E0B0C28080005
:02400E00F53F7C
:00000001FF

Eli tässä assembly on käännetty PIC-mikrokontrollerin ymmärtämään muotoon.

Poltto tapahtuu komennolla

'mypp -e! eka.hex'

olettaen että 'mypp.sh' löytyy komentopolustasi. (Ellei löydy, voit kopioida sen vaikka kotihakemistosi 'bin' hakemistoon.) Tässä '-e' pyyhkii PIC:n ohjelmamuistin ja '!' kertoo ettei käyttäjältä odoteta "varmistusta".


Jos ja kun sinulle tulee kysymyksiä aiheesta, suosittelen seuraavia:
  1. etsimään internetistä ko. aiheeseen liittyvää tietoa (www.hut.fi/then)
  2. selaamaan uutisryhmäarkistoa (www.dejanews.com)
  3. selaamaan / lukemaan alan kirjallisuutta (www.sq-1.com)
  4. ja hyvin epätoivoisessa tapauksessa ottamaan yhteyttä joko artikkelin kirjoittajaan
  5. tai kysymään alan ammattilaiselta (Probyte Oy)

Jos sinua kiinnostaa linux & ISDN, voit käväistä sivulla www.yty.net/linux

Voit myös täyttää vieraskirjan

Pic'n Technicues kirjan lähdekoodi
Pic'n Up the Space kirjan lähdekoodi
Serial Pic'n kirjan lähdekoodi

Edellämainitut koodit on otettu sivuilta www.sq-1.com


Historia:

18.9.1999 lisätty laskuri ao. linkin vuoksi ;)
18.9.1999 huomattu linkki Prosessori-lehdessä
18.7.1999 lisätty kirjojen lähdekoodit
25.6.1999 lisätty vieraskirja-linkki
23.6.1999 lisätty pcb-linkki
4.6.1999 lisätty cooledit-linkki.
23.5.1999 dokumentti luotu.

(c) Henry Palonen, 1999
h yty dot net