Forum: Mikrocontroller und Digitale Elektronik LED Diplay ansteuern Problem


von Sabine F. (Gast)


Lesenswert?

Hallo,

habe ein LED Display, welches ich über einen ATmega ansteuere. Das 
Display benötigt folgende Mitgabeparameter zum ansterern: 
<ID00><L1><PB><FE><MC><WC><FE>a14<E>

Der eigentliche Text in diesem Beispiel ist ein 'a', welches am Display 
angezeigt wird, die 14 dahinter ist die Hexzahl von 'a' ver XOR mit 0x75 
ergibt 14.

Nun mein Problem, wenn ich diesen String vom Mikrocontroller an das 
Display schicke funktiniert es nicht. Wenn ich jedoch den selben String 
via Terminal sende funktioniert es. Wie kann das sein, hab auch schon 
versucht den Code des Mikrocontrollers zu empfangen, er ist der selbe.

Was könnte der fehler sein, bin ratlos. Bitte um Antworten, danke.

MfG Sabine

von Oliver J. (skriptkiddy)


Lesenswert?

Welches Display?

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Hast du das Display mit dem Controller verbunden?

von Peter II (Gast)


Lesenswert?

sich das du das richtige schickst - hast du mal den PC angschlossen und 
geschaut was wirklich gesendet wird?

von Sabine F. (Gast)


Lesenswert?

Ein LED Display der Firma Lunartec, mit 350 LEDs. Habe schon alles 
versucht. Verstehe nicht woran es liegen kann, der Controller sendet, 
hab es mit einem zweiten Terminal probiert.

Silvan König schrieb:
> Hast du das Display mit dem Controller verbunden?

Ja, habe den Controller natürlich verbunden.

von mete (Gast)


Lesenswert?

Eventuell erwartet das Display als Zeilenende "\r\n", und du sendest am 
Controller nur "\n" oder gar nichts, das Terminal am PC aber schon?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Evtl. sendet dein Terminalprogramm ein CR und ein LF als Abschlusscode 
und der MC nicht ?
Edit: Doppelpost, hehehe

von Sabine F. (Gast)


Lesenswert?

Habe gerade probiert, dass ich am Schluss ein \r bzw ein \n mitgesendet 
habe. Hat leider nichts gebracht, aber danke für eure Tipps!!

von mete (Gast)


Lesenswert?

Und wenn du ein \r und ein \n, also beide hintereinander sendest? Bin 
mir von deinem Post nicht ganz sicher ob du das getan hast oder nicht.

von Sabine F. (Gast)


Angehängte Dateien:

Lesenswert?

