PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechenaufgabe (Datentransfer RS232 an PC)



boeseTURBO-CT
22.07.2005, 10:00
Soooo,

Ich habe folgendes vor:

Auf einem ATMEGA (16 MHz, 56k RS232) läuft ein Timer, der jede 0,1 ms bzw. 1,0 ms (je nach Einstellung) ein interrupt auslöst.

Nach auslösen des interruptes werden zwei Eingänge überprüft, ob diese high oder low sind, und in zwei entsprechenden Arrays abgelegt.

Nach 10 interrupts sollen die Daten über RS232 an eine Visual Basic applikation gesendet werden und dort weiterverarbeitet werden.

Der Controller sendet also zB.

10100000110101111000 an den PC

die ersten 10 Zahlen ist der Zustand Eingang 1 je 0,1 bzw 1 ms und
die letzten 10 Zahlen ist der Zustand Eingang 2 je 0,1 bzw 1 ms.

Sprich der Controller sendet je Sekunde insgesamt 1000 (bei 0,1ms Takt, da ja immer 10 Ziffern geschickt werden) bzw. 100 (bei 1 ms Takt) Zeilen an den angeschlossenen PC.

Die Frage ist nun, ob das ganze innerhalb von 1 bzw 10 ms übertragen werden kann, oder ob die serielle schnittstelle bzw. der Controller zu langsam dafür sind.)

PS: Auf dem PC werden dann digitale "Wellen" (wie rechtecksignal beim Oszilloskop) in der visual basic software angezeigt. Damit will ich dann das Timing eines anderen ATMEGAs testen, ob die Impulse zur richtigen Zeit und in der richtigen länge kommen.

Viele Grüsse

Jan

PicNick
22.07.2005, 10:09
bei Rs232 werden je Byte 10 Bit geschickt. Mit etwas taktischer Reserve wird also bei 9600 Baud etwa 1 Byte in 1 mS geschickt.

boeseTURBO-CT
22.07.2005, 10:18
bei Rs232 werden je Byte 10 Bit geschickt. Mit etwas taktischer Reserve wird also bei 9600 Baud etwa 1 Byte in 1 mS geschickt.

das klingt ja schonmal gut. Dann schaffe ich ja quasi in einer ms bei
57600 baud 60 bits zu senden.

Hmmm da ist die nächste Frage: wenn ich den Print-Befehl benutze,
dann sendet der AVR doch ein String, der dann natürlich wesentlich länger ist?

Wie kann ich bascom sagen, das er die zahlen binärisch senden soll? Hat da jemand mal ein Codeschnippsel?

Gruss & Vielen Dank schonmal

Jan

PicNick
22.07.2005, 10:36
Wenn das auch als Codeschnipsel gilt , isses mir recht

PRINTBIN einbyte
Ein byte pur, so wie's ist, ohne was vorn oder hinten

boeseTURBO-CT
22.07.2005, 10:46
Hallo Robert


Wenn das auch als Codeschnipsel gilt , isses mir recht

PRINTBIN einbyte
Ein byte pur, so wie's ist, ohne was vorn oder hinten


also kann ich praktisch jede ms

printbin 1001010001 'Eingang 1
printbin 1001010001 'Eingang 2

senden ja?

wieso eigentlich je byte, 10 bit? ein Byte doch doch normalerweise 8 bit...

kommen die bits dann blockweise (also je byte) an, oder einzeln je bit?

Viele Grüsse und vielen Dank

Jan

PicNick
22.07.2005, 10:51
Ein Startbit, 8 Daten-bit, ein Stopbit ----> 10 Bit
Bei einem Draht müssen sich die Bits natürlich hintereinander durchquetschen, sonst gibt's Stau