Feri <3

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
JosipLupinski
Date:
Tue Nov 29 21:33:57 2016 +0000
Commit message:
Feri

Changed in this revision

1_zadatak.cpp Show annotated file Show diff for this revision Revisions of this file
2_zadatak_master.cpp Show annotated file Show diff for this revision Revisions of this file
2_zadatak_slave.cpp Show annotated file Show diff for this revision Revisions of this file
32_bitni_master.cpp Show annotated file Show diff for this revision Revisions of this file
32_bitni_slave.cpp Show annotated file Show diff for this revision Revisions of this file
3_zadatak_master.cpp Show annotated file Show diff for this revision Revisions of this file
3_zadatak_salve.cpp Show annotated file Show diff for this revision Revisions of this file
4_zadatak_master.cpp Show annotated file Show diff for this revision Revisions of this file
4_zadatak_slave.cpp Show annotated file Show diff for this revision Revisions of this file
master-ne_vraca_podatke.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
slave-ne_vraca_podatke.cpp Show annotated file Show diff for this revision Revisions of this file
--- /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