- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: problem mit SRF02

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2007
    Alter
    45
    Beiträge
    16
    Anzeige

    E-Bike
    Hallo Dirk,ich hab versucht die letzte Zeit den sensor zum laüfen zu bringen aber immer noch kein Erfolg.-(
    der File i2cmaster.S ist schon im Source Files und wenn ich es kompeliere bekomme ich als Antwort :kein fehler vorhandeln.die RS232 Verbindung ist in ordung weil, wenn ich den Sensor von der Mikrokontroller raussiehe,dann lese ich die variable 'x' als empfangener wert .hab versucht mit deinem Programm und so sieht aus:

    #include <inttypes.h>
    #include <avr/eeprom.h>
    #include <avr/interrupt.h>
    #include <avr/sleep.h>
    #include <math.h>

    #include <avr/io.h>
    #include "i2cmaster.h"
    #define SRF 0xE0
    #define F_CPU 8000000UL
    #include <util/delay.h>
    #define BAUD 9600L
    #include <avr/iom8515.h>
    #include <avr/sfr_defs.h>
    #define SDA 0 // SDA Port E, Pin 0
    #define SCL 1 // SCL Port E, Pin 1
    #define SDA_PORT PORTE // SDA Port E
    #define SCL_PORT PORTE // SCL Port E

    unsigned int distance EEMEM; // reserve storage space in EEPROM

    // USART_INIT--
    void initusart(void) // Hauptfunktion
    {
    unsigned char x; //Hilfsvariable
    // #idef UBRRL //USART-Schnittstelle
    UBRRL = (F_CPU / (16L*BAUD)) -1; //Baudrate mit TAKT und Baud
    UCSRB |= (1<<TXEN) | (1<<RXEN); //Sender und Empfänger ein
    UCSRC |= (1<< URSEL) | (1<< UCSZ1) | (1<<UCSZ0); //ansync 8bit
    x = UDR;
    }

    void sendeusart(int x)
    {
    while (!(UCSRA & (1<<UDRE))); // warten bis Senden moeglich

    UDR = x;
    }

    int main(void)
    {
    i2c_init();
    initusart();
    sendeusart(distance);
    unsigned char Lbyte,Hbyte;

    DDRE = 0xff;
    PORTE = 0xff;

    while(1)
    {
    i2c_init(); muss ein sonst blinkt der sensor nicht

    i2c_start(SRF);
    i2c_write(0x00);
    i2c_write(0x51);
    i2c_stop();

    _delay_ms(75);

    i2c_start(SRF);
    i2c_write(0x02);
    i2c_stop();

    i2c_start(0xE1);

    Hbyte=i2c_readAck();
    Lbyte=i2c_readNak();
    i2c_stop();
    distance=(Hbyte*256)+Lbyte;

    eeprom_write_word(&distance,distance); //save to EEPROM

    sendeusart(distance);
    }
    }
    ich bekomme jetzt die 0 als antwort(benutze Hyper Terminal fürs Auslesen) was ich komisch finde weil ,die distance ist nicht mehr gleich 0 wie beim vorjerigen Programm.
    ich weiss nicht woran es liegt ,dass der sensor immer kein Messwerte gibt .
    also ich arbeite mit dem AVR4 Studio.kannst bitte mal guckenich da noch machen kann,oder vielleicht hast ein anderen Programm auf C sprache oder assembler die ich benutzen kann.
    bitte Dirk ich verlasse mich auf dich ,bin echt kurz vom Aufgeben.
    danke
    schöne Grüsse
    Alexandra

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2007
    Ort
    München
    Alter
    61
    Beiträge
    199
    Alexandra,

    mit source file meintest Du hoffentlich das makefile.

    Hab ich das richtig verstanden:

    + bei Deinem ersten Program war distance = $FF (das entspricht dem Lesen des Low Bytes als $FF z.B. wenn der I2C Bus nur auf high steht und das High Byte ist noch der Wert aus der Initialisierung).

    + beim aktuellen Programm ist distance = $00 (das entspricht ja dem Wert bei Initialisierung).

    Eigentlich müßte distance doch ein 2-Byte Wert sein, also $FFFF oder $0000, oder?

    Was steht denn nach dem Programmlauf im EEPROM für distance?

    Gruß, Dirk.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2007
    Alter
    45
    Beiträge
    16
    hallo Dirk,die Disatance ist ja 0 dec oder 000 hex.so kann ich das lesen.die EEPROM distance kann ich nicht lesen da ich nur den Wet 0 lesen kann mit dem Programm .
    kannst du mir bitte sagen,was ich noch für möglichkeit hab , den sensor zum Messen zu bringen ?scheint die sache echt sehr schwer irgendwie für mich ?
    keine Ahnung aber irgendwie ,will der sensor mit mir incht reden :-=
    danke
    Schöne Grüsse Alexandra

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2007
    Ort
    München
    Alter
    61
    Beiträge
    199
    Also mir fällt dann noch ein:

    Häng mal ein Oszilloskop and SDA und SCL und schau Dir an, was da abgeht.

    Gruss, Dirk.

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2007
    Alter
    45
    Beiträge
    16
    hallo Dirk.hab ich schon gemacht und man sieht dass irgendetwas übertragen werd.also ein Zeichen hat man aufjedenfall.das heisst es werd was übertragen.
    Ich versuche jetzt mit der Atmega16 statt die 8515 und gucken wir was passieren werd.bis jetzt hab ich probleme mit dem Flach Programm aber hoffe bis nexte woche hab ich schon in griff danke und schönen abend noch
    grüsse
    alexandra

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2007
    Ort
    München
    Alter
    61
    Beiträge
    199
    Kannst Du denn am Oszi die gesendeten und empfangenen Bytes erkennen? z.B die Addresse und den Befehl, der geschrieben wird und dann später Addresse+1 und das gelesenen Byte?

    Du mußt immer schauen, wenn SCL low ist, wie dann die SDA Leitung steht.

    So kannst Du die Fehlersuche eingrenzen.

    Gruß, Dirk.

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2007
    Alter
    45
    Beiträge
    16
    hallo Dirk.vielen dank für deine Hilfe,du hast mir echt sehr geholfen.Den Sensor funktionniert jetzt und ist alles ok.
    Es lag an den Mikroschip:hab jetzt ein ATmega 16 und an die Pin von SCL und SDA.bin echt froh dass alles so gut gelaufen ist .
    Danke nochmal
    Alexandra
    Schöne Grüsse

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.03.2010
    Beiträge
    161
    Hallo sterncapture,
    was zeigt denn die LED am Modul im gut-Fall an?

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.03.2010
    Beiträge
    161
    Ich hab meinen inzwischen auch ans Laufen bekommen. Die Led blitzt bei jeder Messung kurz auf.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests