Funkübertragung über uC

Gast #1607647
Lesenswert?

Hallo,
ich bin relativ neu in dem Gebiet der Controllerprogrammierung und hätte 
da eine Frage.
Ich habe ein Modul angefertigt, welches die Signale über Bluetooth 
übertragen hat und diese wurden jeweils von einem uC ausgewertet.
Dieses Modul hat auch wunderbar funktioniert.
Nun habe ich das Bluetooth mModul gegen ein Funkmodul der Firma 
Radiometrix (RX2-433-14-5V bzw. TX2-433-14-5V) ausgetauscht.
Wenn ich nun versuche die signale zu senden, so springt der empfänger 
zwar in der Empfangsinterrupt jedoch kann ich die Signale nicht 
anzeigen, außer ein unkontrolliertes aublitzen der LEDs ist nichts zu 
sehen.

Nun meine Frage könnte dies mit der Baudrate zusammen hängen, denn diese 
ist noch auf den Werten des Bluetoothmoduls basierend.
Und zum zweiten kann ich meine signale einfach in einer bitfolge senden, 
oder muss ich diese irgendwie coderien?

Ich bin für jede Hilfe sehr Dankbar!
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <inttypes.h>
4

5

6
// Abfragemakro
7
//#define BLUETOOTH_STATUS_AKTIV() (!(PIND & _BV(PD2)))    // Abfrage Bluetooth-Signal
8
#define SCHALTER_LS()        (!(PIND & _BV(PD7)))  // Abfrage Schalter Lautsprecher eingeschaltet
9

10
// Aktionsmakro
11
#define ROTE_LED_AN()    { PORTC |=  _BV(PC3); }      // rote LED ein      -> 3.3V
12
#define ROTE_LED_AUS()    { PORTC &= ~_BV(PC3); }      // rote LED aus     -> 0V
13

14
#define GELBE_LED_AN()    { PORTC |=  _BV(PC1); }      // gelbe LED ein     -> 3.3V
15
#define GELBE_LED_AUS()    { PORTC &= ~_BV(PC1); }      // gelbe LED aus     -> 0V
16

17
#define GRUENE_LED_AN()    { PORTC |=  _BV(PC2); }      // grüne LED ein     -> 3.3V 
18
#define GRUENE_LED_AUS()   { PORTC &= ~_BV(PC2); }      // grüne LED aus     -> 0V
19

20
#define BLAUE_LED_AN()    { PORTC |=  _BV(PC0); }      // blaue LED ein     -> 0V
21
#define BLAUE_LED_AUS()   { PORTC &=  ~_BV(PC0); }      // blaue LED aus     -> 5V
22

23
#define LS_AN()        { PORTB |=  _BV(PB1); }      // grüne LED ein     -> 3.3V 
24
#define LS_AUS()         { PORTB &= ~_BV(PB1); }    // grüne LED aus     -> 0V
25

26
#define LED_LS_AN()      { PORTB |= _BV(PB0); }    // LED Lautsprecher an -->5V
27
#define LED_LS_AUS()      { PORTB &= ~_BV(PB0); }    // LED Lautsprecher aus --> 0V
28

29
#define RELAIS_AN()      { PORTD |= _BV(PD4); }    // Relais an -->5V
30
#define RELAIS_AUS()      { PORTD &= ~_BV(PD4); }    // Relais aus --> 0V
31

32
#define LEUCHT_ROT_AN()    { PORTD |= _BV(PD5); }    // Leuchtmodul "rot" an -->5V
33
#define LEUCHT_ROT_AUS()  { PORTD &= ~_BV(PD5); }    // Leuchtmodul "rot" aus --> 0V
34

35
#define LEUCHT_GRUEN_AN()    { PORTD |= _BV(PD6); }    // Leuchtmodul "grün" an -->5V
36
#define LEUCHT_GRUEN_AUS()    { PORTD &= ~_BV(PD6); }    // Leuchtmodul "grün" aus --> 0V
37

38
#define LEUCHT_BLAU_AN()    { PORTC |= _BV(PC4); }    // Leuchtmodul "blau" an -->5V
39
#define LEUCHT_BLAU_AUS()    { PORTC &= ~_BV(PC4); }    // Leuchtmodul "blau" aus --> 0V
40

41

