- LiFePO4 Speicher Test         
Seite 12 von 16 ErsteErste ... 21011121314 ... LetzteLetzte
Ergebnis 111 bis 120 von 151

Thema: ASURO - US-Erweiterungsplatine

  1. #111
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von Prinz_Byte
    lib V2.7

    hey linka ... zieh dir mal die datei die marvin verlinkt hat und
    schau mal rein da findest du nen teil der in die asuro.c muss (steht auch drin...) dann kommentierst du wie marvin beschrieben hat eine zeile aus
    und übersetzt das ganze und danach nutzt du einfach die anderen funktionen die in der datei welche da verlinkt ist mit enthalten sind...
    ok, habe es mir angeschaut
    so wie ich es verstehe, muss praktisch der ganze code in die asuro.c, wäre auch noch kein problem...
    Aber schliesslich brauche ich ja noch etwas womit ich die in dem (in die asuro.c kopierten) code beinhalteten funktionen, wie "InitUltrasonics" , "RestoreAsuro" oder "Chirp" auch aufrufen bzw. auswerten kann?

    das ist mir (ich hoffe nur im augenblick) zu hoch...
    gruß inka

  2. #112
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    na in der main funktion kannst du diese funktionen aufrufen... mit InitUltrasonics(); wird das us-modul eingeschaltet, mit RestoreAsuro(); wird es wieder ausgeschaltet (irgend etwas wurde durch das modul behindert, weiss nich mehr was). mit chirp() wird ein piepton abgesetzt.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #113
    Neuer Benutzer Öfters hier
    Registriert seit
    21.05.2007
    Beiträge
    7
    du brauchst einfach nur chirp() aufrufen und der return ist der abstand in cm...
    alles andere wird automatisch gehandelt (in den funktionen)

  4. #114
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    ok, der erster versuch...

    hi,

    ich habe nun den folgenden code in die asuro.c eingefügt:
    Code:
    /*****************ultrasonic********************************/
    /**
     * being used insted TIMER2_OVF_vect during ultrasonic polling
     */
    ISR(TIMER2_COMP_vect)
    {
    	TCNT2 += 0x25;
    	count36kHz++;
    	if(!count36kHz) timebase++;
    }
    
    /**
     * initialises the Ultrasonic module
     * this function is automaticly called by Chirp
     */
    void InitUltrasonics(void)
    {
    	// Change Oscillator-frequency of Timer 2
    	// to 40kHz, no toggling of IO-pin:
    	TCCR2  = (1 << WGM21) | (1 << CS20);
    	OCR2   = 100;              // 40kHz @8MHz crystal
    	TIMSK |= (1 << OCIE2);     // OCIE2:  Timer/Counter2 Output Compare Match Interrupt Enable
    
    	ADCSRA = (0 << ADEN);      // deactivate ADC
    	ACSR  |= (1 << ACIS1);     // Comparator Interrupt on Falling Output Edge
    
    	ADMUX  = 0x03;             // connect ADC3-input with comparator
    	SFIOR |= (1 << ACME);      // connect ADC multiplexer to comparator
    	DDRD  &= ~(1 << 6);        // use Port D Pin 6 as input (AIN0)
    }
    
    /**
     * restores the hardware after using the Ultrasonic module
     * this function is called automaticly after a Chirp
     */
    void RestoreAsuro(void)
    {
    	TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
    	OCR2  = 0x91;              // duty cycle for 36kHz
    	TIMSK |= (0 << OCIE2);     // OCIE2:  Timer/Counter2 Output Compare Match Interrupt Enable
    
    	ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); // clk/64
    	ACSR  |= (0 << ACIS1);
    
    	if(autoencode) {
    		EncoderInit();
    	}
    
    	Sleep(1);
    }
    
    /**
     * @return distance in cm
     */
    int Chirp(void)
    {
    	unsigned int sleeptime = 0, dist = 0;
    
    	InitUltrasonics();
    
    	// chripen:
    	count36kHz = 0;
    
    	while(count36kHz != 20) {
    		OCR2 = 100 + 20 / 2 - count36kHz;
    	}
    
    	TCCR2	= (1 << WGM21) | (1 << CS20);
    	OCR2	= 100;
    
    	// analyse echoes:
    	while(TRUE) {
    		Sleep(1);
    		sleeptime++;
    
    		if((ACSR & (1 << ACI))) {
    			dist = (unsigned int) ((long) ((344L * ((sleeptime * 1000L) / 72L) / 10000L) / 2L));
    			ACSR |= (1 << ACI);
    			break;
    		}
    
    		ACSR |= (1 << ACI);
    
    		if(sleeptime > 3500) {
    			return -1;
    		}
    	}
    
    	RestoreAsuro();
    	return dist;
    }
    aufgerufen wird es durch:
    Code:
    #include "asuro.h" 
    
    int main(void) 
    { 
        
      Init();
    
      { 
      
       SerWrite("\r\n  --- georgs ultrasonic test ---",35);
       Msleep(1000);
       StatusLED(OFF); 
     
       do 
         {
    	 Chirp();
         SerWrite("\r\n distanz in cm: ",30);
         Msleep(500);
          PrintInt(dist); 
         } 
       while(1); 
        } 
    
      return 0; 
    }
    das ergebnis beim kompilieren sieht nicht so furchtbar schlecht aus:

    Code:
    ../ultrasonic.c: In function `main':
    ../ultrasonic.c:16: warning: implicit declaration of function `Chirp'
    ../ultrasonic.c:19: error: `dist' undeclared (first use in this function)
    ../ultrasonic.c:19: error: (Each undeclared identifier is reported only once
    ../ultrasonic.c:19: error: for each function it appears in.)
    make: *** [ultrasonic.o] Error 1
    Build failed with 3 errors and 1 warnings...
    aber trotzdem scheint es irgendwo zu klemmen. Könnte mir jemnad einen tipp geben welche datei denn noch irgendwo fehlt? benutzt habe ich die lib 2.7., habe vorsichtshalber alle parts als sources eingefügt (entfernen kann ich sie nach erfolgreichem kompilieren probeweise ja immer noch...)

    danke...
    gruß inka

  5. #115
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    die fehler bedeuten dass die variable dist noch nicht deklariert wurde... kann das sein?

    die warning heisst dass die funktion chirp() nicht oder doppelt deklariert wurde... weiss nich warum =)

    füg erstmal die variable ein.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #116
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    danke damaltor,

    die kompilierung ergab jetzt nur noch die eine warnung bei Chirp, werde jetzt die hex datei testen...
    gruß inka

  7. #117
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    also, die erste zeile, die die distanzmessung ankündigt wird am terminal ausgegeben, weiter passiert nichts. Ich nehme an, dass es keinen sinn macht am poti zu drehen, wenn die hardware mit der ursprünglichen US-software lief?
    bleibt also die warnung:
    ../ultrasonic.c:16: warning: implicit declaration of function `Chirp'

    was kann ich da tun?
    gruß inka

  8. #118
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    tu mal die funktion chirp nicht in die asuro.c, sondern in deine test.c. sie muss ÜBER der main-funktion stehen!!

    evtl liegt es daran, dass die funktoin zwar in der asuro.c steht, aber in der asuro.h fehlt. das würde dadurch behoben. allerdings müste dann die gleiche meldung bei den anderen us-funktionen auch stehen.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  9. #119
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ok, habe ich gemacht, die warnung über Chirp ist weg, dafür aber zwei warnungen für "initultrasonics" und "restoreasuro"...

    soll ich die beiden auch in die test.c einfügen?
    gruß inka

  10. #120
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    habe jetzt folgendes versucht:

    die drei funktionen, wie ursprünglich gehabt, in die asuro.c
    folgende 3 zeilen in die asuro.h:
    -----------------------
    void InitUltrasonics(void);
    void RestoreAsuro(void);
    int Chirp(void);
    -------------------------

    jetzt kam keine warnung beim kompilieren, im hyperterminal erscheint aber immer noch nur die erste zeile, die die messung ankündigt. Also doch noch ein fehler beim aufruf der chirpfunktion?
    gruß inka

Seite 12 von 16 ErsteErste ... 21011121314 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen