-
 
          
	
		
		
	
	
	
	
	
		
			
- 
	
	
		
			
			
				Neuer Benutzer
			
			
				Öfters hier
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
							
							
						
						
				
					
						
							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
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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.
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Neuer Benutzer
			
			
				Öfters hier
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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.
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Neuer Benutzer
			
			
				Öfters hier
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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.
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Neuer Benutzer
			
			
				Öfters hier
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							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  
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
				
					
						
							Hallo sterncapture,
 was zeigt denn die LED am Modul im gut-Fall an?
 
 
 
 
 
 
 
- 
	
	
		
			
			
				Erfahrener Benutzer
			
			
				Fleißiges Mitglied
			
			
			
			 
			
				
 
					    
				 
 
			
				
				
						
						
							
 
					
						
							Ich hab meinen inzwischen auch ans Laufen bekommen. Die Led blitzt bei jeder Messung kurz auf.
						 
 
 
 
 
 
 
 
	
	
	
	
	
	
	
	
	
	
	
	
		
		
		
		
			
				 Berechtigungen
				Berechtigungen
			
			
				
	
		- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-  
Foren-Regeln
 
			 
		 
	 
 
  
 
  
 
Lesezeichen