- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Reset bei SRF10 zusammen mit Remote Control

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Anzeige

    Powerstation Test
    Sorry bin noch nicht dazu gekommen mir das anzuschauen.
    Und hab die nächsten Tage auch zuviel zu tun.
    Wie gesagt - bau nach jedem wichtigen Schritt im Programm eine Textausgabe rein um rauszufinden wo er genau hängen bleibt.


    > Ist das Einfügen von Testausgaben die einzige Möglichkeit des Debuggens?


    Auf dem AVR läuft ja kein Betriebssystem (oder Interpreter wie der C-Control wo man über die serielle durchaus debuggen kann).

    Debuggen ist schon möglich, aber nur mit Zusatzhardware von Atmel. AVR JTAG ICE oder AVR Dragon, damit könntest Du auch mit AVRStudio zur Laufzeit debuggen. Lohnt sich aber nicht wenn man das nur alle paar Wochen mal braucht.



    > Wär super, wenn mir das jemand erklären könnte Smile

    Das ist nur unleserliche C Syntax und hat nix mit Deinem Problem zu tun.
    IRCOMM_RC5dataReadyHandler ist ein Pointer auf eine Funktion. Den Pointer kann man dynamisch zur Laufzeit ändern und so eben selbst im Programm eine Funktion zuweisen die (von dem anderen Programmteil der davon erstmal nix weiss) aufgerufen werden soll.
    Zu beginn ist einfach die DUMMY Funktion zugewiesen die nichts tut.

    > Wo kommt da das "rc5Handler" her?

    Das ist ein Parameter der Funktion IRCOMM_setRC5DataReadyHandler - wird also genau da deklariert

    MfG,
    SlyD

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Ort
    NRW
    Beiträge
    23
    Hi zusammen,

    mal ein aktueller Stand von mir:

    in der Funktion "checkRP6Status" gibt es den folgenden Abschnitt:

    Code:
    // Check if there was a RC5 Reception:
    		uint8_t readBuf[2];
    		
    		if(compare & MASK_RC5) 
    		{	
    			I2CTWI_transmitByte(I2C_RP6_BASE_ADR,I2C_REG_RC5_ADR);
    			I2CTWI_readBytes(I2C_RP6_BASE_ADR, readBuf, 2);
    			
    			RC5data_t tmp;
    			tmp.data = (readBuf[0] << 6) | (readBuf[1]);
    			IRCOMM_RC5dataReadyHandler(tmp);
    		}

    Wenn ich da das "I2CTWI_readBytes(I2C_RP6_BASE_ADR, readBuf, 2);" auskommentiere, dann gibt es keinen Reset.
    Wenn ich es unter "if(compare & MASK_BUMPER)" einfüge, gibt es den Reset, beim Druck auf einen Bumper.
    Wenn ich es mit einem Taster auf dem M32 aufrufe, gibt es keinen Reset.

    Für mich sieht es im Moment so aus, als würde der Reset nur dann kommen, wenn durch ein Ereignis vom Slave mit "I2CTWI_readBytes" etwas gelesen werden soll. Wenn ich die Funktion nur über das M32 verwende (bspw. mit den Tastern) läuft alles normal weiter.

    Hat jemand da eine Idee, was da schief laufen könnte?


    Um das zu Umgehen würde ich dann versuchen, die Funktionen für die Fernsteuerung einfach in das Slave-Programm einzubauen. Ich denke, damit sollte ich dem Reset-Problem eigentlich aus dem Weg gehen können. Mal schauen ob das so klappt, wie ich mir das vorstelle.

    Mich würde allerdings immer noch brennend interessieren, was genau denn da eigentlich miteinander kollidiert und mein Programm resettet

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress