Autor Thema: I2C-Bus-Steuerung mit GfA-Basic?  (Gelesen 20046 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Latz

  • Benutzer
  • Beiträge: 574
  • Falcon forever!
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #20 am: Do 15.08.2019, 10:36:47 »
Hi,

...und ich grabe den Thread nochmal aus.
Ein paar konkrete Fragen:
- Hat mittlerweile jemand i2c mit GFA Basic (am Parallel-Port) realisiert?
- Wenn nicht, kann mir jemand bei der "Übersetzung" von C in Basic helfen?
  Es geht "nur" um die Routinen in der Datei "i2cfast.c" aus T.Harbaums
  Sourcen; als GFA-Anfänger brauche ich aber ein wenig Unterstützung.

Mein Ziel ist die Ansteuerung und Auswertung von "einfachen" Sensoren/i2c Chips
am Falcon, z.B. Temperatur, Druck, 4-fach analog->i2c (PCF8574) bis hin zum
IR-Entfernungsdetektor mit SI1143.
All die Sensoren senden/empfangen nur wenige Bytes, max. 10 Byte wenn man
den SI1143 zur "Wischgesten-Erkennung" (à la Minority Report) einsetzt;
Geschwindigkeit dürfte also kein Problem sein. Die "Sensoren" habe ich mir
bereits für den Lego NXT gebaut, auch die Auswertung der Daten sind dann
kein Problem wenn die i2c-Kommunikation läuft.

Wer kann mir dabei helfen? "Umwege" (z.B. über Arduino) möchte ich nicht
gehen, auch andere Programmiersprachen fallen mangels Kenntnis aus.
Einzig noch die Frage ob die serielle Schnittstelle (MODEM2) einfacher
wäre...mit HSMODEM (TOS) oder SCC.XDD (MiNT) gehen ja 115200...?

Gruß,
Latz
Falcon/CT60 80 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte + USB- Karte, Carte Eiffel+LCD, 80 GB HD, DVD-RW
Falcon/CT63 95 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte, Carte Eiffel+LCD, 16 GB CF, CD-RW

Offline Latz

  • Benutzer
  • Beiträge: 574
  • Falcon forever!
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #21 am: Mo 19.08.2019, 10:43:57 »
Oje, vielleicht hätte ich meine Frage doch als skurriles EBay-Angebot
kaschieren sollen, da sind die Reaktionen immer sehr schnell... ;)  :P

Ist die Anfrage zu dumm oder (mal wieder) zu speziell?
Zur Not würde mir auch eine detailierte Beschreibung der C-Aufrufe in
i2cfast.c genügen (was passiert genau, besonders bei den "Register-Befehlen"
cgwrite...).

Irgendjemand?

Latz
Falcon/CT60 80 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte + USB- Karte, Carte Eiffel+LCD, 80 GB HD, DVD-RW
Falcon/CT63 95 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte, Carte Eiffel+LCD, 16 GB CF, CD-RW

Offline czietz

  • Benutzer
  • Beiträge: 3.570
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #22 am: Mo 19.08.2019, 11:41:45 »
Wir müssen unterschiedliche Versionen von i2cfast.c haben. Irgendwas, was "cgwrite" heißt, kommt in meiner Datei nicht vor: http://harbaum.org/till/atari/videotxt/videotxt.zip. Eigentlich ist das eine super-simple Bitbanging-Implementierung von I2C. Wenn Du das I2C-Protokoll verstehst (Du sagst ja, Du hast schon vorher damit gebastelt), ist eigentlich sofort klar, was passiert. Letztlich werden SDA und SCL entsprechend dem Protokoll "low" und "high" gesetzt und SDA wird natürlich auch gelesen.

Zu klären wäre, wie der Anschluss bei Dir aussieht: hast Du wirklich Tills Schaltung dazwischen, die einen Drucker "entkoppelt"? Oder nur den simplen Aufbau mit 2 Dioden? In letzterem Fall kannst Du Dir alle Teile mit if(prt_adap) wegdenken.

Offline Latz

  • Benutzer
  • Beiträge: 574
  • Falcon forever!
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #23 am: Mo 19.08.2019, 15:02:32 »
Sorry, in meiner "Verzweiflung" habe ich es falsch geschrieben.
Wie Till das eigentliche i2c Protokoll realisiert hat ist mir klar, ich habe nur Probleme den Parallelport
anzusteuern, sprich im Verständnis (der Umsetzung) der #DEFINE Zeilen giwrite..., giselect...
usw.

Die "einfache Lösung" mit nur zwei Dioden habe ich gar nicht gesehen...ohne Bustreiber (74xx244)?

...und klar, "IF !prt_adapt" versteht auch ein GFA-Anfänger  ;D

Danke schonmal für die Antwort,
Latz
Falcon/CT60 80 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte + USB- Karte, Carte Eiffel+LCD, 80 GB HD, DVD-RW
Falcon/CT63 95 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte, Carte Eiffel+LCD, 16 GB CF, CD-RW

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.248
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #24 am: Mo 19.08.2019, 15:14:31 »
Vlt ne dumme Frage, aber wenn du die Routinen schon in C hast, und dich mit GFA nicht gut auskennst, warum willst du es dann unbedingt in GFA realisieren? ;)

Offline czietz

  • Benutzer
  • Beiträge: 3.570
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #25 am: Mo 19.08.2019, 15:49:21 »
Wie Till das eigentliche i2c Protokoll realisiert hat ist mir klar, ich habe nur Probleme den Parallelport
anzusteuern, sprich im Verständnis (der Umsetzung) der #DEFINE Zeilen giwrite..., giselect...
usw.

In BASIC wären das einfach POKE- und PEEK-Befehle auf die angegebenen Adressen: Du willst Leitungen am Druckerport setzen und auslesen.

Die "einfache Lösung" mit nur zwei Dioden habe ich gar nicht gesehen...ohne Bustreiber (74xx244)?

Es kann sein, dass Du weiterhin einen Treiber brauchst -- je nach Leitungslänge. Der Parallelport des Atari ist ziemlich schwach. Aber Du brauchst keine trickreiche Umschaltung zwischen Drucker- und I2C-Betrieb. Wenn Du Open-Collector-Treiber nimmst, sind wahrscheinlich dafür die Dioden nicht nötig. Aber ich nehme an, Du weißt, wie man hardwareseitig einen I2C-Bus anbindet.

Offline Latz

  • Benutzer
  • Beiträge: 574
  • Falcon forever!
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #26 am: Mo 19.08.2019, 16:38:55 »
Hi,

@Thorsten Otto: Ich hab´s ein paar Mal mit C probiert und bin kläglich gescheitert, mit GFA Basic
dagegen konnte ich mehr oder weniger "aus der hohlen Hand" bereits zwei komplette funktionierende
Programme in einem Monat erstellen. Und wie in meinem 1. Post erwähnt will ich ja nicht den
Videotext-Dekoder bauen sondern andere i2c Geräte lesen+steuern.

Danke, czietz, das ist schonmal ein Hinweis. Wenn ich mal weiß wo ich anfangen (suchen) kann...
Melde mich wieder!

Latz
Falcon/CT60 80 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte + USB- Karte, Carte Eiffel+LCD, 80 GB HD, DVD-RW
Falcon/CT63 95 MHz, CTPCI+Radeon 9250 + RTL8139 Netzwerkkarte, Carte Eiffel+LCD, 16 GB CF, CD-RW

Offline czietz

  • Benutzer
  • Beiträge: 3.570
Re: I2C-Bus-Steuerung mit GfA-Basic?
« Antwort #27 am: Mo 19.08.2019, 17:42:23 »
Denkt man sich Umschaltung Drucker/I2C weg, dann wird SDA auf der Datenleitung 0 des Parallelports ausgegeben und SCL auf der Datenleitung 1. Gelesen wird SDA über die BUSY-Leitung. Mithilfe z.B. des Profibuchs sollte so klar werden, welcher Zugriffe (d.h. PEEK/POKE [1] in BASIC) es bedarf.

[1] Wimre in GFA-Basic eher SPOKE, da die HW-Register nur im Supervisor-Modus erreichbar sind.