42
//Variablen Deklaration
43
volatile uint8_t u8_blau = 0;                // Variable für die blaues Signal
44
volatile uint8_t u8_rot = 0;                // Variable für die rotes Signal
45
volatile uint8_t u8_gelb = 0;                // Variable für die gelbe LED
46
volatile uint8_t u8_gruen = 0;                // Variable für die grünes Signal
47
volatile uint8_t u8_Lautsprecher = 0;            // Variable für den Lautsprecher
48
volatile uint8_t u8_Empfang = 0;              // Empfangsdaten
49
volatile uint8_t u8_timer = 0;                // Taktzähler
50
volatile uint16_t u16_timer2 = 0;              // Tondauer "frei"
51
volatile uint16_t u16_timer1 = 0;              // Tondauer "Störung"
52
//volatile uint32_t u32_timer_bluetooth = 0;          // Timer für Bluetoothstatus
53
// Variable für die Tonausgabe "frei"
54
volatile uint16_t u8_Tonausgabe1 = 0;            
55
// Variable für die Tonausgabe "belegt"
56
volatile uint16_t u8_Tonausgabe2 = 0;  
57
// Variable, die den letzten Zustand von "gelb" speichert          
58
volatile uint8_t u8_letztes_gelb = 0;  
59
// Variable, welche angibt ob Bluetoothmodule verbunden          
60
volatile uint8_t u8_b_aktiv = 0;
61

62
// Initialisierung USART
63
//#define F_CPU 16000000ULL                  // Frequenz vom Mikrocontroller 16MHz
64
#define BAUD 9600UL                         // Baudrate 
65
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)       // clever runden 
66
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))         // Reale Baudrate 
67
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD)         // Fehler in Promille, 1000 = kein Fehler. 
68
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))           
69
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! 
70
#endif 
71

72
// Funktionprototypen
73
void USART_Init( unsigned int ubrr);            // Prototyp initialisierung
74

75
// Hauptprogramm
76
int main(void)
77
{
78
  TCCR0B |= _BV(CS01) | _BV(WGM01);             // prescaler 1600000/64 = 15625
79
  OCR0A = 99;                            // 124 Schritte für 1ms
80
  TIMSK0 |= _BV(OCIE0B);                    // Freischaltung
81

82
  TCCR0A = _BV(WGM00);                      // PWM phase correct mode
83
  TCCR0B = _BV(CS10) | _BV(CS11);              // clock select clk/64
84
  ICR1 = 0xFF;                          // Endwert Counter
85

86
// OC0A als PWM-Port setzen
87
  TCCR1A |= _BV(COM0A1);
88
  OCR0A = 0;
89

90
// OC0B als PWM-Port setzen
91
  TCCR1B |= _BV(COM0B1);
92
  OCR0B = 0;
93

94
// Ausgänge
95
  DDRC |= _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3);         // Alle Signallampen als Ausgänge deklariert
96
  PORTC &= ~(_BV(PC0) & _BV(PC1) & _BV(PC2) & _BV(PC3));      // Signallampen ausschalten -> definierter Zustand zu Beginn -> 0V
97

98
  DDRD |= _BV(PD5) | _BV(PD6) ;         // Alle LEDs des Leuchtmoduls als Ausgänge deklariert
99
  DDRC |= _BV(PC4);
100
  PORTD &= ~(_BV(PD5) & _BV(PD6));        // Alle LEDs des Leuchtmoduls -> definierter Zustand zu Beginn -> 0V
101
  PORTC &= ~(_BV(PC4));
102

103
  DDRB |= _BV(PB0) | _BV(PB1);                        // Lautsprecher und Lautsprecher-LED als Ausgang deklariert
104
  PORTB &= ~(_BV(PB0)| _BV(PB1));                      // definierter Zustand zu Beginn
105

106
  DDRD |= _BV(PD4);                        // Relais als Ausgang deklariert
107
  PORTD &= ~_BV(PD4);                      // definierter Zustand zu Beginn
108

109
// Eingänge
110
  DDRD &= ~(_BV(PD7));            // Schalter Lautsprecher als Eingang
111
  PORTD |= _BV(PD2) | _BV(PD7);      // Pull up aktiviert
112

113

114
// Funktionsaufruf Initialisierung Bluetooth
115
USART_Init(UBRR_VAL );
116

