Forum: Mikrocontroller und Digitale Elektronik Lesen von Registern (Bascom)


von DarkFirefighter (Gast)


Lesenswert?

Hallo,

ich hab da ein Problem mit dem Sensor TPA 81. Wie kann ich mit I²C die
Register auslesen? Ich hab schon ein Datenblatt
http://www.roboter-teile.de/datasheets/tpa81.pdf gefunden weiß aber
leider ned wie ich sie auslesen soll. Wäre dankbar wenn ihr weiter
wüsstet. Ich programmiere mit Bascom.

Gruß

von Rahul (Gast)


Lesenswert?

Wirf einen Blick in BASCOM-Handbuch (ca. 32MB pdf)!
Da gibt es garantiert einen I²C-"Baustein". Vermutlich soar in
Software.

von DarkFirefighter (Gast)


Lesenswert?

Da hab ich schon gesucht aber nichts gefunden was mir weiterhilft

von Rahul (Gast)


Lesenswert?

Komisch...
Ich habe I2CINIT, I2CRECEIVE und I2CSEND gefunden.
Damit sollte es "einwandfrei"* funktionieren.
Im Datenblatt des Sensors ist das auch komplett (sogar in Deutsch)
beschrieben.
Wenn du uns an deinem Problem bzw. an dem, was du bis jetzt zur Lösung
dieser Aufgabe "programmiert" hast, teilhaben lassen würdest (sprich:
Quellcode), könnte man dir vielleicht helfen.
Solltest du nach einer fertigen Lösung fragen, ist der Thread für mich
an dieser Stelle beendet...



*Soweit BASCOM einwandfrei ist...

von DarkFirefighter (Gast)


Angehängte Dateien:

Lesenswert?

Mit I2CRecive hab ich es probiert entweder ich hab was übersehen oder
stell mich zu blöd. Im Anhang schick ich dir den bisherigen Code. Danke
für deine Hilfe

MfG

von Rahul (Gast)


Lesenswert?

Du wirst dem Sensor mit I2CSEND noch sagen müssen, was du von ihm wissen
willst.
Wirf doch mal ein Blick in das ("completet") Datenblatt deines
Controllers. Dort ist die TWI-Schnittstelle beschrieben, und auch der
typische Ablauf einer I2C-Kommunikation.
Sonst finden sich solche Beschreibungen bestimmt auch noch auf der
Roboter-Netz-Seite...
Im Regelfall schickt man dem Slave die Registernummer, die man auslesen
will bzw. erst einen Lesebefehl und dann die Registernummer, und
empfängt dann die entsprechenden Daten. Bei I2CRECEIVE kann man auch
noch die Anzahl der zu empfangenen Bytes angeben...

von Rahul (Gast)


Lesenswert?

Oder man benutzt I2CRECEIVE entsprechend dem zweiten Teil des
Beispielprogramms zum Befehl...
Am besten guckst du dir an, wie I2C funktioniert (wurde mal von Philips
entwickelt, ATMEL nennt es TWI.)

von DarkFirefighter (Gast)


Lesenswert?

Ok danke ich werd es mal so versuchen. Würdest du mir deine
eMail-Addresse geben, da ich jetz dann auf einen Geburtstag muss und
nicht mehr die Zeit hab es zu testen, damit ich wenn du nichts dagegen
hast dich noch etwas fragen kann falls ich Probleme hab. Meine
eMail-Addresse ist vbfirefighter@web.de

Schönen abend noch

Gruß

von Rahul (Gast)


Lesenswert?

Hab ich dich jetzt etwa adoptiert?
Ich wollte dir eigentlich nur ein paar Tipps zur Selbsthilfe geben...
Von BASCOM habe ich sogut wie keine Ahnung...
Ich müsste auch erst irendwo nachgucken...

von DarkFirefighter (Gast)


Lesenswert?

Nein du hast mich ned adoptiert es war eine normale Frage ich will dich
ned übermäßig beanspruchen. Danke dennoch

von Hannes L. (hannes)


Lesenswert?

> Wirf doch mal ein Blick in das ("completet") Datenblatt deines
> Controllers. Dort ist die TWI-Schnittstelle beschrieben, und auch
> der typische Ablauf einer I2C-Kommunikation.

@Rahul:
Ich habe den Eindruck, dass viele Leute BASCOM benutzen, weil sie genau
das nicht machen wollen (ins Datenblatt des Controllers oder der
Peripherie schaun), und nicht, weil BASCOM so toll ist.

> Hab ich dich jetzt etwa adoptiert?
> Ich wollte dir eigentlich nur ein paar Tipps zur Selbsthilfe
> geben...

Hilfe zur Selbsthilfe nennt man hier "auf halbem Wege verhungern
lassen". Siehe:
http://www.mikrocontroller.net/forum/read-7-287619.html

...

von Rahul (Gast)


