Hallo, ich habe - absichtlich- SPI für Arduino selber programmiert. Wenn
ich allerdings bei MOSI was reinbekommen sollte, zeigt mir mein Programm
an, dass ich in der Schleife mit while(go) der Methode ReadBit()
feststeckt. Hat jemand eine Ahnung warum das so ist, ich komme auf
meinen Fehler einach nicht drauf...
Die Serial.println habe ich nur zum Testen verwendet, damit ich sehe, wo
er sich aufhängt
Vielen Dank
1 | #include "pins_arduino.h"
|
2 | #include <ESP8266WiFi.h>
|
3 | #include <ESP8266HTTPClient.h>
|
4 | #include <WiFiClient.h>
|
5 | #include <SPI.h>
|
6 | #include <ESP8266WiFiMulti.h>
|
7 | #include "SPISlave.h"
|
8 |
|
9 | #define SS 15
|
10 | #define MOSI 13
|
11 | #define MISO 12
|
12 | #define SCK 15
|
13 |
|
14 | int8_t Temperatur;
|
15 |
|
16 | bool isAvailable(){
|
17 | if(digitalRead(SS)==LOW)return true;
|
18 | return false;
|
19 | }
|
20 |
|
21 | int readBit(){
|
22 | bool go=true;
|
23 | while(go){
|
24 | Serial.println("clk2");
|
25 | if(digitalRead(SCK)==HIGH){
|
26 | go=false;
|
27 | if(digitalRead(MOSI) == HIGH){
|
28 | return 1;
|
29 | }else {
|
30 | return 0;
|
31 | }
|
32 | }
|
33 | }
|
34 |
|
35 | }
|
36 |
|
37 | int readByte(){
|
38 | int received = 0;
|
39 | for(int i=0;i<8;i++){
|
40 | if(readBit()){
|
41 | Serial.println("read 1");
|
42 | received = received * 2+1;
|
43 | }else{
|
44 | Serial.println("read 0");
|
45 | received = received * 2;
|
46 | }
|
47 | if(i<8-1){
|
48 | while(digitalRead(SCK)==HIGH){
|
49 | Serial.println("waiting for clk");
|
50 | }
|
51 | }
|
52 | }
|
53 | }
|
54 |
|
55 | void writeBit(int data){
|
56 |
|
57 | }
|
58 |
|
59 | void writeByte(int data){
|
60 |
|
61 | }
|
62 |
|
63 | void readData(){
|
64 | Serial.println("reading...");
|
65 | Serial.println(readByte());
|
66 | }
|
67 |
|
68 | void setup(){
|
69 | // PINMODE zb
|
70 |
|
71 | pinMode(SCK,INPUT);
|
72 | pinMode(SS,INPUT);
|
73 | pinMode(MOSI,INPUT);
|
74 | Serial.begin(115200);
|
75 | Serial.println("started");
|
76 |
|
77 | }
|
78 |
|
79 |
|
80 | void loop() {
|
81 | if(isAvailable()){
|
82 | readData();
|
83 | }
|
84 |
|
85 | }
|