117
  sei();
118
//Endlosschleife
119
  while(1)
120
  {
121

122
// Funkmodule verbunden
123
    if ( u8_Empfang == 0b00001000 )           // Abfrage sind die Funkmodule verbunden
124
    {
125
      u8_blau = 1;                  // wenn "ja", schalte blaue LED an
126
    }
127
    else                        // wenn "nein"
128
    {
129
      u8_blau = 0;                  // schalte blaue LED aus
130
    }
131

132
// Rot empfangen
133
    if(u8_Empfang == 0b00000001)            // Abfrage "Störung" empfangen?
134
    {  
135
      u8_rot = 1;                    // wenn "ja" steuer rote LED an
136
    }
137
    else                        // wenn "nein"
138
    {  
139
      u8_rot = 0;                    // steuere rote LED nicht an
140
    }
141

142
// Gelb empfangen
143
    if(u8_Empfang == 0b00000010)            // Abfrage "Fräse in Betrieb" empfangen?
144
    {
145
      u8_gelb = 1;                  // wenn "ja" steuer gelbe LED an
146
    }
147
    else                        // wenn "nein"
148
    {
149
      u8_gelb = 0;                  // steuere grüne LED nicht an
150
    }
151

152
// Grün empfangen
153
    if(u8_Empfang == 0b00000100)            // Abfrage "Fräse frei" empfangen?
154
    {
155
      u8_gruen = 1;                  // wenn "ja" steuer grüne LED an
156
    }
157
    else                        // wenn "nein"
158
    {
159
      u8_gruen = 0;                  // steuere grüne LED nicht an
160
    }
161

162
    if ( u8_blau == 1 )                       
163
    {
164
      BLAUE_LED_AN();                  // Blaue LED an  
165
      RELAIS_AN();                    // Selbsthaltung ein                  
166
    }
167
    else                                
168
    {
169
      BLAUE_LED_AUS();                // Blaue LED aus
170
      RELAIS_AUS();                  // Selbsthaltung aus
171
    }
172

173
    if(u8_rot == 1)
174
    {
175
      ROTE_LED_AN();                  // Rote LED an
176
    }
177
    else
178
    {
179
      ROTE_LED_AUS();                  // Rote LED aus
180
    }
181

182
      if(u8_gelb == 1)
183
    {
184
      GELBE_LED_AN();                  // Gelbe LED an
185
    }
186
    else
187
    {
188
      GELBE_LED_AUS();                // Gelbe LED aus
189
    }
190

191
    if(u8_gruen == 1)
192
    {
193
      GRUENE_LED_AN();                // Grüne LED an
194
    }
195
    else
196
    {
197
      GRUENE_LED_AUS();                // Grüne LED aus
198
    }
199

200
  }
201
}
202

203
// Funktion USART Initialisierung
204
void USART_Init( unsigned int ubrr)        
205
{
206
//Set baud rate 
207
UBRR0 = ubrr;
208

209
//Enable receiver and transmitter 
210
UCSR0B = _BV(RXEN0)| _BV(TXEN0) | _BV(RXCIE0);        // Sender, Empfänger und Empfangsinterrupt
211
UCSR0C = _BV(UCSZ00)| _BV(UCSZ01);              // Format bestimmen 8 Datenbits 2 Stoppbits
212
}
213

214

215
//Empfangsinterrupt
216
ISR(USART_RX_vect)                      // wird ausgelöst, wenn Daten empfangen wurden
217
{
218
//  if (u8_b_aktiv == 1)                  // Abfrage, besteht Verbindung?
219
//  {
220
      u8_Empfang = UDR0;                  // empfangene Daten werden in "u8_Empfang" gespeichert
221
    GRUENE_LED_AN();
222
//  }
223
//  else                          // wenn keine Verbindung besteht schalte alle LEDs aus
224
//  {
225
//    u8_Empfang = 0b00000000;
226
//  }
227
}
#1607655
Lesenswert?

Wenn ich das richtig sehe, schaltest Du die grüne LED ein, wenn ein 
Zeichen empfangen wurde, aber in der Hauptschleife wird die grüne LED 
sofort wieder ausgeschaltet, wenn das empfangene Byte nicht 0b00000100 
ist. Es könnte also durchaus mit der Baudrate zusammenhängen, weil bei 
einer falschen Baudrate die empfangenen Signale falsch interpretiert 
werden und deshalb nicht die erwarteten Werte ankommen.
#1607708
Lesenswert?

