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
niergenswo, das ist ja genau mein problem. ich hab nichts gefunden, welchen wert ich nehmen soll.
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
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
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
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
das hab ich eigentlich: i2cstart i2cwbyte &HA0 i2cwbyte 0 i2cwbyte &HC i2cstop stimmt das so nicht?
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
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?
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.