Geht ebenfalls nicht :(

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Zeig doch mal den µC-Programm her.

von Sabine F. (Gast)


Lesenswert?

Nochmal: Wenn die Zeichen direkt vom Mikrocontroller an das LED - 
Display gesendet werden, dann funktiniert nichts. Wenn man jedoch die 
Zeichen mit einem anderen Terminal empfängt und dann an das Display 
weitersendet (siehe Screenshot), dann funktiniert es ohne Probleme. Bin 
am verzweifeln :(.

von Sabine F. (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#include "main.h"
3
#include "suart.h"
4
#include <avr/power.h>
5
#include <avr/io.h>
6
7
8
char text[1000];
9
char ftext[1000]=".";
10
char zeichen;
11
int gefiltert;
12
int fzeiger;
13
14
15
int main( void ) {
16
  
17
  int k;
18
  k=0;
19
  gefiltert=0;
20
  uart_init();
21
  
22
  clock_prescale_set(clock_div_1);
23
  suart_init();
24
25
  sei();
26
  for (;;) {              // main loop
27
    text[0] = 1;
28
    
29
    while (1) {
30
      if(k>1 && gefiltert==0 && text[k-1]=='=' && text[k-2]=='=') {
31
        filter();
32
        uartSend();
33
        gefiltert=1;
34
      }
35
      else {
36
        if(gefiltert==1) {
37
          k=0;
38
          gefiltert=0;
39
          for(int t=0; t<=1000; t++) {
40
            ftext[t]='\0';
41
            text[t]='\0';
42
43
          }
44
        }
45
        else {
46
          zeichen = uartRxChar();
47
          text[k] = zeichen;
48
          k++;
49
        }
50
      }
51
    }  
52
    while (! kbhit());        // wait until byte received
53
    sputchar (sgetchar () + 1);    // sent byte + 1
54
  }
55
}
56
57
void uart_init(void) {
58
    UBRR0H = 0x00;
59
  UBRR0L = 0x17;    
60
61
 
62
    UCSR0B = (1<<TXEN0) | (1<<RXEN0);          // UART TX und RX einschalten
63
    UCSR0C = (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);    // Asynchron 8N2 
64
}
65
66
char hexn() {
67
  char x= 0x00;
68
     int e=30;
69
  while(e<fzeiger) {
70
    x^=ftext[e];
71
    e++;
72
  }
73
    x^=0x75;
74
75
  return x;
76
}
77
78
void uartRxChar() {
79
    while(!(UCSR0A & (1<<RXC0))) {
80
   }
81
  return UDR0;                 
82
}
83
84
void uartSend() {
85
  for(int z=0; z<strlen(ftext); z++) {
86
    sputchar(ftext[z]);
87
  }
88
}
89
90
void filter() {   
91
    //char text[1000]="<27>x1<27>P<27>p0<27>k1<27>EGespeicherter Auftrag:<27>F 1/20   von LWZ<\r><\n><27>EEinsatznummer:<27>F E120300300   2012-03-08 13:20:21<\r><\n>----------------------------------------------------------------------<\r><\n><27>EEinsatzort:<27>F MICHELDORF IN OBER?STERREICH   <\r><\n>MICHELDORF-IN-OBER?STERREICH: @MICHELDORF IN OBER?STERREICH<\r><\n><\r><\n><27>EEinsatzart:<27>F PERSONENRETTUNG<\r><\n><27>EAlarmstufe:<27>F 1<\r><\n><\r><\n><27>EName:      <27>F <\r><\n><\r><\n><27>EAlarmtext: <27>F PERSON IN KREMS GEFALLLEN ALTE SPITALSTR 1<\r><\n><\r><\n><27>EAnrufer:   <27>F 07582635810<\r><\n><27>EProgramm:   <27>FFeuer<\r><\n><27>EAusger?ckt:<27>F 2012-03-08 13:24:54<\r><\n><27>EBeendet:<27>F    2012-03-08 13:57:10<\r><\n><\r><\n>======================================================================<\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n><\r><\n>";                          //Text StringArray....noch probleme bei der größe
92
    int l= strlen(text);                                                       // length vom Text
93
    int i=0;
94
    int ende=0;
95
    int lastChar=0;
96
    int azeit=0;
97
  int lastArgument=0;
98
    
99
    fzeiger=0;                                     //gefilterterText Zeiger
100
    //<ID00><L1><PB><FE><MC><WC><FE>a14<E>
101
 
102
103
    if(i<(l-8)) {
104
        while(i<l) {
105
                   //Einsatznummer
106
                  if((text[i]=='E' || text[i]=='e') && text[i+1]=='i' && text[i+2]=='n' &&text[i+3]=='s' && text[i+4]=='a' && text[i+5]=='t' && text[i+6]=='z' && text[i+7]=='n' && text[i+8]=='u') {               
107
                   
108
                ftext[fzeiger]='<';
109
                ftext[fzeiger+1]='I';
110
                ftext[fzeiger+2]='D';
111
                ftext[fzeiger+3]='0';
112
                ftext[fzeiger+4]='0';
113
                ftext[fzeiger+5]='>';
114
                ftext[fzeiger+6]='<';
115
                ftext[fzeiger+7]='L';
116
                ftext[fzeiger+8]='1';
117
                ftext[fzeiger+9]='>';
118
                ftext[fzeiger+10]='<';
119
                ftext[fzeiger+11]='P';  
120
                ftext[fzeiger+12]='B';
121
                ftext[fzeiger+13]='>';
122
                ftext[fzeiger+14]='<';
123
                ftext[fzeiger+15]='F';
124
                ftext[fzeiger+16]='E';
125
                ftext[fzeiger+17]='>';
126
                ftext[fzeiger+18]='<';
127
                ftext[fzeiger+19]='M';
128
                ftext[fzeiger+20]='C';
129
                ftext[fzeiger+21]='>';
130
                ftext[fzeiger+22]='<';
131
                ftext[fzeiger+23]='W';
132
                ftext[fzeiger+24]='C';
133
                ftext[fzeiger+25]='>';
134
                ftext[fzeiger+26]='<';
135
                ftext[fzeiger+27]='F';
136
                ftext[fzeiger+28]='E';
137
                ftext[fzeiger+29]='>';
138
                fzeiger=fzeiger+30;
139
140
141
                 ftext[fzeiger]='E';
142
                                 ftext[fzeiger+1]='i';
143
                                 ftext[fzeiger+2]='n';
144
                                 ftext[fzeiger+3]='s';
145
                                 ftext[fzeiger+4]='a';
146
                                 ftext[fzeiger+5]='t';
147
                                 ftext[fzeiger+6]='z';
148
                                 ftext[fzeiger+7]='z';
149
                                 ftext[fzeiger+8]='e';
150
                                 ftext[fzeiger+9]='i';
151
                                 ftext[fzeiger+10]='t';
152
                                 ftext[fzeiger+11]=':';
153
                                 ftext[fzeiger+12]=' ';
154
                                 fzeiger=fzeiger+13;
155
                                 ende=1;
156
                                 i=i+14;
157
                                 azeit=1;
158
                  //Einsatzort
159
                  } else if((text[i]=='E' || text[i]=='e') && text[i+1]=='i' && text[i+2]=='n' &&text[i+3]=='s' && text[i+4]=='a' && text[i+5]=='t' && text[i+6]=='z' && text[i+7]=='o' && text[i+8]=='r' && text[i+9]=='t' && text[i+10]==':') {
160
                                 
161
                ftext[fzeiger]=' ';
162
                ftext[fzeiger+1]='|';
163
                ftext[fzeiger+2]='|';
164
                ftext[fzeiger+3]=' ';
165
                fzeiger=fzeiger+4;
166
167
                 ftext[fzeiger]='E';
168
                                 ftext[fzeiger+1]='i';
169
                                 ftext[fzeiger+2]='n';
170
                                 ftext[fzeiger+3]='s';
171
                                 ftext[fzeiger+4]='a';
172
                                 ftext[fzeiger+5]='t';
173
                                 ftext[fzeiger+6]='z';
174
                                 ftext[fzeiger+7]='o';
175
                                 ftext[fzeiger+8]='r';
176
                                 ftext[fzeiger+9]='t';
177
                                 ftext[fzeiger+10]=':';
178
                                 ftext[fzeiger+11]=' ';
179
                                 fzeiger=fzeiger+12;
180
                                 ende=1;
181
                                 i=i+11;
182
                  //Einsatzart
183
                  } else if((text[i]=='E' || text[i]=='e') && text[i+1]=='i' && text[i+2]=='n' &&text[i+3]=='s' && text[i+4]=='a' && text[i+5]=='t' && text[i+6]=='z' && text[i+7]=='a' && text[i+8]=='r' && text[i+9]=='t' && text[i+10]==':'){
184
                                 
185
                ftext[fzeiger]=' ';
186
                ftext[fzeiger+1]='|';
187
                ftext[fzeiger+2]='|';
188
                ftext[fzeiger+3]=' ';
189
                fzeiger=fzeiger+4;                 
190
191
                 ftext[fzeiger]='E';
192
                                 ftext[fzeiger+1]='i';
193
                                 ftext[fzeiger+2]='n';
194
                                 ftext[fzeiger+3]='s';
195
                                 ftext[fzeiger+4]='a';
196
                                 ftext[fzeiger+5]='t';
197
                                 ftext[fzeiger+6]='z';
198
                                 ftext[fzeiger+7]='a';
199
                                 ftext[fzeiger+8]='r';
200
                                 ftext[fzeiger+9]='t';
201
                                 ftext[fzeiger+10]=':';
202
                                 ftext[fzeiger+11]=' ';
203
                                 fzeiger=fzeiger+12;
204
                                 ende=1;
205
                                 i=i+11;
206
                  //Alarmstufe
207
                  } else if((text[i]=='A' || text[i]=='a') && text[i+1]=='l' && text[i+2]=='a' &&text[i+3]=='r' && text[i+4]=='m' && text[i+5]=='s' && text[i+6]=='t' && text[i+7]=='u' && text[i+8]=='f' && text[i+9]=='e' && text[i+10]==':'){
208
                                 
209
                ftext[fzeiger]=' ';
210
                ftext[fzeiger+1]='|';
211
                ftext[fzeiger+2]='|';
212
                ftext[fzeiger+3]=' ';
213
                fzeiger=fzeiger+4;
214
                 
215
                 ftext[fzeiger]='A';
216
                                 ftext[fzeiger+1]='l';
217
                                 ftext[fzeiger+2]='a';
218
                                 ftext[fzeiger+3]='r';
219
                                 ftext[fzeiger+4]='m';
220
                                 ftext[fzeiger+5]='s';
221
                                 ftext[fzeiger+6]='t';
222
                                 ftext[fzeiger+7]='u';
223
                                 ftext[fzeiger+8]='f';
224
                                 ftext[fzeiger+9]='e';
225
                                 ftext[fzeiger+10]=':';
226
                                 ftext[fzeiger+11]=' ';
227
                                 fzeiger=fzeiger+12;
228
                                 ende=1;
229
                                 i=i+11;
230
                  //Alarmtext
231
                  } else if((text[i]=='A' || text[i]=='a') && text[i+1]=='l' && text[i+2]=='a' &&text[i+3]=='r' && text[i+4]=='m' && text[i+5]=='t' && text[i+6]=='e' && text[i+7]=='x' && text[i+8]=='t' && text[i+9]==':'){
232
                                 
233
                ftext[fzeiger]=' ';
234
                ftext[fzeiger+1]='|';
235
                ftext[fzeiger+2]='|';
236
                ftext[fzeiger+3]=' ';
237
                fzeiger=fzeiger+4;                 
238
239
                 ftext[fzeiger]='A';
240
                                 ftext[fzeiger+1]='l';
241
                                 ftext[fzeiger+2]='a';
242
                                 ftext[fzeiger+3]='r';
243
                                 ftext[fzeiger+4]='m';
244
                                 ftext[fzeiger+5]='t';
245
                                 ftext[fzeiger+6]='e';
246
                                 ftext[fzeiger+7]='x';
247
                                 ftext[fzeiger+8]='t';
248
                                 ftext[fzeiger+9]=':';
249
                                 ftext[fzeiger+10]=' ';
250
                                 fzeiger=fzeiger+11;
251
                                 ende=1;
252
                                 i=i+10;
253
                 lastArgument=1;
254
                  }
255
                  
256
          char buffer [50];
257
                  int s;
258
                  //Zeichenfilter
259
                  if(ende ==1) {
260
                          if(text[i]=='<' && text[i+1]=='2' && text[i+2]=='7' && text[i+3]=='>') {
261
                               if(lastChar==0) {
262
                                    i=i+5;
263
                                    lastChar=1;
264
                                    if(azeit==1) {
265
                                                 i=i+13;
266
                                                 azeit=0;
267
                                    }
268
                               } else if (lastChar==1){
269
                                      if(lastArgument==1) {
270
                      int in=hexn();
271
                      s=sprintf (buffer, "%x",in);
272
                      
273
                      int q=0;
274
                      while(q<strlen(buffer)) {
275
                                      ftext[fzeiger]=buffer[q];
276
                        fzeiger++;
277
                                      q++;
278
                     }
279
                      
280
                      ftext[fzeiger]='<';
281
                      ftext[fzeiger+1]='E';
282
                      ftext[fzeiger+2]='>';
283
                      fzeiger=fzeiger+3;
284
                      lastArgument=0;
285
                    }
286
                    i=i+3;
287
                                      lastChar=0;
288
                                      ende=0;
289
                               }
290
                          }
291
                          else if(text[i]=='<') {
292
                               i=i+3;
293
                          }
294
                          else if(text[i]=='-' && text[i+1]=='-') {
295
                               i=i+69;
296
                          }
297
                          else {
298
                            ftext[fzeiger]=text[i];
299
                            fzeiger++;  
300
                          }
301
                  }
302
                  
303
                  i++;
304
        }
305
    }
306
}

von Frank L. (hermastersvoice)


Lesenswert?

wie sieht der komplette Hardwareaufbau aus?  Hat der Controller einen 
Quarz? Wenn nicht könnte der PC fehlerresistenter sein als die Anzeige.

von Sabine F. (Gast)


Lesenswert?

Ja der Controller besitzt einen Externen Quarz. die UART - Übertragung 
funktiniert gut. Nur eben dieses Problem mit diesem Display.

von Frank L. (hermastersvoice)


Lesenswert?

Baudratenquarz?

von Peter II (Gast)


Lesenswert?

sorry aber der code ist ja furchtbar
1
if((text[i]=='E' || text[i]=='e') && text[i+1]=='i' && text[i+2]=='n' &&text[i+3]=='s' && text[i+4]=='a' && text[i+5]=='t' && text[i+6]=='z' && text[i+7]=='n'

ist das nicht lesbarer?
1
if ( strncmp( text+i, "EEinsatzn", 9 ) == 0 )

von Sabine F. (Gast)


Lesenswert?

Doch, es ist natürlich lesbarer, jedoch bin ich noch eine Anfängerin, 
sry.

von Peter II (Gast)


Lesenswert?

Sabine F. schrieb:
> Doch, es ist natürlich lesbarer, jedoch bin ich noch eine Anfängerin,
> sry.

dann solltest du erstmal ein paar übungen zur string verarbeitung in C 
machen. (am besten auf eine PC ).

Dann kann man auch das noch lesbarer machen:
1
ftext[fzeiger]='A';
2
ftext[fzeiger+1]='l';
3
ftext[fzeiger+2]='a';
4
ftext[fzeiger+3]='r';
5
ftext[fzeiger+4]='m';
6
ftext[fzeiger+5]='t';
7
ftext[fzeiger+6]='e';
8
ftext[fzeiger+7]='x';
9
ftext[fzeiger+8]='t';
10
ftext[fzeiger+9]=':';
11
ftext[fzeiger+10]=' ';
12
fzeiger=fzeiger+11;

kann man lesbarer so schreiben:
1
strncpy( ftext + fzeiger, "Alarmtext: ", 11 );

das hilft aber leider nicht bei deinem Problem - es muss ein unterschied 
geben zwischen dem was du sendest und was der µC sendet - anders ist das 
nicht zu erklären.

von Sabine F. (Gast)


Lesenswert?

Wenn ich vom Mikrocontroller etwas empfangene, und das gleiche dann 
sende (mit kopieren als ASCII), dann funktiniert es.

<ID00><L1><PB><FE><MC><WC><FE>a14<E> ... empfangen
<ID00><L1><PB><FE><MC><WC><FE>a14<E> ... gesendet

Versteh nicht warum es durch senden via Terminal an das Display 
funktiniert und direkt über den Mikrocontroller nicht, obwohl das selbe 
(zumindest sieht es so aus) gesendet wird.

Sendet das Terminal die Daten anders?

von Vn N. (wefwef_s)


Lesenswert?

Sicherheitshalber: richtig angeschlossen?

von Peter II (Gast)


Lesenswert?

stimmt denn die Hardware? oder kann es sein das die spannung vom µC 
nicht zum display passt?

von Sabine F. (Gast)


Lesenswert?

100% richtig angeschlossen.

Peter II schrieb:
> stimmt denn die Hardware? oder kann es sein das die spannung vom µC
> nicht zum display passt?

Die Hardware funktiniert sonst einwandfrei. Spannung vom µC != Spannung 
Display???

Verstehe nicht was Sie meinen. Das Display wird mit einer externen 
Stromversorgung betrieben.

von Sabine F. (Gast)


Lesenswert?

Keine eine Idee?

von Michael H. (michael_h45)


Lesenswert?

Sabine F. schrieb:
> Wenn ich vom Mikrocontroller etwas empfangene, und das gleiche dann
> sende (mit kopieren als ASCII), dann funktiniert es.
Bau doch mal beim Senden zwischen den einzelnen Zeichen ein bisschen 
Pause ein.

Kannst du das Timing vom UART beim Atmega mit einem Oszi anschaun? 
Vielleicht ist der PC ja toleranter gegenüber Baudraten-Fehlern als das 
Display.

von Sabine F. (Gast)


Lesenswert?

Michael H. schrieb:
> Bau doch mal beim Senden zwischen den einzelnen Zeichen ein bisschen
> Pause ein.

Wie kann ich so eine Pause einbauen? Bin noch Anfänger, sry.


Kann mir das Timing leider nicht ansehen, habe momentan leider kein 
SpeicherOszi zur Verfügung. Wenn der Text richtig übertragen wird, kann 
es dann trotzdem ein minimaler Baudrtatenfehler vorliegen?

von Peter II (Gast)


Lesenswert?

sag mal etwas mehr zum Hardware aufbau, nicht das die spannungspegel 
nicht stimmen.

von Sabine F. (Gast)


Lesenswert?

ATmega644, MAX232N, Externer Quarz: 3.6864 MHz

von Peter II (Gast)


Lesenswert?

Kann es sein das das Display mehr als RXT und TXT braucht z.b. die 
Handshake leitungen?

von Achim M. (minifloat)


Lesenswert?

Sabine F. schrieb:
> 100% richtig angeschlossen.

Sabine F. schrieb:
> Bin noch Anfänger, sry.

RX und TX vertauscht?

von Michael H. (michael_h45)


Lesenswert?

Sabine F. schrieb:
> Wie kann ich so eine Pause einbauen? Bin noch Anfänger, sry.
Das ist wohl irgendwo in deiner (s)uart.c vergraben.
Aber Aufschluss darüber kann auch ein Oszillogramm geben.

Sabine F. schrieb:
> Wenn der Text richtig übertragen wird, kann
> es dann trotzdem ein minimaler Baudrtatenfehler vorliegen?
Ja. Sagen wir mal, der AVR sendet mit 3% Fehler. Der PC kann bis 5% 
problemlos empfangen, das Display aber höchstens bis 2%.
Dann siehst du am PC alles ohne Probleme, während das Display nicht 
richtig empfängt.



Beschreib doch mal blockweise deinen Aufbau mit allen seinen 
Komponenten und wie du die untereinander bei welchem Test verbindest.
Ein Foto kann auch viel helfen.

von Sabine F. (Gast)


Lesenswert?

Das Display benötigt doch die Handshakes, ohne funktiniert es nicht.

Wie implementier ich diese Software - Handshakes?

von Achim M. (minifloat)


Lesenswert?

Sabine F. schrieb:
> Das Display benötigt doch die Handshakes, ohne funktiniert es nicht.

XON und XOFF? einfach die richtigen Steuerzeichen senden, wenn es 
Software-Handshake ist.
Bei Hardware-Handshake müssen ein paar Leitungen mehr angeschlossen 
werden.
Eigentlich denke ich, dass Handshake hier überhaupt nicht das Problem 
ist.

mfg mf

von bob (Gast)


Lesenswert?

So wie es aussieht ist es ein Lauflicht

http://www.pearl.de/a-PE9441-5023.shtml

dazu gibt es noch das pdf

http://www.pearl.de/pdocs/PE9441_11_65883.pdf

Auszug:
1
4.2 Message / Control
2
  There are 6 kind of message / control transfer
3
    - Real Time Clock Setting
4
    - Sending Page Message
5
6
    Format :
7
    PC -> MCU  <IDXX><Data packet><CS><E>
8
9
    <IDXX>      are the ID of the designated LED board
10
    <, I,D & >  are ASCII character “<”, “I”, “D” & “>”
11
    XX          denotes the ID of the designated LED Board
12
                Values are two ASCII character from 00-FF
13
    Data packet denotes data content of this transmission string
14
    [CS]        denotes the Xor Result of the data content(Data Package).
15
    [,C,S &]    are two ASCII character from 00-FF
16
    <E>         Denotes the Ending code of transmission
17
    <,E & >     are ASCII character “<”,”E”, and “>”
18
[/c]
19
20
21
[code]
22
Important notes for programming:
23
1. For the Xor Result of the message send, Refer to Item 4.1 & 4.2
24
   ID setting has no Xor result sent .
25
   All message other than ID setting should have a Xor result (2 digit from 00-FF hex
26
   number)for the data package placed before the Ending code ‘ <E>’.
27
2. When it is first time initialize, You should first set the follow parameters
28
   - ID
29
   - Time/Date


Irgendwie sehe ich im Programm keine Berechnung des "XOR-Results"

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sabine F. schrieb:
> Das Display benötigt doch die Handshakes, ohne funktiniert es nicht.
>
> Wie implementier ich diese Software - Handshakes?

Ich seh da auch nix von Software Handshake. Für Hardware Handshake 
reicht es im allgemeinen, im Stecker die Kontakte RTS mit CTS zu 
verbinden, als auch DTR mit DSR.
Das Xor'ing ist ein bisschen missverständlich. Sieht mir nach einer Art 
Data Integrity Check aus. Im DataPacket könnte nach jedem gesendeten 
Nutzbyte (ASCII) das gleiche mit 0xFF gexored gesendet werden. Das 
könnte man recht simpel im MC mit
1
void uartSendwithXor() {
2
  for(int z=0; z<strlen(ftext); z++) {
3
    sputchar(ftext[z]);
4
    _delay_ms(5); // einige teilnehmer empfehlen ein delay
5
    sputchar(ftext[z]^0x0FF);
6
    _delay_ms(5);
7
  }
8
}
lösen.

von Dennis S. (whiterussian)


Lesenswert?

Beschreibung des LED Interfacing:

Interfacing Method
RS232 Baud Rate : 9600 ( 8,N,1.)

Dein Code Uart Init:

    UCSR0C = (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);    // Asynchron 8N2

Es wird reichen einfach 8n1 zu nehmen.

DS

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sollte allerdings auch mit 2 Stopbits gehen, das fügt sozusagen ein 
kleines Bytedelay gleich mit ein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.