Ich hab mal kurz ins Datenblatt des Empfängers geschaut. Nachdem Du 
ursprünglich von einem Bluetooth-Modul geschrieben hast, bin ich davon 
ausgegangen, dass das Funkmodul ebenfalls die Daten via Protokoll 
überträgt und am Ausgang als V.24-Signal ausgibt. Dem ist offenbar nicht 
so, sondern das Sender/Empfängerpaar überträgt nur "dumm" einen 
logischen Zustand. Wenn man also beim Sender V.24 reinschickt, kommt 
beim Empfänger V.24 an. Folglich musst Du herausfinden, mit welcher 
Baudrate der Sender gefüttert wird, und diese Baudrate auch bei Deinem 
Programm einstellen. Sind das 9600 Baud? Falls ja: Wo ist F_CPU 
definiert? Wirklich mit dem richtigen Wert? (Die Zeile im angegebenen 
Programm ist auskommentiert.)
Gast #1607726
Lesenswert?

die Zeile hab ich auskommentiert, da sonst eine Warnung im AVR auftritt, 
ich benutez einen ATMEGA168 und dazu einen 16MHz Quarz und habe die 
Baudrate bei beiden Programmen also bei der des Senders und des 
Empfängers zu beginn auf 9600 Baud gestellt und nun auf 4800 geändert 
gehabt wie gesagt ob der wert so korrekt ist weiß ich nicht
#1607748
Lesenswert?

Jens schrieb:
> das Datenblatt hab ich ja schon kann auch sein, dass meine Berechnung da
> nicht stimmt hab das über ne Software im Netz gemacht, weil ich nich
> wusste welche werte für UBBR am sinnvollsten sind

Wenn du mit Baudraten unsicher bist, gibt es eine einfache Möglichkeit, 
das abzuklären:

Benutze ein Gerät von dem zu mit Sicherheit weißt, dass die Baudraten 
richtig gehandhabt wird. Zb einen PC.

Du hängst dein Funkmodem am PC an und startest ein Terminalprogram. Dann 
stellst du die Baudraten ein, die du in Verdacht hast (auf deutsch: du 
probierst einfach durch). An der Ausgabe des Terminalprogramm siehst du, 
wann du die richtige Baudrate hast. Damit weißt du schon mal, mit 
welcher Baudrate dein Sender sendet.

Dann hängst du deine µC Schaltung ebenfalls an den PC und benutzt wieder 
besagtes Terminalprogramm um deinem µC kontrolliert mit einer bestimmten 
Baudrate, die du am PC einstellst, zu füttern. An der Reaktion des µC 
erkennst du, ob du richtig liegst.

Funktioniert beides
  Empfangen vom Modem mit der Baudrate x
  Senden an den µC mit derselben Baudrate x
dann kannst du Funkmodem und µC zusammenschalten und alles müsste 
laufen.
Gast #1607754
Lesenswert?

naja so einfach geht das nicht, da ich alles zusammen auf eine platine 
gelötet habe und über eine isp schnittstelle programmiere und alles in 
gehäusen untergebracht ist man muss das doch irgendwie berechnen können
#1607781
Lesenswert?

Jens schrieb:
> naja so einfach geht das nicht, da ich alles zusammen auf eine platine
> gelötet habe und über eine isp schnittstelle programmiere und alles in
> gehäusen untergebracht ist man muss das doch irgendwie berechnen können

Na dann.
Viel Spass beim Stochern im Nebel
#1607784
Lesenswert?

Was mir dazu eingefallen ist, haben wir abgeklärt, aber das hat ja 
nichts gebracht. Ich weiß nicht, ob das Signal wirklich richtig ankommt, 
und ich weiß nicht, mit welcher Baudrate der ATmega tatsächlich 
empfängt.

Jetzt musst Du den Fehler messtechnisch einkreisen, sonst ist es 
wirklich ein Stochern im Nebel.
Gast #1608787
Lesenswert?