Lesenswert?

http://www.mikrocontroller.net/forum/read-7-287619.html
Der Thread ist aber gut gewachsen...

Da ich in Bezug auf BAsSCOM auch nur "gefährliches" Halbwissen habe,
sehe ich keine Probleme darin, anderen zu helfen.
Wenn mich ein Thema interessiert (mit I²C habe ich noch nie etwas
gemacht), dann engagiere ich mich auch in einem Thread - Ob da dann
auch etwas für den Thread-Starter bei rauskommt ist mir dann eigentlich
egal, solange ich was davon habe- (egoistisch, oder? ;)
Mir ist aufgefallen, dass ich schon länger keine Frage mehr hatte, für
die es sich gelohnt hätte, einen Thread zu starten (sollte ich
vielleicht doch mal machen, weil ich mit sonem Netzwerkzeug Probleme
habe). Meistens haben sich die Probleme dadurch gelöst, dass ich mir
noch mal das Datenblatt angeguckt habe, mit einem Kollegen drüber
gesprochen habe (und dann vielleicht von selbst auf die Lösung kam)
oder einfach eine Nacht drüber geschlafen habe. Manchmal bringt es auch
was, wenn ich was komplett anderes mache (ich mache sogar Kaffee in der
Firma, oder bestücke meine Platinen zuende) - Spazierengehen hilft
auch...Manchmal muß man sich sogar über Kollegen aufregen, wobei das
nicht unbedingt der Sache dienlich ist...

In irgendeinem anderen Thread habe ich schon geschrieben, dass es nicht
auf die Programmiersprache ankommt, sondern, wie man an Lösung des
Problems angeht und vor allem wieviel Interesse an der Lösung dieses
Problems besteht.
[OT; ist das bis jetzt nicht alles OT gewesen?!] momentan habe ich in
der Firma das Problem, dass ich einen Sensor über RS485
(halbduplex)ansprechen muß. Mit dem STK500 und seinen 3,686MHz klappt
die Kommiúnikation problemlos. Mit der fertigen Platine, die mit
12,288MHz läuft, weil kein anderer Quarz vorhanden ist (ich wollte
nicht noch ein neues Bauteil einführen), geht es nicht. Scheinbar ist
mein Board zu schnell für den Sensor...bloß der ist jetzt in einer
anderen Abteilung für andere Tests...Das Problem beschäftigt mich; ich
kann es aber nicht lösen...
[/OT]

In einen Thread ist irgendwann absehbar, ob sich der Fragesteller für
den Weg oder nur die fertige Lösung interessiert. Dann ist der Thread
für mich uninteressant...

TWI muß ich mir halt auch noch mal angucken, um "mitfachsimpeln" zu
können...

von DarkFirefighter (Gast)


Lesenswert?

Also ich wollte von dir keine Fertige Lösung! Mir ist shcon klar dass
ihr ned die Zeit habt das zu schrieben. Meine Frage war (für mich)
eigentlich sehr simpel und zwar wie ich aus den verschiedenen Registern
lesen kann. den Rest bau ich mir dann schon slebst zusammen. Nur welche
befehle muss ich schicken, um eben aus jenen Registern lesen zu können.
Du musst mich deswegen ned adoptieren. Ich bin dir schon dankbar für das
was du mir geschrieben ahst aber da ich eben mit den Befehlen von BASCOM
ned soviel anfangen kann weiß ich nicht wie ich jetz direckt in ein
bestimmtes Register komm.


MfG

von Hannes L. (hannes)


Lesenswert?

Hallo "DunklerFeuerFechter"...

Zu dem TPA81 (den ich nicht kenne) gibt es doch sicherlich auch ein
Datenblatt. Dort ist vermutlich das Protokoll beschrieben, darin
müsstest du also alle Angaben finden. Dazu gehört z.B., mit welcher
Adresse das Teil angesprochen werden muss und welche Steuerbefehle
geschickt werden müssen, um bestimmte Register auszulesen.
Falls es dir für den Anfang zu kompliziert ist, dann experimentiere
doch erstmal mit einem kleinen seriellen EEPROM (I²C). Damit lernst du
erstmal den Umgang mit I²C kennen, kannst etwas üben (Modifikation
irgendwelcher Beispielprogramme) und verstehst dann auch das Datenblatt
des von dir gewünschten Teils.

Löse dein Problem Schritt für Schritt.

"Du kannst einen Berg nicht mit einem Schritt besteigen" (Zitat von
Peter, das den Nagel auf den Kopf trifft...)

Übrigens:
Falls du dich beleidigt gefühlt hast, dann zeigt das, dass das
Geschriebene auf dich zutrifft. Falls es nicht auf dich zutrifft, dann
brauchst du dich auch nicht angesprochen fühlen und musst auch nicht
den Beleidigten spielen.

Viel Erfolg...
...HanneS...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.