| 
				
					|  | Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 04.09.2006, 17:47    Titel: LM75 |   |  
				| 
 |  
				| Hallo zusammen, stimmen diese Werte, wenn ich die Daten des LM75 auswerten will?
 
 Diese Daten beziehen sich auf die Temperaturen.
 Angegeben wird die Temperatur, der Binärcode und die Hexadezimalschreibweise:
 
 http://home.arcor.de/andy.bos/LM75.txt
 
 Wenn diese Daten so stimmen, ist das Problem bei mir, dass ich nicht weiss, wie ich in die Minustemperaturen gehen soll.
 
 Cu Andy
 |  |  
		| Nach oben |  |  
		|  |  
		| OdinX 
 
  
 Anmeldungsdatum: 29.07.2005
 Beiträge: 253
 Wohnort: SG Schweiz
 
 | 
			
				|  Verfasst am: 04.09.2006, 18:40    Titel: |   |  
				| 
 |  
				| nimm die stelle ganz links im binärcode als corzeichen. 
 1 ist minus und 0 ist plus oder umgekehrt
 |  |  
		| Nach oben |  |  
		|  |  
		| Mao 
 
 
 Anmeldungsdatum: 25.09.2005
 Beiträge: 4409
 Wohnort: /dev/hda1
 
 | 
			
				|  Verfasst am: 05.09.2006, 12:01    Titel: |   |  
				| 
 |  
				| Hm, in Binärschreibweise stellt (zumindest beim PC->ASM) ein Bit (weiß nicht, ob's das erste oder letzte (von links nach rechts!) war) dar, ob ein Vorzeichen, also das Minus, vonnöten ist, um die Zahl korrekt darzustellen. _________________
 Eine handvoll Glück reicht nie für zwei.
 --
 
  |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 05.09.2006, 18:17    Titel: |   |  
				| 
 |  
				| °C   Dezimal	binär		hexadezimal - 	 55	402	110010010	192
 
 Nun meine Frage:"Wie wird der binäre Wert hinausgeschoben.
 Von rechts nach links, oder von links nach rechts."
 
 Zudem wollte ich Fragen, ob 9 Bit hinausgeschoben werden müssen.
 
 Dies ist alles wichtig, wenn ich ein Programm schreiben will.
 
 
 Zudem wollte ich Fragen, ob es Probleme mit der lpt1 Schnittstelle unter Windows XP gibt.
 
 Hoffe ihr könnt mir umgehend helfen.
 |  |  
		| Nach oben |  |  
		|  |  
		| Kai Bareis 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 545
 Wohnort: Baden Würtemberg
 
 | 
			
				|  Verfasst am: 05.09.2006, 20:09    Titel: |   |  
				| 
 |  
				| Also erstmal Datenblattblatt genau anschauen. ist immer sehr hilfreich. LM75 Dort steht auf Seite 9 Wie das Temparatur Daten Format aufgebaut ist.
 
 Und LPT / XP kann eventuell zu problemen mit Qbasic kommen ansonsten hilft dir die ForenSuche wenn du nach UserPort suchst.
 _________________
 MfG Kai Bareis
 Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 06.09.2006, 07:00    Titel: |   |  
				| 
 |  
				| also liege ich damit richig, dass ich 9 Bit erhalte |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 06.09.2006, 10:42    Titel: |   |  
				| 
 |  
				| Hallo 
 Mit den 9 Bit liegst du richtig. Dabei ist das erste Bit, das ganz links steht und (denke ich zumindest) auch zuerst gesendet wird, wie schon beschrieben das Vorzeichen. 0 steht für plus, 1 für minus. Ist die Zahl negativ, wird der Wert als Zweierkomplement gesendet. D.h. der Wert muss noch invertiert und Eins dazugezählt werden.
 
 Wenn es mit dem LPT Probleme gibt, kannst du auch den COM-Port benutzen und für I²C einen Ein- und einen Ausgang zu einer bidirektionalen Leitung zusammenfassen.
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 11.09.2006, 16:38    Titel: |   |  
				| 
 |  
				| Ok, so gut so weit. 
 Also benötige ich für den LM75 folgendes:
 Eine Versorgungsspannung VCC
 Eine Masse, also GND.
 2 Datenausgänge und ein Dateneingang.
 
 Stimmt das soweit?
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 11.09.2006, 16:51    Titel: |   |  
				| 
 |  
				| Hallo 
 Im Prinzip ja, die Funktion der Interruptleitung ist mir noch nicht ganz klar, da müsste man das Datenblatt nochmal genauer Studieren. Ich nehme aber an, das man die nur für bestimmte Funktionen braucht. Der einzige I²C-Baustein, mit dem ich bisher gearbeitet habe, war ein serieller EEPROM, den konnte man gleich vom COM aus mit Strom versorgen. Über A0-A2 kannst du ja verschiedene Adressen vorgeben, so könntest du bis zu acht ICs an einem COM-Port anschliessen.
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 11.09.2006, 17:03    Titel: |   |  
				| 
 |  
				| Diesen Code verwende ich bis jetzt, um den Binärcode auf den LM75 zu schreiben: 
 
 'Startsequenz auf den i2c-BUS schreiben
 'SDA low
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL low
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 
 
 FOR i = 1 TO 8
 
 ln$ = "10010001"
 e1$ = MID$(ln$,  1, 1)
 e2$ = MID$(ln$,  2, 1)
 e3$ = MID$(ln$,  3, 1)
 e4$ = MID$(ln$,  4, 1)
 e5$ = MID$(ln$,  5, 1)
 e6$ = MID$(ln$,  6, 1)
 e7$ = MID$(ln$,  7, 1)
 e8$ = MID$(ln$,  8, 1)
 if i = 1 then
 if e1$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,1
 print e1$
 end if
 
 if i = 2 then
 if e2$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,2
 print e2$
 end if
 
 if i = 3 then
 if e3$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,3
 print e3$
 end if
 
 if i = 4 then
 if e4$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,4
 print e4$
 end if
 
 if i = 5 then
 if e5$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,5
 print e5$
 end if
 
 if i = 6 then
 if e6$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,6
 print e6$
 end if
 
 if i = 7 then
 if e7$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,7
 print e7$
 end if
 
 if i = 8 then
 if e8$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 64
 CLOSE #1
 'SCL low
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FB, 0
 CLOSE #1
 locate 1,8
 print e8$
 end if
 NEXT
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 11.09.2006, 17:20    Titel: |   |  
				| 
 |  
				| Ja und? Funktioniert's? Sieht etwas umständlich aus, warum z.B. das OPEN COM? Das brauchte ich nicht. Du könntest das ganze noch etwas strukturieren, indem du SUBs für Start und Stop, Lesen und Schreiben, Acknowledge usw. machst. Ach - und beim Anschluss an den COM Zenerdioden nicht vergessen um dessen +/- 12V Spannung auf 0 bzw. +4,7V herunterzuregeln. _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 11.09.2006, 18:20    Titel: |   |  
				| 
 |  
				| hat von euch einer ein fertiges Programm für die serielle Schnittstelle. 
 Cu Andy
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 11.09.2006, 23:05    Titel: |   |  
				| 
 |  
				| Hallo 
 Ich würde den LM75 so an den COM anschliessen:
 
 
   
 Dazu habe ich mein I²C-EEPROM-Programm mal passend umgebastelt. Ich kann es natürlich nicht testen, weil ich keinen LM75 hier habe, aber so ungefähr könnte es gehen. Die Registeradressen sind die für COM1, das Programm liest nur die Temperatur, die ganzen Sonderfunktionen die das Teil bietet, werden hier erstmal nicht berücksichtigt
 
 
  	  | Code: |  	  | CLS adresse = 144        '10010000
 OUT 1019, 64         'TxD als Spannungsvers. einschalten
 
 DO
 OUT 1020, 3          'DTR (SDA) und RTS (SCL) auf high
 OUT 1020, 2          'SDA auf low waehrend SCL auf high->Startbedingung
 OUT 1020, 0
 
 GOSUB schreiben
 GOSUB lesen
 GOSUB acknowledge
 highbyte = byte
 GOSUB lesen
 GOSUB keinacknowledge
 lowbyte = byte
 OUT 1020, 0
 OUT 1020, 2
 OUT 1020, 3          'SDA auf high waehrend SCL auf high->Stopbedingung
 
 vorzeichen = highbyte AND 128
 temperatur = (highbyte - vorzeichen) * 2 + (lowbyte AND 128) / 128
 IF vorzeichen = 128 THEN temperatur = 256 - temperatur
 temperatur = temperatur / 2
 LOCATE 1, 1
 PRINT USING "####.#"; temperatur; : PRINT " øC"
 
 LOOP WHILE INKEY$ = ""   'Beenden mit beliebiger Taste
 GOTO ende
 
 schreiben:
 bitwert = 128
 FOR bit = 0 TO 7
 IF (adresse AND bitwert) = bitwert THEN aus = 1 ELSE aus = 0
 OUT 1020, aus
 OUT 1020, aus + 2
 OUT 1020, aus
 bitwert = bitwert / 2
 NEXT
 OUT 1020, 1
 OUT 1020, 3
 IF (INP(1022) AND 16) = 16 THEN PRINT "IC antwortet nicht.": GOTO ende
 OUT 1020, 1
 OUT 1020, 0
 RETURN
 
 lesen:
 bitwert = 128
 byte = 0
 OUT 1020, 1
 FOR bit = 0 TO 7
 OUT 1020, 3
 IF (INP(1022) AND 16) = 16 THEN byte = byte + bitwert
 OUT 1020, 1
 bitwert = bitwert / 2
 NEXT
 OUT 1020, 0
 RETURN
 
 acknowledge:
 OUT 1020, 0
 OUT 1020, 2
 OUT 1020, 0
 RETURN
 
 keinacknowledge:
 OUT 1020, 1
 OUT 1020, 3
 OUT 1020, 1
 OUT 1020, 0
 RETURN
 
 ende:
 OUT 1019, 0              'TxD ausschalten
 OUT 1020, 0
 END
 | 
 
 Würde mich selbst mal interessieren, ob sich damit was tut.
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 12.09.2006, 12:49    Titel: |   |  
				| 
 |  
				| @chef Skilltronic: Ich werde den LM75  dann heute noch nach Deiner Schaltung daran betreiben, jedoch muss ich mir erst noch einmal ein paar Bauteile hierfür besorgen.
 
 Aso, ich hab mal schnell die Spannung daran gemessen.
 Die Spannung beträgt, 9,91 Volt.
 
 So Z-Dioden sind da, inklusive der Widerstände.
 
 Nun geht das Problem weiter:
 Ich habe ein Beinchen des LM75 abgebrochen.
 
 Also was musste ich demnach wieder machen?
 
 Ajo, beim Reichelt die Sachen bestellen:
 
 Sind gesamt 6 Stück vom Temperatursensor LM75.
 
 Diese LM75 werde ich dann mit Schieberegister betreiben.
 
 Nun meine Frage an Skilltronic.
 
 Die Z-Dioden sorgen doch dafür, dass die Spannung bei 4,7 Volt bleibt oder.
 
 Das nächste wäre, dass ich ein alt ausgediehntes PC-Netzteil als Stromversorgung verwende.
 
 Also einmal die 5 Volt angezapft.
 
 Nun meine Frage an Skilltronic:
 Kann ich weiterhin die Z-Dioden 4,7 Volt verwenden?
 
 
 
 Bis denne
 
 Cu Andy
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 12.09.2006, 20:06    Titel: |   |  
				| 
 |  
				| Hallo 
 Welches Beinchen ist denn abgebrochen? Wenn es eins von den Adresseingängen A0-A2 ist oder der O.S.-Ausgang, ist es nicht so schlimm.
 
 Eine zusätzliche Stromversorgung brauchst du nicht. Die maximale Stromaufnahme des LM75 ist mit 1mA angegeben, bei 6 Stück also maximal 6mA, die aber auch nicht erreicht werden, weil nicht immer alle gleichzeitig das Maximum brauchen. Aber selbst 6mA schafft der TxD-Ausgang am COM noch, den ich ja als Stromversorgung benutze. Wenn du trotzdem eine externe Stromversorgung mit 5V willst, brauchst du dort keine Z-Diode. Dürftest du in dem Fall auch nicht so einfach ohne Vorwiderstand, sonst kann die Diode durchknallen. Der COM hat schon Vorwiderstände intern eingebaut. An SDA und SCL brauchst du die Zenerdioden schon, weil der COM ja wie gesagt +/-12 Volt Pegel hat.
 
 Ein Schieberegister brauchst du auch nicht. Wie ich ebenfalls schon geschrieben hatte, kannst du über die Eingänge A0-A2 die einzelnen ICs adressieren. Das geht so. Im Programm wird ja zuerst ein Byte an den LM75 gesendet. In meinem Beispiel 144 dezimal was 10010000 binär entspricht. Die ersten vier Bit, die 1001 sind der Teil der IC-Adresse, der intern "verdrahtet" ist. Die bleibt immer gleich. Die nächsten 3 Bit sind der Teil der Adresse, den du über A0-A2 vorgeben kannst. Da die in meinem Beispiel alle drei auf Masse liegen, sind die entsprechenden 3 Bit im Byte auch null. Das letzte Bit steht für lesen oder schreiben. 0 ist lesen, 1 ist schreiben. Da erstmal nur das Temperaturregister gelesen werden soll ist es also auch null. So kommt die 144 zustande. Wenn du z.B. A0-A2 alle auf plus legen würdest, müsste das Byte 10011110 sein bzw. 158. Auf diese Art kannst du bis zu acht ICs mit verschiedenen Adressen versehen (000-111) und jeden einzeln durch ein entsprechendes Byte im Programm rufen. Das ist ja der Witz bei I²C - du kannst verschiedene ICs auf einen Zweidraht-Bus legen und über die verschiedenen Adressen jeden einzeln ansteuern. Als ob jeder eine eingene "Telefonnummer" hätte.
 
 Alles klar?
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 12.09.2006, 20:41    Titel: |   |  
				| 
 |  
				| Es hat Pin 1 erwischt 
 Soweit schon, aber könntest Du es nicht auf einen Schaltplan so zeigen wie Du es meinst mit den 3 Bits die man vergeben muss.
 
 Cu Andy
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 12.09.2006, 20:58    Titel: |   |  
				| 
 |  
				| Hallo 
 Viel zeichnen kann ich da nicht. Das steht im Datenblatt:
 
 
   
 Das sind die obersten 7Bit des Bytes, das an den LM75 zu Beginn gesendet wird. Das letzte bzw. das unterste (LSB = least significant oder niederwertigste Bit), das hier nicht angegenben ist steht ja für lesen oder schreiben. Wenn du einen der A-Eingänge auf die Betriebsspannung legst, musst du entsprechend eine 1 in diesem Byte eintragen, für die, die auf Masse liegen eine 0 und fertig.
 
 Gruss
 Skillronic
 
 EDIT: Pin 1 ist natürlich schlecht...
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 14.09.2006, 23:40    Titel: |   |  
				| 
 |  
				| Hallo 
 Ich weiss, keine Doppelposts... Aber KB hat mich auf diesen Link hingewiesen. Da ist alles beschrieben und es gibt auch fertige und vor allem getestete Beispielprogramme.
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		| Andy19312 
 
 
 Anmeldungsdatum: 22.10.2005
 Beiträge: 428
 
 
 | 
			
				|  Verfasst am: 18.09.2006, 17:31    Titel: |   |  
				| 
 |  
				| irgendwie funktioniert es nach deiner schaltung nicht. zudem messe ich bei vcc nur 0,56 V. 
 K.A wieso
 
 Ich hab mal schnell dies zusammengetippt "Wäre nett, wenn jemand mal darüber schauen würde":
 
 Der Code ist für freebasic gedacht:
 
 
 cls                 'Bildschirm löschen
 
 out 1019,64         'Versorgungsspannung für LM75 legen
 do                  'Schleife beginnt
 
 addieren  = 0       'Wert addieren auf Null setzen
 addierena = 0       'Wert addierena auf Null setzen
 
 
 'Master sendet STOP-Bedingung
 'Beim ersten Durchlauf hat STOP den Sinn,
 'eine definierte Ausgangssituation zu erzeugen.
 out 1020,2	        'SCL high
 out 1020,3	        'SDA high
 
 'Master sendet START-Bedingung
 'Damit ist unser Gerät LM75 lesebereit.
 out 1020,2	        'SDA low
 out 1020,0	        'SCL low
 
 
 'Master sendet Adress-Byte
 '1001 ist der unveränderliche Teil unseres LM75
 'Die folgenden drei Bits bestimmen wie wir unsere Leitungen A0/A1/A2 verbunden haben.
 'Das letzte Bit gibt an, ob wir lesen oder schreiben wollen.
 'Wir wollen lesen, daher 1
 FOR i = 1 TO 8
 
 ln$ = "10010001"
 e1$ = MID$(ln$, 1, 1)
 e2$ = MID$(ln$, 2, 1)
 e3$ = MID$(ln$, 3, 1)
 e4$ = MID$(ln$, 4, 1)
 e5$ = MID$(ln$, 5, 1)
 e6$ = MID$(ln$, 6, 1)
 e7$ = MID$(ln$, 7, 1)
 e8$ = MID$(ln$, 8, 1)
 if i = 1 then
 if e1$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA low
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 2 then
 if e2$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 3 then
 if e3$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 4 then
 if e4$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 5 then
 if e5$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 6 then
 if e6$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 7 then
 if e7$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 
 if i = 8 then
 if e8$ = "1" then
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 1
 CLOSE #1
 else
 'SDA high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 0
 CLOSE #1
 end if
 'SCL high
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT &H3FC, 2
 CLOSE #1
 
 end if
 NEXT
 
 
 'Slave sendet ACKNOWLEDGE
 'Start
 IF (INP(1022) AND 16) = 16 then
 a = a + 1
 end if
 OUT 1020, 0
 CLOSE #1
 'Ende
 
 'Das erste Datenbyte lesen
 'Bit 1
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 128
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 2
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 64
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 3
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 32
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 4
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 16
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 5
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 8
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 6
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 4
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 7
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 2
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 'Bit 8
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 16 then
 addieren = addieren + 1
 else
 addieren = addieren + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 
 
 'Master sendet Acknowledge
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 OUT 1020, 2
 OUT 1020, 0
 CLOSE #1
 
 'Slave sendet das zweite Datenbyte
 'Bit 1
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 2
 CLOSE #1
 IF (INP(1022) AND 16) = 64 then
 addierena = addierena + 1
 else
 addierena = addierena + 0
 end if
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 0
 CLOSE #1
 
 
 OPEN "COM1:115200,N,8,1" FOR INPUT AS #1
 OUT 1020, 1
 OUT 1020, 3
 OUT 1020, 0
 CLOSE #1
 locate 1,1
 print "LM 75 Testprogramm"
 locate 3,0
 print a
 locate 3,0
 print "Binaerzahl:"
 locate 3,12
 print addieren
 loop
 |  |  
		| Nach oben |  |  
		|  |  
		| Skilltronic 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 1148
 Wohnort: Köln
 
 | 
			
				|  Verfasst am: 18.09.2006, 23:24    Titel: |   |  
				| 
 |  
				| Hallo 
 
  	  | Andy19312 hat Folgendes geschrieben: |  	  | irgendwie funktioniert es nach deiner schaltung nicht. zudem messe ich bei vcc nur 0,56 V. 
 K.A wieso
 | 
 
 Wieso "zudem"? Wenn nur 0,56V als Versorgungsspannung anliegen, ist mir klar, warum meine Schaltung irgendwie nicht funktioniert. Ich denke mal, du hast ganz einfach die Dioden verkehrt herumeingebaut. Ansonsten sollte sie funktionieren, jedenfalls geht sie beim 24c16 mit I²C-Bus auch. Besser ist sicher die von der Frank Steinberg-Seite,zu der ich den Link gepostet habe. Da ist noch ein Kondensator drin, der scheinbar die Messgenauigkeit verbessert. Sonst ist sie von den Widerstandswerten abgesehen fast die gleiche wie meine, nur die Zenerdioden werden nicht benötigt, weil der LPT ja schon 0 bzw. 5V-Pegel hat.
 
 Dein Programm ist etwas lang, um mal eben drüberzuschauen. Warum benutzt du keine Schleifen? Du könntest den Code sicher auf ein Viertel oder weniger reduzieren. Mein Beispielprogramm enthält ja ein paar Möglichkeiten, wie man es kürzer machen kann. Ausserdem ist die Gefahr solcher Fehler dann geringer:
 
 
  	  | Code: |  	  | IF (INP(1022) AND 16) = 64 then | 
 
 Oder warum benutzt du nicht für den Anfang das getestete und funktionierende (!) Programm von der Frank Steinberg-Seite?
 
 Gruss
 Skilltronic
 _________________
 Elektronik und QB? www.skilltronics.de !
 |  |  
		| Nach oben |  |  
		|  |  
		|  |  
  
	| 
 
 | Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten.
 Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
 Du kannst deine Beiträge in diesem Forum nicht löschen.
 Du kannst an Umfragen in diesem Forum nicht mitmachen.
 
 |  |