so oszilloskop läuft ich sende den richtigen Bitcode und empfange ihn 
auch, habe nun die Frequenz herunter gesetzt, da ich dachte, dass mein 
controller mit einer solchen Sendeflut nicht zurecht kommt und sende nun 
nur noch alle 100ms jedoch sende ich dann nicht nur ein signal sondern 3 
gleiche Signale hintereinander, was aber auch nichts ausmachen dürfte
Gast #1608935
Lesenswert?

ja stimmt alles habe ich berechnet.
Sprich die Module arbeiten beide einwnadfrei, ich bin nun soweit, dass 
ich vor meiner Nachricht eine Art code sende, um weitere Fehler 
ausschließen zu können.
Nun weiß ich nicht genau wie ich das beim empfänger verarbeite, wenn ich 
2 verschiedene bitfolgen habe, das senden funktioniert schoneinmal.

Ich möchte zuerst den code auswerten und sollte dieser richtig sein, 
will ich den zweiten Bitstrom auswerten.
Nur weiß ich halt ncht genau wie ich das anstellen soll,
ich stelle mal rein wie ich es bisher habe es scheint aber nicht zu 
funktionieren.
1
//Empfangsinterrupt
2
ISR(USART_RX_vect)                      // wird ausgelöst, wenn Daten empfangen wurden
3
{  
4
  u8_Empfang = UDR0;                  // empfangene Daten werden in "u8_Empfang" gespeichert
5
  if( u8_Empfang == 0b00101011)
6
  {
7
    u8_Code_empfangen = 1;
8
  }
9
  else
10
  {
11
    u8_Code_empfangen = 0;
12
  }
13
      
14
}

und dann frage ich den Variable u8_code_emfangen im Hauptprogramm 
zusätzlich ab
1
// Rot empfangen
2
    if(u8_Empfang == 0b00000001 && u8_Code_empfangen ==1)            // Abfrage "Störung" empfangen?
3
    {  
4
      u8_rot = 1;                    // wenn "ja" steuer rote LED an
5
    }
6
    else                        // wenn "nein"
7
    {  
8
  
9
      u8_rot = 0;                    // steuere rote LED nicht an
10
    }
Gast #1608948
Lesenswert?

hab nochmal optimiert
1
//Empfangsinterrupt
2
ISR(USART_RX_vect)                      // wird ausgelöst, wenn Daten empfangen wurden
3
{  
4
//  u8_Empfang = UDR0;                  // empfangene Daten werden in "u8_Empfang" gespeichert
5
  if( UDR0 == 0b00101011)
6
  {
7
  u8_Empfang = UDR0;
8
    u8_Code_empfangen = 1;
9
  }
10
    
11
}

und
1
// Rot empfangen
2
    if(u8_Empfang == 0b00000001 && u8_Code_empfangen ==1)            // Abfrage "Störung" empfangen?
3
    {  
4
      u8_rot = 1;                    // wenn "ja" steuer rote LED an
5
      u8_Code_empfangen = 0;
6
    }
7
    else                        // wenn "nein"
8
    {  
9
  
10
      u8_rot = 0;                    // steuere rote LED nicht an
11
    }
#1608954
Lesenswert?

Ich würde grundsätzlich das Empfangen vom Auswerten des Empfangenen 
trennen.
Die ISR ist nur dafür zuständig ein Byte von der UART zu holen und zb in 
einem Ringbuffer abzulegen.
Ob das Empfangene gültig ist, sehe ich mir dann bei der Auswertung zb in 
main() an.
1
ISR(USART_RX_vect)                      // wird ausgelöst, wenn Daten empfangen wurden
2
{  
3
//  u8_Empfang = UDR0;                  // empfangene Daten werden in "u8_Empfang" gespeichert
4
  if( UDR0 == 0b00101011)
5
  {
6
  u8_Empfang = UDR0;
7
    u8_Code_empfangen = 1;
8
  }
9
    
10
}

Das darfst du nicht tun. Du darfst UDR0 nur ein einziges mal pro Zeichen 
auslesen.
Gast #1609337
Lesenswert?

So habe nun meinen code abgesichert und die baudrate heruntergesetzt, 
damit alles deutlich und sauber übertragen wird seht auch alles danach 
aus, habe nun abgetestet, und mein microcontroller kann irgendiwe nichts 
mit den daten anfangen, sprich er nimmt den code nicht als den richtigen 
code war, hat jemand ne ahnun woran das liegen könnte?
#1609345
Lesenswert?

