Kameraschaltung Philips DC3840

OP #1520011
Lesenswert?

hallo ich möchte mit der Philiphs DC 3840 kamera aus dem Ulrich Radig 
Shop mit einem Microcontroller bilder machen.

Meine Schaltung ich habe ein Atmega 644p anden ich die Kamera hänge
RX Kamera -> TX Microcontroller Pin 15
TX Kamera -> RX Microcontroller Pin 14
Vcc Kamera -> Vcc 5V
GND Kamera -> Gnd Kamera

Weiters befindet sich hier 
http://www.ulrichradig.de/home/index.php/projekte/uC-kamera ein fertiges 
Protokoll.
Was muss ich machen um ein Bild zu bekommen?
Ich bitte um Hilfe, bin am verzweifeln.
Mfg Gerhard
OP #1520029
Lesenswert?

Wenn ich das file von Ulrich auf dem Atmega 644p programmiere, sendet 
der Microcontroller Daten zur Kamera und die Kamera sendet keine Daten 
zurück.
Ist weil ich vielleicht eine andere Schaltung oder einen andern 
Microcontroller habe eine Änderung im Programm nötig?
Danke für deine Antwort.
Mfg Gerhard
#1520057
Lesenswert?

Hallo Gerhard,

er verwendet doch den gleichen Prozessor, daran sollte es also nicht 
liegen. Wenn Du uns Deine Schaltung als PNG posten würdest, könnten wir 
auch dazu ne Meinung äußern.

Verwendest Du den richtigen externen Quartz?

Siehe Zitat:
Wichtig ist dabei, dass der Quarz mit 14,7456Mhz schwingt! Die Kamera 
wird dabei direkt an den USART des Prozessors angeschlossen. An Pin D.5 
stehen die Daten seriell zur Verfügung (Softuart, 1 Startbit, 8 
Datenbits, 1 Stoppbit, 38400Baud).


Gruß
Tom
OP #1520369
Lesenswert?

Hallo
ich verwende einen  Atmega 644p statt 644 soweit ich weiß sollte das 
nicht zu Fehlern führen.
Ich verwende auch den richtigen Quarz 14,7456 leider in der schaltung 
falsch eingezeichnet.
Mir stehen aber am Pin d5 nicht die daten zur Verfügung. Ich denke dass 
die Kamera gar keine Daten zurückschickt.
Wie muss ich meine Schaltung umändern oder die Software von Ulrich.
Danke für eure Antworten.
Mfg Gerhard
Angehängte Dateien:
OP #1524305
Lesenswert?

Hier ist das Richtige Bild das an die Kamera gesendet wird.
Volts/Div 5V
Time/Div 20ms
Danke für die Empfehlung aber der Logicanalyser steht mir leider nicht 
zur Verfügung.
Wenn man dann genauer schaut das zweite Bild sieht man die Abfolge.
5V pro Divison
10µs pro Divison
Danke für deine Antworten bin am verzweifeln.
Meine Überlegung da das Signal von der Kamera 2,5 Volt hat muss man 
dieses Signal verstärken das der Microcontroller erkennen kann.

Mfg Gerhard
Angehängte Dateien:
#1528247
Lesenswert?

Also erst mal: Prüfnoch mal, das du RX/TX rivhtig gekreutzt hast.

Um sicherzustellen, dass Deine RS232 Verbingung geht, versuch mal mit 
Deinem PC zu kommunizieren, hast hoffendlich noch ne  MAX232 rumliegen.

Solange wir nich wissem, ob Deine RS232 richtig funktionier und Du sie 
auch richtig programmierst, macht es wenig sinn im Nebel zu stochern.

Gruß
Tom
Gast #1528408
Lesenswert?

> ja danke wenn ich jetzt ein invertierendes NAND Gatter
...
> Ich habe jetzt ein Signal von der Kamera zum Microcontroller wie im Bild

Bedeutet das, Du hast das Signal mit einem Nand auf den Pegel gebracht ?
Wenn ja: der µC mag die Signale der Kamera nicht invertiert bekommen, 
wenn dann schon 2 Nand hintereinander schalten.

Im cam.h File von Ulrich Radig ist übrigens ein Fehler bei der 644 
Define:
#define EICR EICRB

EICRB gibt's laut DB weder beim 644, noch beim 644P.
Allerdings wird EICR nicht weiterverwendet, so daß dies keine Auswirkung 
hat.
OP #1528412
Lesenswert?

Hallo
ja also das was der avr zur kamera schickt stimmt, das ist das 0xFF 0xFF 
0xFF 0x0D 0x00 0x00 0x00 0x00 was bei ulrich seiner homepage steht, dann 
antwortet die kamere mit 2 datensätzen bei denen ich mir nicht sicher 
bin ob die stimmen (sollten 0xFF 0xFF 0xFF 0x0E 0x0D 0x00 0x00 0x00 und 
0xFF 0xFF 0xFF 0x0D 0x00 0x00 0x00 0x00 sein).
 also rx und tx sollte auch richtig ausgekreuzt sein.
und am pin d5 kommt nie etwas
OP #1541151
Lesenswert?

servas
ich hab 2 fragen zum code

1)
1
unsigned char sync = 1;
2
  do {
3
    cam_command_send (0x0D,0x00,0x00,0x00,0x00);
4
    for(unsigned long a = 0;a<1000000;a++)
5
    {
6
      if (cmd_buffercounter >= 16){
7
        for(unsigned long a = 0;a<1000000;a++){asm("nop");};
8
        cam_uart_write_char(0xFF);
9
        cam_uart_write_char(0xFF);
10
        cam_uart_write_char(0xFF);
11
        cam_uart_write_char(0x0E);
12
        cam_uart_write_char(0x0D);
13
        cam_uart_write_char(0x00);
14
        cam_uart_write_char(0x00);
15
        cam_uart_write_char(0x00);
16
        
17
        
18
        sync = 0;
19
        break;
20
        };
21
    };
22
    }while(sync);

warum soll gerade bei (cmd_buffercounter >= 16) die daten gesendet 
werden

und 2) was macht dieder teil
1
SIGNAL(SIG_USART_RECV)
2
{
3
  if( (cmd_buffercounter >= cam_dat_start) && (cmd_buffercounter <= cam_dat_stop) )
4
{
5
      cam_dat_buffer[dat_buffercounter++] = UDR;
6
}
7
else if(cmd_buffercounter < CMD_BUFFER_SIZE)
8
{
9
      cam_cmd_buffer[cmd_buffercounter] = UDR;
10
}
11
   else
12
{
13
volatile char tmp;
14

15
      tmp = UDR;
16
}
17
}

also der µC schickt den ersten sync string zur kamera und wartet dann 
das die kamera antwortet und diese schickt das was im file ist welches 
sich im anhang befindet

danke
Angehängte Dateien:
  • 1 (11,5 KB)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren