Hallo,
ich bin zur Zeit dabei eine VISCA fähige Kamera von Sony (BRC-Z330) mit
einem ATMega162 zu steuern.
Am usart1 hab ich einen max485 hängen, an diesem hängt dann die Kamera.
Leider kann ich darüber nur senden (sollte reichen für meine
Anforderungen), da der max485 kein vollduplex tranceiver ist. Mit einem
oszilloskop hab ich mal am Ausgang gemessen und da gehen rechtecksignale
raus bis zur Kamera. Allerdings hab ich jetzt das Problem dass die
kamera einfach nichts tut. Egal was ich ihr sende oder mache, weder
blinkt was noch bewegt sich was.
Hier das wesentliche wie ich der Kamera befehle sende:
1 | #define F_CPU 8000000 /* Quarz mit 8 Mhz */
|
2 |
|
3 |
|
4 | void USARTWriteChar(char data)
|
5 | {
|
6 | //Wait untill the transmitter is ready
|
7 |
|
8 | while(!(UCSR1A & (1<<UDRE1)))
|
9 | {
|
10 | //Do nothing
|
11 | Common::BlinkLED(1);
|
12 | }
|
13 |
|
14 | //Now write the data to USART buffer
|
15 |
|
16 | UDR1=data;
|
17 | }
|
18 |
|
19 | [...]
|
20 | unsigned long UBRR_VAL = (((F_CPU+(9600L*8))/(9600L*16))-1); //baud 9600
|
21 |
|
22 | UBRR1H = UBRR_VAL >> 8;
|
23 | UBRR1L = UBRR_VAL & 0xFF;
|
24 |
|
25 | /* Enable sender and interrupt for USART1*/
|
26 | UCSR1B = SetBit(TXEN1);
|
27 |
|
28 | UDR1 = 0; // clear USART data register
|
29 | UCSR1A = 0; // clear error flags, disable U2X and MPCM
|
30 |
|
31 | //1 stop bit, 8 data bit
|
32 | UCSR1C=(1<<URSEL1)|(1<<UCSZ10)|(1<<UCSZ11);
|
33 |
|
34 | USARTWriteChar(0x88); //set address
|
35 | USARTWriteChar(0x30);
|
36 | USARTWriteChar(0x01);
|
37 | USARTWriteChar(0xFF);
|
38 |
|
39 | Common::Sleep(100);
|
40 |
|
41 | USARTWriteChar(0x88); //clear
|
42 | USARTWriteChar(0x01);
|
43 | USARTWriteChar(0x00);
|
44 | USARTWriteChar(0x01);
|
45 | USARTWriteChar(0xFF);
|
46 |
|
47 | Common::Sleep(100);
|
48 |
|
49 | USARTWriteChar(0x81); //Turn camera off
|
50 | USARTWriteChar(0x01);
|
51 | USARTWriteChar(0x04);
|
52 | USARTWriteChar(0x00);
|
53 | USARTWriteChar(0x03);
|
54 | USARTWriteChar(0xFF);
|
55 |
|
56 | while(1) {}
|
57 | [...]
|
wüsste einer woran es liegen könnte, oder bleibt mir einfach nichts
anderes übrig als doch einen vollduplex tranceiver zu nehmen und zu
schauen was mir die Kamera sendet (wenn überhaupt)?
gruß