Jens schrieb:
> So habe nun meinen code abgesichert und die baudrate heruntergesetzt,
> damit alles deutlich und sauber übertragen wird seht auch alles danach
> aus, habe nun abgetestet, und mein microcontroller kann irgendiwe nichts
> mit den daten anfangen, sprich er nimmt den code nicht als den richtigen
> code war, hat jemand ne ahnun woran das liegen könnte?

Ja. An deinem Programm
#1609372
Lesenswert?

Jens schrieb:
> ja soweit war ich auch, denn hardware arbeitet ja aber ich verstehe
> nicht waurm,da es ja in den Empfangsinterrupt springt und dort den code
> nicht erkennt

Einen Moment, ich habe eine Eingebung.
Es ist alles sehr verschwommen. Aber die Geister der Softwarewelt zeigen 
mir eine symbolisierte 42! Vielleicht solltest du Zeile 42 mal genauer 
ansehen?

Mist, jetzt ist alles wieder weg. Irgendjemand hier im Forum hat eine 
schlechte Aura. Ich kann deinen Code nur noch schemenhaft erkennen ... 
nein, jetzt ist auch das letzte bischen Sicht nur noch verschwommen.

(Meine Glaskugel sollte mal dringend zur Reparatur. Kennt jemand einen 
günstigen Magierservice?)
Gast #1609378
Lesenswert?

naja ich glaube das ist sehr unpassend und solltest du in einem anderen 
Thread verlagern passt nicht ganz zum Thema oder was meinst du?

Denn wie du sicherlich weißt gibt es keine dummen fragen nur dumme 
Antworten nun denk mal drüber nach
Gast #1609392
Lesenswert?

Naja, es gibt zwar keine dummen Fragen, aber unvollstaendige. Was was 
Karl Heinz dir auf humorvolle Art mitteilen wollte, ist dass dir keiner 
bei einem Fehler in deinem Code helfen kann, wenn du nicht deinen 
aktuellen Code herzeigst.
#1609401
Lesenswert?

Jens schrieb:

> Denn wie du sicherlich weißt gibt es keine dummen fragen nur dumme
> Antworten nun denk mal drüber nach

Doch, es gibt dumme Fragen. Es ist nur mitlerweile verpönt, den 
Fragesteller darauf hinzuweisen. Eine dumme Frage ist zb. ein Anruf beim 
Arzt: "Doc, es tut weh. Was kann das sein?". Das IST eine dumme Frage, 
weil jedem, der seine 7 Zwetschken noch halbwegs beisammen hat, klar 
sein muss, dass man sie nicht beantworten kann.

Poste deinen Code. Und zwar so, wie er jetzt aussieht. Du gehst ja 
schliesslich auch selber zum Arzt und lässt ihn sich die Sache ansehen 
und berufst dich nicht auf deinen Bruder, der vor einer Woche beim Arzt 
war und so ähnlich aussieht wie du.
Gast #1609404
Lesenswert?

sehr "humorvoll" ich würd das eher als unqualifiziert bezeichnen ...

Code ist gleich geblieben bis auf folgende zeilen
1
//Empfangsinterrupt
2
ISR(USART_RX_vect)                      // wird ausgelöst, wenn Daten empfangen wurden
3
{  
4
  u8_Datenstrom = UDR0;                  // empfangene Daten werden in "u8_Datenstrom" gespeichert    
5
  if( u8_Datenstrom == 0b00101011)            // ist die empfangene Bitfolge der Code?
6
  {
7
    u8_Code_empfangen = 1;
8
    //ROTE_LED_AN();                // wenn ja setze das Flag
9
    
10
  }
11
  else                              // wenn die empfangene Bitfolge nicht der code ist
12
  {//ROTE_LED_AN();
13
    if(u8_Code_empfangen == 1)              // Überprüfe ob die vorherige Folge der Code war --> es sind nun sinnvolle Daten
14
    {
15
      u8_Empfang = u8_Datenstrom;          // wenn ja schreibe die Bitfolge in "u8_Empfang"
16
      u8_Code_empfangen = 0;              // und setze das Flag zurück --> Übertragung abgeschlossen
17
    }
18
  }
19
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren