www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C Fragen


Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
bin gerade dabei mit Hilfe von I²C zwei mega16, einen PCF8583 und ein
ATMEL 256 EEPROM mit einander zu verbinden.
ich habe hierzu von einem m16 die sda und die scl leitung hin zu allen
anderen ic gelegt. am ende der leitungen hab ich zwei 10k Widerstände
an V+ gelegt. nun wollt ich fragen ob ich das so richtig gemacht habe.

gruß

xeus

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo hast du den Wert von 10k her?

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
niergenswo, das ist ja genau mein problem. ich hab nichts gefunden,
welchen wert ich nehmen soll.

Autor: Gerald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja, das ist ok so, ich hab 4,7k als Abschluss genommen.
Bei kurzen Verbindungen spielt der Abschlusswiderstandswert keine
grosse entscheidende Rolle.
Wichtig ist nur, dass definierte Pegel auf dem Bus herrschen und das
wird durch den 10k-Widerstand erreicht, zumal dort auch keine hohe
Übertragungsraten herrschen.

Gruss

Gerald

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
komischerweise hab ich aber ein riesen prob mit dem pcf8583, der läuft
in lichtgeschwindigkeit. an osci und an osco hab ich ein quarz mit
32.768 khz angeschlossen, der mit einem 22pF auf v+ geht.
aber immer wenn ich die uhr abfrage fetzt sie einfach los

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es irgendwie die Möglichkeit zu testen ob die busfrequenz richtig
ist?

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab jetzt mal am oszi des pcf die frequenz gemessen, scheint richtig zu
schwingen auf ungenaue 32,768.

was müsste ichn für einen wert an osci messen

Autor: Hauke Sattler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hört sich sehr nach einem Problem an welches ich mal mit einem
PCF8593 hatte. Die schreiben zwar das der Resetstate des Control/status
registers $00 ist (siehe Datenblatt Seite 6), aber manchmal legt die Uhr
auch in einem anderen Funktionmode los als angegeben. Wenn das zufällig
der 50Hz modus ist, dann läuft die Uhr natürlich 655mal schneller. Also
schreibe zur Sicherheit zuerstmal $00 in das Control/status register und
setze dann erst die Zeit.
bis dann
Hauke

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das hab ich eigentlich:

i2cstart
i2cwbyte &HA0
i2cwbyte 0
i2cwbyte &HC
i2cstop

stimmt das so nicht?

Autor: Hauke Sattler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier lieber erstmal

i2cstart
i2cwbyte &HA0
i2cwbyte &H00
i2cwbyte &H00
i2cstop

mal schauen ob es so funktioniert

P.S.
man sollte sich abgewöhnen dezimal und hex zu mischen.
Weiterhin sollte man hexzahlen immer zwei oder vierstellig angeben.
Beides kommt der Übersichtlichkeit zugute und vermeidet Fehler.

bis dann
Hauke

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs jetzt mal mit dem sample clock.bas getestet, natürlich habe ich
SDA, SCL umgestellt. aber ich krieg immer nur ff:ff:ff Err.
was mach ich falsch?
Adr: hab a0 auf gnd gesetzt, wie kann ich in dem beispiel die adresse
setzen?

Autor: Xeus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ju hu habs geschaft. wollte nun den code in mein prog einflechten, aber
beim compelieren kommt andauernd der fehler "Adress already
occupied(TM1)"

an was könnte das liegen

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs mal nur mit der clock.bas aus den samples versucht, und es
funktioniert einwandfrei. Nun hät ich noch eine kleine frage. wie stell
ich es an, dass ich über den pc an den mc 6 bytes mit je einem
dezimalwert sende, mit den inhalten: tag, monat, jahr, std, min, sek.
diese werte soll der mc dann nehmen, und damit die ühr stellen.

hat von euch schon mal jemand so etwas in der art gemacht?

gruß

xeus

Autor: Hauke Sattler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja sowas habe ich schon mal gemacht, jedoch etwas komfortabler.
Ich habe auf einem Mega16 einen Parser geschrieben, welcher über die
Serielle Schnittstelle Textbefehle bekommt, diese auswertet und dann
die passenden Befehle über den I²C Bus sendet (auf 24LC256 und
PCF8593).

z.B.
set date Friday 14. October 2005
set time 09:14:31
get time
get date
get memory
delete memory

Jedoch ist das alles in Assembler fast ohne Doku gecoded.
Also sehr schwer nachvollziehbar.
Aber Ich kann dir zur not nen Schaltplan für die  Mega16 Beschaltung
(auf einem STK500) und das HEXfile zum Flashen schicken.

bis dann
Hauke

Autor: Xeus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du weißt wohl nicht zufällig wie man das in bascom umsetzt?

Autor: Hauke Sattler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja Bascom war grade zu meiner Anfangszeit von Microcontrolern. Aber da
mir Bascom immer den Speicher zugeknallt hat sobald ich einen Interrupt
hatte, bin ich sehr schnell auf Assembler umgeschwenkt.
Deshalb habe ich nie etwas mit UART in Bascom gemacht.
Tut mir leid.

cu
Hauke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.