- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: CMUCAM2 Kommunikationsproblem

  1. #1

    CMUCAM2 Kommunikationsproblem

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Robotler ...

    Sitze hier gerade an meiner Diplomarbeit und bin schier am verzweifeln.

    Habe einen Kondo KHR-1, an einem Ethernutboard http://www.ethernutboard.de an dem Board sind 3 IR-Sensoren, 1 Ultraschall und eben die besagte CMUCAM2.

    Habe die Cam über seriell am PC ----> alles OK
    Schließe die Cam an das Ethernutboard und sende einen String an die Cam , bevorzugt rs \r weil dann die Cam-LED einmal rot blinkt.
    Wenn ich an den Port gehe und an den PC anschließe, zeigt das Terminal Programm rs und macht ein return.
    Eigentlich doch genau das was ich will ?
    Kamera wieder dran ---> nix passiert.
    Habe das über Usart0 und über Usart1 (TTL) (Jumper wech) probiert, aber immer das selbe Ergebnis.Nämlich gar keins.

    Weiss nicht mehr was ich noch versuchen kann. Vorsichtshalber hänge ich mal den Code mit dran ...

    main.c
    Code:
    int main(void)
    {
    	init_uart0(); //normaler Usart
    	init_uart1(); //TTL
    
    	while(1) // forever
    	{
    		put_string0("rs\r"); // sende Kommando an Terminal	
    		put_string1("rs\r"); // sende Kommando über TTL an Cam
    
    		pause();
    		
    
    	}
    }
    uart.c
    Code:
    //  --------------  INIT0 --------------------
    void init_uart0(void)
       {
    	//Baudrate bestimmen
    	UBRR0H =(uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
    	UBRR0L =(uint8_t) UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
    	UCSR0B = (1<<RXEN0) | (1<<TXEN0);  // enable receiver and transmitter
    	UCSR0C = (3<<UCSZ0);        // 8 bit (default: asynchronous, no parity,1stop-bit)
       	return;
       }
    
    // --------------------------------End init0-------------------------------
    
    //  --------------  put_string0--------------------
    void put_string0(char *s)
    {
    	while(*s)
    	{
    		put_char0(*s);
    		s++;
    	}
    }
    //  -------------- ende  put_string0--------------------
    analog dazu die USART1

    Falls noch was benötigt wird, bescheid geben ...

    BITTE HELFT MIR

    Vielen Dank im voraus Alex

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    35
    Beiträge
    1.614
    1. miss mal mit nem oszillographen am tll-port der cam, ob dort etwas gesendet wird.
    2. hast du die richtigen baudraten?
    3. ich kenn mich jetz mit c nich aus, aber schreib doch mal ne routine, die sendet und gleichzeitig wartet, ob danach nen ack kommt, das sollte passieren, ansonsten issn sendefehler aufgetreten....
    4. empfang einfach mal alles was die cam dir schickt, egal was und gib das auf usart1 wieder an den pc, dann haste ne gute debugging-schnitte

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  3. #3

    Danke für die Hilfe !!!!

    Hallo ! Genau das habe ich gemacht und festgestellt, dass zwar Daten zur Cam kommen, aber leider halt gar nix zurück.

    Habe nach sage und schreibe einer Woche das Problem gelöst.
    Ich habe in die Routine USART1_put ein delay eingefügt, und siehe da...
    Hätte kotz.... können ... Aber jetzt läuft es .... Es ist schon verrückt woran es manchmal liegt.

    VIELEN DANK für die Hilfe !!! Und guten Rutsch ....

    Gruss Alex

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    35
    Beiträge
    1.614
    dann noch eine sache ^^

    wenns nu ordentlich geht, benutz den raw mode, dann musste keine teils doch aufwendige stringmanipulation verwenden, sondern bekommst direkt zahlen geliefert.... geht mit dem command "RM 1", dann kannste noch die normalen strings hinsenden, aber bekommst immer den paketnamen als ascii zurück und danach zahlen
    d.h. nen TC-befehl sieht dann so aus:

    -> TC 31 50 60 75 30 55
    <- (255)T(mx)(my)(x)(y)(npix)(conf)

    ich weiß die syntax des T-packages nich mehr genau, aber alle sachen in klammern werden dann als zahlen gesendet, und nicht als zeichen, d.h. jede eingeklammerte value ist nur in EINEM zeichen
    die 255 dient zur synchronisation

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress