Implementing a fan controller
Teeri, Oskari (2017)
Teeri, Oskari
Turun ammattikorkeakoulu
2017
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2017052410110
https://urn.fi/URN:NBN:fi:amk-2017052410110
Tiivistelmä
Tämän opinnäytetyön tarkoituksena oli toteuttaa yleinen – sulautettuihin järjestelmiin soveltuva projekti, käyttäen helposti saatavilla olevia avoimia ohjelmakirjastoja ja osia. Työ ei ollut toimeksianto, vaan se toteutettiin itsenäisenä projektina. Opinnäytetyössä toteutettiin tuuletinohjain, jota ohjattiin USB-väylän kautta annettavilla komennoilla. Tietorakenteita ja mahdollisia toteustapoja tutkittiin erityisesti sulautettuihin järjestelmiin soveltuvalla tavalla.
Alustana käytettiin Microchipin AVR-mikrokontrolleria, ja sille tarkoitettuja avoimen lähdekoodin kirjastoja. ATMega32u4 valittiin mikrokontrolleriksi, sen sisältämien ominaisuuksien vuoksi, ja sille toteutettiin opinnäytetyön aikana ohjelma, jonka tarkoitus oli ohjata useita tuulettimia käyttäjän komentojen perusteella.
Ohjelman USB-ohjaukseen käytetään LUFA-kirjastoa, joka on AVR-alustalle tarkoitettu avoin USB-ohjelmakirjasto. Mikrokontrolleri vastaanottaa käyttäjän komennot USB-CDC-protokollan kautta, jonka toteutus oli tehty LUFAssa. Lisäksi opinnäytetyössä tehtiin USB-ohjelmakirjastojen välistä vertailua.
Opinnäytetyössä tutkittiin teoriatasolla tietorakenteita, ja niiden yleistä soveltuvuutta sulautettuihin järjestelmiin. Erityistä huomiota kiinnitettiin linkitettyjen listojen toteutukseen. Työ selvitti sulautetuissa järjestelmissä käytettäviä C- ja C++-standardeja, sekä niiden eroavaisuutta tavallisen ohjelmistokehityksen näkökulmasta. Lisäksi vertailtiin modernia C++:aa ohjelman nykyiseen, C-kieliseen toteutukseen. Lopulta tutkittiin C++:an yleistä soveltuvuutta sulautettuihin järjestelmiin. Tähän kuului esimerkiksi C++:an turvallisuutta heikentävien ominaisuuksien tutkiminen reaaliaikasysteemeissä.
C++-osuutta ei toteutettu työn aikana, vaan se perustui teoreettiseen pohdiskeluun. Käytännössä työn aikana toteutettiin ainoastaan toimiva C-kielinen ohjelma. Työn tuloksia voisi soveltaa samankaltaista C++-projektia suunniteltaessa.
Alustana käytettiin Microchipin AVR-mikrokontrolleria, ja sille tarkoitettuja avoimen lähdekoodin kirjastoja. ATMega32u4 valittiin mikrokontrolleriksi, sen sisältämien ominaisuuksien vuoksi, ja sille toteutettiin opinnäytetyön aikana ohjelma, jonka tarkoitus oli ohjata useita tuulettimia käyttäjän komentojen perusteella.
Ohjelman USB-ohjaukseen käytetään LUFA-kirjastoa, joka on AVR-alustalle tarkoitettu avoin USB-ohjelmakirjasto. Mikrokontrolleri vastaanottaa käyttäjän komennot USB-CDC-protokollan kautta, jonka toteutus oli tehty LUFAssa. Lisäksi opinnäytetyössä tehtiin USB-ohjelmakirjastojen välistä vertailua.
Opinnäytetyössä tutkittiin teoriatasolla tietorakenteita, ja niiden yleistä soveltuvuutta sulautettuihin järjestelmiin. Erityistä huomiota kiinnitettiin linkitettyjen listojen toteutukseen. Työ selvitti sulautetuissa järjestelmissä käytettäviä C- ja C++-standardeja, sekä niiden eroavaisuutta tavallisen ohjelmistokehityksen näkökulmasta. Lisäksi vertailtiin modernia C++:aa ohjelman nykyiseen, C-kieliseen toteutukseen. Lopulta tutkittiin C++:an yleistä soveltuvuutta sulautettuihin järjestelmiin. Tähän kuului esimerkiksi C++:an turvallisuutta heikentävien ominaisuuksien tutkiminen reaaliaikasysteemeissä.
C++-osuutta ei toteutettu työn aikana, vaan se perustui teoreettiseen pohdiskeluun. Käytännössä työn aikana toteutettiin ainoastaan toimiva C-kielinen ohjelma. Työn tuloksia voisi soveltaa samankaltaista C++-projektia suunniteltaessa.