- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 16

Thema: SRF02 I2C C-Quellcode (RN-Control)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.04.2010
    Ort
    Wien
    Beiträge
    119
    Blog-Einträge
    4
    die internen Pull-Ups sind zu hoch, falls du die verwendest,
    du musst unbedingt 2k2 extern anschließen.

    edit: du musst auch die Adresse ändern (#define SRF08_adress 0xE0), die müsste im Datenblatt stehen.


    mfg michi
    Geändert von miicchhii (21.07.2011 um 20:30 Uhr)
    Infos zu meinen Projekten gibts auf meiner Homepage: http://langeder.org/

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    ja die verwende ich.. Sind zu hoch? shit.. okay dann ist das die erste Sache dich ich machen werde.
    vielen dank!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    edit: du musst auch die Adresse ändern (#define SRF08_adress 0xE0), die müsste im Datenblatt stehen.
    Im Datenblatt steht folgendes:
    "Die Standard-Hausnummer vom SRF02 ist Hex 0xE0"

    dann muss ich ja alles so lassen, wie es ist, richtig?

    Ich werde jetzt gleich die Pullups einlöten

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.04.2010
    Ort
    Wien
    Beiträge
    119
    Blog-Einträge
    4
    Ja, ich denke so müsste es dann eh passen,
    ich weiß auch nur was ich lese,
    so ein teil leg ich mir demnächst auch zu,
    was für Sensoren verwendest du sonst noch auf deinem bot?

    PS: schon eingelötet bzw getestet?

    Mfg michi
    Geändert von miicchhii (23.07.2011 um 11:36 Uhr)
    Infos zu meinen Projekten gibts auf meiner Homepage: http://langeder.org/

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    hi.. ich habe soeben 2x 10k zwischen 5V und SDA sowie SCL eingelötet. ohne Erfolg
    Habe 10k genommen, weil ich kein 2,2 da hatte und es auch in einem anderen Thread gelesen hatte.
    Es kann doch nicht daran liegen oder?

    Ich habe bisher folgendes gemacht:
    1. Einen anderen SRF02 ausprobiert.
    2. Pullup wiederstände eingelötet
    3. viele Änderungen im Code

    Ich benutze bisher nur diesen einen SRF02 Sensor.

    Folgenden Code:

    Hauptprogramm:
    Code:
    //#include <stdlib.h> 
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include "rncontrol.h"
    #include "SRF08.h"
    
    
    
    
    
    
    
    
    /*### Variablen ###*/
    //char wort[5];	//Zahlen (Integer und Float) müssen vor der Ausgabe per RS232 in ASCII-Zeichen konvertiert werden, für die ein Speicher benötigt wird.
    //const float referenzspannung = 0.0048828125;	//Referenzwert zur Multiplikation mit den Werten der Analogports (0...1023), um auf die Voltzahl zu kommen (0...5). Ergibt sich aus 5/1024.
    //uint16_t analog; //Variable für jeweils an einem Analogport gemessenen Wert, um nicht für eine Ausgabe mehrere Messungen durchführen zu müssen.
    
    
    
    
    /*### Hauptschleife ###*/
    int main(void)
    {
    	//Pins bzw. Ports als Ein-/Ausgänge konfigurieren
    	//DDRA |= 0x00;	//00000000 -> alle Analogports als Eingänge
    	//DDRB |= 0x03;	//00000011 -> PORTB.0 und PORTB.1 sind Kanäle des rechten Motors
    	//DDRC |= 0xFF;	//11111111 -> PORTC.6 und PORTC.7 sind Kanäle des linken Motors, Rest sind LEDs für Lauflicht
    	//DDRD |= 0xB0;	//10110000 -> PORTD.4 ist PWM-Kanal des linken Motors, PORTD.5 des rechten
    	
    	//Initialisierungen
    	//setportcon(0); setportcon(1); setportcon(2); setportcon(3); setportcon(4); setportcon(5); //LEDs ausschalten
    	setportdoff(7);	//Speaker aus
    	//init_timer1();	//Initialisierung Timer für PWM
    	init_USART();	//USART konfigurieren
    	//SFIOR &= ~(1<<PUD);     // Pull-UP enable (nicht unbedingt nötig, aber zur Klarheit!)
            //PORTA |= (1<<PA7);    // internen Pull-Up an PA7 aktivieren 
    
    
    
    
    	//timer1 für 10ms-Interrupt starten
    	TIMSK |=(1<<OCIE1A); //ctc interrupt
    	TCCR1B |=(1<<CS12) | (1<<CS10); //Prescaler 1024
    	TCCR1B |=(1<<WGM12);	//Clear Timer on Compare Match Modus
    	OCR1A = 0x009C; 	//Compare auf 10ms bei 8MHz setzen
    
    
    	sendUSART("---------------------------------------------Start 1\r\n");
    
    
        sei();
        start_SRF08_automessung(); //Messung beginnen
        uint16_t messwert; 
        while(1)
        {
        messwert=get_SRF08_distance();
        sendUSART("Messerwert empfangen!\n");
        }
    
    
    }
    
    
    
    
    ISR(TIMER1_COMPA_vect) //wird alle 10ms aufgerufen
    {
    sendUSART("Timer Startet\n");
    	SRF08_task(); 
    }

    twimaster.c
    Code:
    unsigned char i2c_start(unsigned char address){
        uint8_t   twst;
    
    
    	// send START condition
    	TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
    sendUSART("Hier wird noch ausgeführt!\n");
    	// wait until transmission completed
    	while(!(TWCR & (1<<TWINT)));
    sendUSART("Hier leider nicht mehr!\n");
    	// check value of TWI Status Register. Mask prescaler bits.
    	twst = TW_STATUS & 0xF8;
    	if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
    
    
    	// send device address
    	TWDR = address;
    	TWCR = (1<<TWINT) | (1<<TWEN);
    
    
    	// wail until transmission completed and ACK/NACK has been received
    	while(!(TWCR & (1<<TWINT)));
    
    
    	// check value of TWI Status Register. Mask prescaler bits.
    	twst = TW_STATUS & 0xF8;
    	if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ){
    	 return 1;
    }
    	return 0;
    
    
    }/* i2c_start */
    Folgende Ausgabe über RS232:
    Code:
     ---------------------------------------------Start 1Timer Startet
    Hier wird noch ausgeführt!

    Wenn ich das Programm starte, initialisiert er den Timer, welcher DIREKT den SRF08_task(); Befehl startet ohne dass vorher I2C initialisiert wurde. So steht es in dem Programm bei RN-Wissen.
    Wenn ich das veränder, also die Initialisierung des I2C der Initialisierung des Timers vorziehe, funktionierts aber auch nicht.

    Grob gesagt, bleibt er an folgender Stelle im twimaster.c hängen:
    Code:
    // wait until transmission completed
    	while(!(TWCR & (1<<TWINT)));

    Vielen Dank für eure Hilfe!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    Achja: und folgende Frequenzen:




    /* define CPU frequency in Mhz here if not defined in Makefile */
    #ifndef F_CPU
    #define F_CPU 8000000UL
    #endif


    /* I2C clock in Hz */
    #define SCL_CLOCK 100000L

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    Weiß denn keiner mir zu helfen?

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.04.2010
    Ort
    Wien
    Beiträge
    119
    Blog-Einträge
    4
    Zitat Zitat von Meyk Beitrag anzeigen
    hi.. ich habe soeben 2x 10k zwischen 5V und SDA sowie SCL eingelötet. ohne Erfolg
    Habe 10k genommen, weil ich kein 2,2 da hatte und es auch in einem anderen Thread gelesen hatte.
    Es kann doch nicht daran liegen oder?
    nimm doch 4 parallel, damit du wenigstens auf 2k5 runterkommst.
    Infos zu meinen Projekten gibts auf meiner Homepage: http://langeder.org/

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2007
    Beiträge
    24
    also wenn du meinst, dass es daran liegen könnte, dann besorg ich mir einfach nächste Woche ein paar neue Widerstände.
    Was sagst du denn zu den Frequenzen?

    lg

Ähnliche Themen

  1. LDR Quellcode
    Von Jada im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 03.06.2010, 19:26
  2. Errors im Quellcode
    Von Kieselstein im Forum Asuro
    Antworten: 16
    Letzter Beitrag: 17.05.2008, 17:33
  3. Srf02 an C-control Mega 128
    Von Tenorm im Forum Sensoren / Sensorik
    Antworten: 8
    Letzter Beitrag: 01.03.2008, 23:20
  4. Antworten: 0
    Letzter Beitrag: 19.01.2008, 14:09
  5. Suche C-Control Quellcode für Roboter Navigation
    Von HiTech im Forum Software, Algorithmen und KI
    Antworten: 41
    Letzter Beitrag: 16.01.2004, 18:44

Berechtigungen

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

12V Akku bauen