Feri <3
Dependencies: mbed
Revision 0:59048845a5c6, committed 2016-11-29
- Comitter:
- JosipLupinski
- Date:
- Tue Nov 29 21:33:57 2016 +0000
- Commit message:
- Feri
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/1_zadatak.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,18 @@ +#include "mbed.h" + +SPI spi_port(p5, NC, p7); // mosi, miso, sclk, znaci miso linija je NOT CONNECTED. +DigitalOut ss(p8); //slave select pin + +int main() { + + spi_port.format(8,0); // 8 bitni podatak, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + ss = 0; //spusti SS pin u nulu (oznaci slave, slave je aktivan ako je SS pin u nuli) + spi_port.write(0b11001001); //posalji podatak 0xC9 + ss = 1; //vrati SS pin u jedinicu (odznaci slave) + wait_us(50); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2_zadatak_master.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,28 @@ +#include "mbed.h" + +//master program + +SPI spi_port(p5, p6, p7); // mosi, miso, sclk +DigitalOut ss(p8); //slave select pin +Serial pc(USBTX, USBRX); // tx, rx + +int main() { + + char podatak; + spi_port.format(8,0); // 8 bitni okvir, mod rada 0 + spi_port.frequency(7000000); + + while (1){ + + ss = 0; //spusti SS pin u nulu, aktivan je u nuli (oznaci slave) + podatak = spi_port.write(0xA1); //posalji podatak i primi odgovor + ss = 1; //vrati SS pin u jednicu (odznaci slave) + + pc.printf("Poslani podatak: %x\n",0xA1); + pc.printf("Primljeni podatak: %x\n",podatak); + pc.printf("--------------------------\n"); + + //wait_ms(500); + wait_us(50); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2_zadatak_slave.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,20 @@ +#include "mbed.h" + +//slave program + +SPISlave spi_port(p5, p6, p7, p8); // mosi, miso, sclk, ssel + +int main() { + + char podatak; + spi_port.format(8,0); // 8 bitni podatak, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + if (spi_port.receive()){ //cekaj da master posalje podatak + podatak = spi_port.read(); //spremi primljeni podatak + spi_port.reply(~podatak); //vrati masteru invertirani primljeni podatak + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/32_bitni_master.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,38 @@ +#include "mbed.h" + +//master program + +SPI spi_port(p5, p6, p7); // mosi, miso, sclk +DigitalOut ss(p8); //slave select pin +Serial pc(USBTX, USBRX); // tx, rx + +int main() { + + int podatak = 0xA001B001; + + spi_port.format(16,0); // 16 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + //prvo posalji kontrolnu rijec 0xF0F0 + ss = 0; + spi_port.write(0xF0F0); + ss = 1; + wait_us(100); + + //salji podatak + ss = 0; + spi_port.write(podatak>>16); //posalji gornja 2 bajta + ss = 1; + wait_us(100000); //pricekaj neko vrijeme, procijeniti prema zauzecu slavea + + ss = 0; + spi_port.write(podatak & 0x0000FFFF); //posalji donja 2 bajta + ss = 1; + + pc.printf("Podatak poslan na slave: %x\n", podatak); + podatak++; + wait(2); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/32_bitni_slave.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,41 @@ +#include "mbed.h" + +//slave program + +SPISlave spi_port(p5, p6, p7, p8); // mosi, miso, sclk, ssel +Serial pc(USBTX, USBRX); // tx, rx + +int main() { + + int podatak, temp; + bool gornji_dio = true, prijenos = false; + + spi_port.format(16,0); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (true){ + + if (spi_port.receive()){ //cekaj da master posalje podatak + temp = spi_port.read(); + + if (temp == 0xF0F0){ + prijenos = true; + continue; + } + + if (prijenos) { + if (gornji_dio) { //ako je to prvi prijenos, tj. gornja 2 bajta + podatak = temp << 16; + gornji_dio = false; + } + + else { //inace je drugi prijenos, tj. donja 2 bajta + podatak = podatak | 0x0000FFFF & temp; + pc.printf("Podatak na slaveu: %x\n",podatak); + gornji_dio = true; + prijenos = false; + } + } + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3_zadatak_master.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,24 @@ +#include "mbed.h" + +//master program + +SPI spi_port(p5, p6, p7); // mosi, miso, sclk +DigitalOut ss(p8); //slave select pin +Serial pc(USBTX, USBRX); // tx, rx + +int main() { + + int podatak; + spi_port.format(8,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + ss = 0; //spusti SS pin u nulu, aktivan je u nuli (oznaci slave) + wait_us(1); //cekaj da slave pripremi podatak + podatak = spi_port.write(0); //posalji dummy byte == 0 i ocitaj temperaturu + ss = 1; //vrati SS pin u jedinicu (odznaci slave) + + pc.printf("Podatak: %d\n",podatak); + wait(1); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3_zadatak_salve.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,19 @@ +#include "mbed.h" + +//slave program + +SPISlave spi_port(p5, p6, p7, p8); // mosi, miso, sclk, ssel + +int main() { + + spi_port.format(8,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + spi_port.reply(rand()%100); //napuni buffer za prvi prijenos + + while (1){ + + if (spi_port.receive()){ //ceka da master posalje nesto + spi_port.reply(rand()%100); //vraca temperaturu u rasponu 0 do 100 °C + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/4_zadatak_master.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,39 @@ +/*U trećoj vježbi zadatak je bio kontinuirano slati 4-bitni podatak preko paralelne komunikacijske linije s +master mbeda na slave mbed. 4-bitni podatak zadaje se položajem sklopki S0 (pin20) do S3 (pin17), gdje +sklopka S0 predstavlja najmanje značajni bit, a S3 najznačajniji bit. +Za razliku od zadatka u prvoj vježbi u ovom zadatku će se koristiti SPI serijska komunikacijska veza (u prvoj +vježbi koristila se paralelna komunikacija). +Zadatak je ostvariti SPI komunikaciju između dva mbeda i preko nje poslati 4-bitni podatak zadan položajem +sklopki S0 do S1 na slave mbed. Analogno kao i u prvoj vježbi, LEDice LED1 do LED4 na master mbedu +palite prema položaju sklopki S0 do S3. Na slave mbedu prikazujte poslani podatak na diodama LED1 do +LED4. +Neka master šalje podatke na slave s razmakom od 100 ms. +Spojite master i slave mbed prema shemi na slici 5. MISO liniju za sada nemojte spajati! */ + +#include "mbed.h" + +//master + +BusOut ledice(LED4,LED3,LED2,LED1); +BusIn datain(p20,p19,p18,p17); +BusOut lediceo(p21,p22,p23,p24); +SPI spi_port(p5, p6, p7); // mosi, miso, sclk +DigitalOut ss(p8); //slave select pin + +int main() { + + spi_port.format(4,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + datain.mode(PullUp); + + while(1){ + + ledice=datain; + ss=0; + spi_port.write(datain); + //pi_port.write(lediceo); + ss=1; + wait_ms(100); + + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/4_zadatak_slave.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,22 @@ +#include "mbed.h" + +//slave program + +SPISlave spi_port(p5, p6, p7, p8); // mosi, miso, sclk, ssel +BusOut ledice(LED1,LED2,LED3,LED4); + +int main() { + + int podatak; + spi_port.format(4,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + if (spi_port.receive()){ //cekaj da master posalje podatak + podatak = spi_port.read(); //spremi primljeni podatak + ledice = ~podatak; + spi_port.reply(~podatak); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/master-ne_vraca_podatke.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,28 @@ +#include "mbed.h" + +//master program + +SPI spi_port(p5, NC, p7); // mosi, miso, sclk +DigitalOut ss(p8); //slave select pin + +int main() { + char podatak = 0; + + spi_port.format(8,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + ss = 0; //spusti SS pin u nulu, aktivan je u nuli (oznaci slave) + spi_port.write(podatak); //posalji podatak + podatak++; + + if (podatak>15) { + podatak = 0; + } + + ss = 1; //vrati SS pin u jedinicu (odznaci slave) + + wait(0.5); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/d75b3fe1f5cb \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/slave-ne_vraca_podatke.cpp Tue Nov 29 21:33:57 2016 +0000 @@ -0,0 +1,22 @@ +#include "mbed.h" + +//slave program + +SPISlave spi_port(p5, NC, p7, p8); // mosi, miso, sclk, ssel +BusOut ledice(LED1,LED2,LED3,LED4); + +int main() { + char podatak; + + spi_port.format(8,1); // 8 bitni okvir, mod rada 0 + spi_port.frequency(1000000); // frekvencija takta 1MHz + + while (1){ + + if (spi_port.receive()){ //cekaj da master posalje podatak + + podatak = spi_port.read(); //spremi primljeni podatak + ledice = podatak; //akcija slavea, nema odgovora + } + } +} \ No newline at end of file