Hi,
ich habe hier einen ATMega16 mit 1MBaud bzw. 125000 Byte/s.
Mit meinem Terminalprogramm kann ich auch mit dieser Rate Daten
übertragen. Am ATmega16 hängt ein paralleler DAC mit 8Bit. (Der auch
schnell genug für die Rate ist.)
Jetzt habe ich in Matlab ein Skript erstellt, mit dem ich einzelne Bytes
übertrage. Die Baudrate habe ich richtig eingestellt, aber die Bytes
gehen nur im Bereich von 1ms über die Leitung. Ich sende jedes Zeichen
einzeln. Ist das vielleicht der Fehler?
Macht es bei der seriellen Schnittstellen einen Unterschied, ob man in
Windows jedes mal den Befehl für Byte senden aufruft. Oder muss man
vielleicht sowas wie einen Buffer vollschreiben, der dann automatisch
mit der Baudrate ausgegeben wird?
Der Matlabcode sieht so aus:
1 | s = serial('COM6');
|
2 | s.BaudRate = 1000000;
|
3 | s.DataBits = 8;
|
4 | s.StopBits = 1;
|
5 | s.OutputBufferSize = 50000; %definiert, aber wie schreibt man direkt rein?
|
6 | fopen(s);
|
7 |
|
8 | K=zeros(255,1);
|
9 | a=1;
|
10 |
|
11 | %K(i) ist Vektor mit den Byte Werten
|
12 |
|
13 | for i=1:1:10000000 %10 Sekunden
|
14 | fwrite(s,K(i));
|
15 | end
|
16 |
|
17 | fclose(s)
|
18 | delete(s)
|
19 | clear s
|