Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: I2C Routinen - Das kann doch nicht war sein! Kategorie: C-Control I Micro (von JanPeter - 28.08.2004 20:49)
 Als Antwort auf Re: I2C Routinen - Das kann doch nicht war sein! von André H. - 28.08.2004 8:18
> JanPeter,
>
> Wie oft soll ich es noch vorkauen !!!
>
> > Man muss ja nicht gleich so ausfallend werden, wie Du!
>
> Da redet der richtige.
>
> > Wenn man mal eine Frage stellt zu einem  Â„Beispiel“ von Dir.
> > Ich provoziere gerne Leute im Internet, um festzustellen, mit wem hab ich es zu tun. Das ist
> > interessant, wie die Reaktion kommt.
>
> Leicht provozieren ja, aber nicht so !
> Hatt' ich doch das Posting von Dir nicht beantwortet. Dann hätte Dietmar mir die Entscheidung
> abgenommen und es gelöscht ...
>
> > Wie z.B. mein TOG funktioniert nicht?
> > Dann werde ich erst mal auf die niedrigste Stufe gesetzt u.s.w. .
> > Vorher hatte ich eine I2C-Routine ins Netz gestellt.
> > Das ist so wie beim Angeln, Köder auswerfen und der Fisch beißt.
> > Und Du hast angebissen!
> > Und Du hast Deine angebliche „Richtige Routine“ ins Netz gestellt.
> > Und mich runter gemacht mit : „Du kannst scheinbar keinen Quellcode lesen
>
> Sind wir hier beim Fischen !?
> Da Du eben Fehler siehst, wo keine sind, war das nur eine Feststellung.
>
> > So nun zu meiner Entwicklung zum Programmieren.
> > Ich habe 1983 mir einen Computer gebaut.
> > Mit Z80 u.s.w. . mit Bildwiederholspeicher, Ausgabe am Fernseher und Kassetteninterface, zum
> > abspeichern der Programme . Ich Programmierte alles in Maschinensprache.
> > Habe mir eigene Spiele für den Fernseher programmiert.
> > Und da weiß ich schon was ein TOG ist!
>
> Schön für Dich.
> Das sagt aber nicht über Deine C-Control-Kenntnisse aus.
>
>
> > Was ist da Falsch?
> > Du schreibst:
> > 1.Fehler            data=&HA0
> > Danach              Gosub i2c_start
> > Und danach  data=0
> >  Gosub i2c_write
>
> Genau das meinte ich, daß Du keinen Quellcode lesen kannst !
> Wenn Du Dir mehr als nur die Einsprungmarken in den Routinen angesehen hättest,
> hätteste Du unter Umständen bemerkt, daß meine Startroutine gleich das write
> für die Bausteinadresse mit drin hat:
>
> '---------------------------------------
> #i2c_start 'returns Ack in i
> '---------------------------------------
>  SDA = 1
>  SCL = 1
>  SDA = 0
>  SCL = 0
> '---------------------------------------
> #i2c_write 'returns Ack in i
> '---------------------------------------
>  SDA = data AND &h80
>  TOG SCL
>  TOG SCL
>  for i=1 to 8
>   SDA = data AND (&h80 SHR i)
>   TOG SCL
>   TOG SCL
>  next
>  DEACT SDA
>  TOG SCL
>  i = NOT SDA
>  TOG SCL
> return
>
> Fällt Dir hier irgendetwas auf ?
> Ich bin nämlich gewohnt, die Startbedingung immer gleich mit einem Write zu verknüpfen.
> Denn nach einer Start-Bedingung wird immer ein Byte, das Adressbyte, geschrieben.
> (wenn man von der 10Bit-Adressierung absieht, für die es sowiso fast keine ICs gibt.)
> Darum ist es in der Programmierung von I²C-Bus-Routinen fast schon Gang und Gebe
> Ein Start direkt mit einem Write zu verknüpfen.
> Und genau das ist es, woran Du Dich sicher so aufhängst !
>
> > Du schreibst:
> >
> > 2.Fehler data = &HA1
> >         gosub i2c_start ' repeated start
> >        
> > schreibe: gosub i2c_stop
> > gosub i2cstart
> >
> > 3.Fehler
> > data = &HA1
> > gosub i2c_write
>
> Dasselbe, was ich oben mit dem Start geschrieben habe.
>
>
> > Das ist ziehmlich närflich mit Dir
> > Ich habe 3 Tage verschwendet, zur Analyse Deines Programme und bin nicht weiter gekommen.
> > Du hast mir 3 Tage in der Programmierung von meinen Programmen gekostet!
> > Ich hoffe auf eine Entschuldigung
>
> LOL. Das könnte ich eher von Dir erwarten.(Da wird mir hier sicher jeder zustimmen.)
> Übrigens: "nervlich" würde man mit "e" und "v" schreiben, wenn es dieses Wort geben würde.
> Aber du meintest sicher "nervig". Wie war das mit dem lesen und schreiben noch gleich ....
>
> Denn die Routinen waren getestet, bevor ich sie ins Forum gestellt hatte.
> Ich hatte sie nocheinmal getestet, als Du geschrieben hattest, sie würden nicht funktionieren.
> Nun arbeite ich mit diesen Routinen und schreibe Beispiele für meine CCTools-Hardware,
> und teste diese immer erfolgreich.
> Und Testen heißt bei mir, daß ich diese wirklich auf die Micro lade, die entsprechende
> Hardware anschließe und dann das Ergebnis beobachte, und sie mir
> nicht nur oberflächlich ansehe, und daraufhin sage wäre ein Fehler ...
>
> Und anbei z.B. das funktionierende Beispielprogramm zu einem DS1631.
> Und wenn Du hier jetzt schreibst, es würde nicht funktionieren, dann kann man Dir eben
> nichtmehr helfen.
>
> André H.
>
>
> '-----------------------------------------------------------------
> ' CCTools I²C-Bus-Routinen für C-Control Mikro
> ' CCTools 2004 (http://cctools.hs-control.de
> '-----------------------------------------------------------------
> ' Ansteuerungsbeispiel zum Temperatursensor DS1631
> '-----------------------------------------------------------------
> define SCL PORT[5] ' Pull-Up mit 4,7k bis 10k notwendig
> define SDA PORT[6] ' Pull-Up mit 4,7k bis 10k notwendig
>
>
> define i byte[1] 'temporäres Byte
> define data byte[2] 'Byte zur Datenübergabe zu/von I²C-Bus-Routinen
>
> define MSB byte[3]
> define LSB byte[4]
>
> define DS1631addr  &b10010000 'Schreibadresse
> define DS1631addrR &b10010001 'Leseadresse
>
> baud 9600
>
> gosub i2c_stop ' "Initialisierung" des I²C-Busses
>
> data = DS1631addr
> gosub i2c_start
> data = &hAC
> gosub i2c_write
> data = &b1100
> gosub i2c_write
> gosub i2c_stop
>
> data = DS1631addr
> gosub i2c_start
> data = &h51
> gosub i2c_write
> gosub i2c_stop
>
> #loop
>  data = DS1631addr
>  gosub i2c_start
>  data = &hAA
>  gosub i2c_write
>  data = DS1631addrR
>  gosub i2c_start
>  gosub i2c_read
>  MSB = data
>  gosub i2c_readlast
>  LSB = data
>  gosub i2c_stop
>  
>  put 12
>  if MSB and &h80 then goto negnum
>   put &h20
>   LSB=((LSB shr 4)*13)/2
>   goto endif
>  #negnum
>   put &h2D
>   MSB=128 - (MSB and &h7F)
>   LSB=100-((LSB shr 4)*13)/2
>  #endif
>  print MSB;",";LSB;"°C"
>
>  pause 10
> goto loop
>
> '---------------------------------------
> 'I²C-Bus-Routinen
> '---------------------------------------
> '---------------------------------------
> #i2c_stop
> '---------------------------------------
>  SDA = 0
>  DEACT SCL
>  DEACT SDA
> return
>
> '---------------------------------------
> #i2c_start 'returns Ack in i
> '---------------------------------------
>  SDA = 1
>  SCL = 1
>  SDA = 0
>  SCL = 0
> '---------------------------------------
> #i2c_write 'returns Ack in i
> '---------------------------------------
>  SDA = data AND &h80
>  TOG SCL
>  TOG SCL
>  for i=1 to 8
>   SDA = data AND (&h80 SHR i)
>   TOG SCL
>   TOG SCL
>  next
>  DEACT SDA
>  TOG SCL
>  i = NOT SDA
>  TOG SCL
> return
>
> '---------------------------------------
> #i2c_read 'returns Databyte in data
> '---------------------------------------
>  gosub i2c_sub_read
>  SDA = 0
>  TOG SCL
>  TOG SCL
> return
>
> '---------------------------------------
> #i2c_readlast 'returns Databyte in data
> '---------------------------------------
>  gosub i2c_sub_read
>  TOG SCL
>  TOG SCL
> return
>
> #i2c_sub_read
>  DEACT SDA
>  data = 0
>  for i=0 to 8
>   TOG SCL
>   data = (data shl 1) or (SDA and 1)
>   TOG SCL
>  next
> return
>

Hallo Andre H.
Ich möchte mich bei Dir entschuldigen .
Ich war zu hart .
Mit dem Quellkode lesen von anderen Programmierern übe ich noch weiter.
Denn jeder hat eine andere Art Programme zu schreiben.
Man sollte nicht seine eigenen Programme mit anderen Programmierern vermischen.
Das war das Problem .
Ich hoffe Du kannst mir verzeihen.
MfG
JanPeter

 Antwort schreiben

Bisherige Antworten:

Re: I2C Routinen (von André H. - 4.09.2004 11:36)
    Re: I2C Routinen (von JanPeter - 6.09.2004 23:21)
        Re: I2C Routinen (von André H. - 7.09.2004 8:27)
            Re: IR-Routine (von JanPeter - 7.09.2004 22:25)
                Re: IR-Routine (von JanPeter - 7.09.2004 22:32)