Hallo
Unglaublich was der Kleine aus mir raussaugt, mein Adapter ist fertig. Und er funktioniert auch fast perfekt:
Bild hier Bild hier Bild hier Bild hier
Stückliste:
1 asuro
1 asuro/yeti RS232-Transceiver
1 serielle Maus (mit 1200,7,2,none)
2 9-polige Sub-D Stecker (Vater)
1 9V-Akkublock
1 Anschlussclip für den 9V-Block
etwas Schaltdraht
Lötkolben und etwas zum Kabelabzwicken
Oki, alles nicht wild, die große Frage war: "Wie versorge ich das ganze mit Spannung". Der Adapter sollte völlig unabhänging vom asuro sein, aber dennoch so leicht, dass man ihn auf den asuro binden kann. Die Lösung:
Der Tripol-9V-Block
Bild hier Bild hier Bild hier
Nachdem ich etwas im Netz gestöbert hatte, fand ich einen (eigentlich nicht ernst gemeinten) Tip: "Mach doch eine Mittelanzapfung dran". Mmmmh, wie sieht den ein 9V-Block von innen aus? Ich habe dann vorsichtig einen aufgehebelt und siehe da, 7 kleine Akkus sind da drin. Prima. Ich habe oben ein kleines Loch gebohrt und den Akku mit einem zusätzlichen Draht zwischen der vierten und fünften Zelle abgezapft. Aufbau:
+(Plus) | 4 Zellen(4,8V) | Anzapfung | 3 Zellen(3,6V) | -(Minus)
und das ergibt eine +4,8V/-3,6V Versorgungsspannung. Sieht wenig aus, aber mein Notebook (IBM) liefert auch nur 5.irgendwas Volt an der RS232-Schnittstelle)
Der Anschluß des Maussteckers:
Pin2: Leitung zum Pin3 des Tranceiver-Steckers
Pin3: -3.6V (Minus des Tripol-Blocks)
Pin4: +4.8V (Plus des Tripol-Block) verbunden mit Pin7 des Maussteckers
Pin5: 0V (Anzapfung des Tripol-Blocks) verbunden mit Masse
Pin7: +4.8V (Plus des Tripol-Block) verbunden mit Pin4 des Maussteckers
Steckergehäuse: 0V (Anzapfung des Tripol-Blocks) verbunden mit Pin5 des Maussteckers
Der Anschluß des Transceiver-Steckers:
Pin3: Leitung zu Pin 2 des Maussteckers
Pin4: +4.8V (Plus des Tripol-Block)
Pin5: 0V (Anzapfung des Tripol-Blocks)
Das war's auch schon, Besitzer eines USB-Transceivers (oder eines zweiten RS232-Transceivers) können das ganze jetzt schon mal testen. Wenn alles funktioniert, sollte im Terminal-Programm etwa das erscheinen, :
Code:
PtP@PtP@P@ttPtt@PhPtPtttP@P`P@P@tPtppppppppqpqabcdvwvw
cdcBcbcbcbÀbcbbcbÀbbbcbcbcbÀbÀbÀPQPQQPQPQOPOPOPOP ! ! ! ! ! !vwbcvwcdvwcdvwbdvwc
dvwcdvwcdvwcdvwcdvwcdvwcdvwcdPQ@APQ@APQ@APQ@APQbcvwbdvwcdxycdvwbcbcwdxy`rvsc`v
c`vsbvsc`rvssvsvsvsvsvs`s`srvs`vscrsrvsc`sc`vsc`vvsvsvssavsc`c`vscrvvv
vsdjajajaajaej}ajaea}}aj}jaaje}ja}j}j~jqj@jaj~jaj~h``h`tp`~fcf~fstg```P@P@`@`@`@
`@`@`@`@`@`@P@P@P@P@@C?@S>|@_@@@@@L?C?C?O>?O77O;;L?O76O6.O7-O<.O>3O?6O=:O?>C?L?@
@L?L?C?C:C4C3C;C=C:C4C6C>L?C6C4C<L;@@@@C?C)CC2C-C2C/C8O?;L/L+L-L*L.L4L8L;L?C?C=C
=C=C9C4C3C6O;?O49O04O31O91O;5O?7L5L5L:L:O><O??C?C:C-C6C<C?L?L?L7L3L8L;L;L<L;L6L7
L;L>C?C?@C?C?@@L=L>L?L?C?O5=C1C2C1C)C9C<C?L?L?O?<L:L6L2L2L6L8L8L?@@C?C:C:C:C6C4O
8?C7O:>O;<O;:O><@@L?L5L8O;6O>:O>8L9L8L;L?L?C?C9C3C8C:C6C6C:@@@@O?>@L?L?@<L8L:L=L
=L<L>L?L;L8L6L4L6L4@C?C;C3C+C-C3C3C,C+C6C;O<?O:=O87O:5O>6L7L4L
(Nicht vergessen, die Maus sendet mit 1200,7,2,none! Das selbe sieht man auch, wenn man die Maus direkt am Terminal einsteckt.)
Mein Testaufbau:
Bild hier Bild hier Bild hier Bild hier
Und noch ein kleines Filmchen:
Bild hier
Leider wieder unscharf und die Farbe ( Bit 0 des Zeichens) der StatusLED nicht erkennbar. Was man aber sieht ist die IR-Diode des asuros die das empfangene Zeichen+1 zurücksendet.
Leider hat das ganze noch einen Schönheitsfehler: Die vom asuro empfangenen Zeichen sind irgendwie Schrott. Ich weis noch nicht, ob das an meiner Empfangsroutine liegt, oder am Aufbau des Datenbytes oder sonstwas. Vielleicht weis ja einer von euch warum das noch nicht klappt.
Der Code meines kleinen Testprogramms:
Code:
#include "../inc/asuro.h"
#define FOSC 8000000// Clock Speed
#define BAUD 1200
#define MYUBRR FOSC/16/BAUD-1
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
/*UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);*/
UCSRC = 0x8A; //10001010 = 7bit, 2stop, kein parity
}
int main( void )
{
char data;
Init();
USART_Init ( MYUBRR );
while (0) {
SerWrite("abcABC",6);
Msleep(500);
}
// aus SerRead() kopiert
//data=' ';
//UCSRB = 0x10; // enable receiver
while(0) {
if (UCSRA & 0x80) data = UDR;
if (data == 'P') BackLED(OFF,ON);
if (data == '@') BackLED(ON,OFF);
data = ' ';
}
StatusLED(RED);
data=' ';
while(1) {
SerRead(&data,1,0);
if (data == 'P') BackLED(OFF,ON);
if (data == '@') BackLED(ON,OFF);
if (data & 1) StatusLED(YELLOW); else StatusLED(RED);
data++;
SerWrite(&data,1);
}
return 0;
}
und für den schnellen Test noch das .hex im Anhang.
that's all
Gruß
mic
Lesezeichen