Forum: Mikrocontroller und Digitale Elektronik VISCA Camera per avr steuern


von C0dR (Gast)


Lesenswert?

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ß

von Thinksilicon (Gast)


Lesenswert?

Hi,
hast du mal probiert einen einfachen Adapter für den RS232-In zu basteln 
(3-drahtstifte für rx/tx/gnd) und das über eine VISCA-Software am 
Rechner anzusteuern. Wenn das klappt, dann mal den Output der Software 
mitsniffen und anschließend den Output vom µC.

In der Anleitung lese ich außerdem
[quote]Switch 4 (Communication baud rate selector)
Set to ON for 38400 bps, or OFF for 9600 bps.[/quote]

Ist der Schalter in der richtigen Stellung?


Meine Kamera daheim (anderes Modell) ist manchmal ein bisschen 
schwerhörig, aber ich schiebe das durchaus auf die 10 m Kabel zwischen 
Kamera und RS232 am PC. Ansonsten ist das VISCA-Zeug aber eigentlich 
recht Problemlos. Gibt sogar ne ganz brauchbare Bibliothek für Linux.

von C0dR (Gast)


Lesenswert?

Danke für den Hinweis, ich hab tatsächlich überlesen dass die kamera 
unten noch ein DIP schalter hat. Und sie stand tatsächlich auf 38400 bps 
statt auf 9600 bps. Hab auch die Adresse fest auf 1 gesetzt. Aber es 
geht immer noch nicht.
Hab jetzt aber die kamera mal einfach an einen Monitor angeschlossen und 
siehe da, es kommt gar kein Bild! Vielleicht liegt das Problem ja an der 
Kamera selbst. Werde das jetzt mal prüfen.

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.