Forum: Mikrocontroller und Digitale Elektronik DS3231 RTC I2C


von Merri (Gast)


Lesenswert?

Hallo,

ich möchte mit dem Attiny84/Alternativ Attiny841 einen DS3231 über I2C 
auslesen. Leider haben beide keine I2C Master Schnittstelle :(

http://www.atmel.com/Images/doc8478.pdf
http://www.atmel.com/Images/doc2564.pdf

Die konnten mir auch nicht weiterhelfen. Finde zu Software TWI/I2C 
ebenfalls nicht das passende.

Das ganze möchte ich an Anlehnung dieser Lib später realisieren.


https://github.com/akafugu/ds_rtc_lib/blob/master/library-gcc/rtc.c

Danke für eure Hilfe

von geizhals (Gast)


Lesenswert?

dann nimm einen der Hardware tWI drin hat.

ansonsten überschüttet dich Google mit Hilfe

von Merri (Gast)


Lesenswert?

Überschüttet werde ich da nur mit Arduino Lösungen :( Der Rest rar.

von holger (Gast)


Lesenswert?

>Überschüttet werde ich da nur mit Arduino Lösungen :( Der Rest rar.

google

twi usi

Führt dich direkt zu Atmel.

von Frank K. (fchk)


Lesenswert?

AVRs sind mitunter schlecht mit Peripherie ausgestattet. Ein gleich 
großer PIC24F08KL200 hat einen richtigen Hardware-UART und eine richtige 
MSSP, die alle erdenklichen SPI und I2C-Modi kann. "Tellerrand" sag ich 
da nur. Dass er nebenbei doppelt so schnell ist und 16 statt 8 Bits hat, 
ist ein angenehmer Nebeneffekt.

Oder Du nimmst statt dem DS3231 einen DS3234. Der hat SPI statt I2C.

fchk

von Merri (Gast)


Lesenswert?

Die anderen Attinys die ich habe, haben ebenfalls 2 Hardware USART 
schnittstellen (841).

Mit PIC noch nie gearbeitet. Ist zwar direkt teurer als meine Attinys, 
hält sich aber in grenzen. Da ist der DS3234 leider ganz anders, mal 
schnell Preise geprüpft.
Bei ebay nicht bezahlbar und für 2-3 Stk lohnt sich nicht bei Mouser zu 
bestellen.

Mal schaun ob man bei Maxim noch Samples bekommen. Sind mit ausnahme des 
größeren Packages (mehr Pins) soweit noch vertretbar.

von Merri (Gast)


Lesenswert?

Das hab ich mit usi twi nur gefunden.
http://www.jtronics.de/avr-projekte/library-i2c-twi-slave-usi.html

Das werde ich mir mal näher anschauen.

Von den Atmel Seiten habe ich ein paar bereits vorher gesehen, die reden 
dort aber fast durchgehend nur über den Slave. Und Slave bringt mir 
nichts, da ich ja die Verbindung zum DS aufbauen muss.

von holger (Gast)


Lesenswert?


von Merri (Gast)


Lesenswert?

http://www.mikrocontroller.net/attachment/226063/USI_TWI_Master.c

Ist dass die C-Datei dazu? Bei Atmel war kein Code als solches nicht als 
Beispiel hinterlegt.

von Mehrle (Gast)


Lesenswert?

Beitrag "Attiny85 I2C DS3231"

Hatte das auch mal versucht. Die Infos, die dann ausgegeben werden, sind 
sehr sperrlich. Google findet auch nach langem Suchen nichts.

Habe das Projekt nicht weiter verfolgt. Es gibt viele Sachen, die bei µC 
sehr gut erklärt sind. Aber gerade der TWI Teil kommt da einfac zu kurz.

http://www.mikrocontroller.net/attachment/226063/USI_TWI_Master.c
Das dürfte die Headerdatei dazu sein
http://www.cs.cmu.edu/~dst/ARTSI/Create/PC%20Comm/USI_TWI_Master.h

Ging bei mir nicht. Zum einen war der Attiny85 dort nicht mitgelistet 
und es wurde mit den Datenblatt keine passenden Register gefunden.

Wäre schön gewesen, wenn man mal irgendwo ein komplettes Beispiel für 
Attiny44/84/45/85 irgendwo finden könnte. Aber derzeit fehlanzeige.

von Oliver R. (orb)


Lesenswert?

Merri schrieb:
> http://www.mikrocontroller.net/attachment/226063/U...
>
> Ist dass die C-Datei dazu?

Nein: 
http://www.atmel.com/images/Atmel-2561-Using-the-USI-Module-as-a-I2C-Master_AP-Note_AVR310.zip

> Bei Atmel war kein Code als solches nicht als Beispiel hinterlegt.

Einfach mal bei Atmel die Seite vom Tiny85 aufmachen und die Dukumente 
ansehen: http://www.atmel.com/devices/attiny84a.aspx?tab=documents
Alles da.

von Merry (Gast)


Lesenswert?

Hilft nicht wirklich weiter, es wird nicht darauf eingegangen,welche 
Register ich für den Attiny841 dort suchen muss. Es gibt keinerlei 
Hinweise, wie die Register dort heißen. Keines der TWI Register passt zu 
den Punkten
1
  USIDR    =  0xFF;                       // Preload dataregister with "released level" data.
2
  USICR    =  (0<<USISIE)|(0<<USIOIE)|                            // Disable Interrupts.
3
  (1<<USIWM1)|(0<<USIWM0)|                            // Set USI in Two-wire mode.
4
  (1<<USICS1)|(0<<USICS0)|(1<<USICLK)|                // Software stobe as counter clock source
5
  (0<<USITC);
6
  USISR   =   (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)|      // Clear flags,
7
  (0x0<<USICNT0);                                     // and reset counter.

von Oliver R. (orb)


Lesenswert?

In solchen Fällen hilft ein Blick ins Datenblatt. In diesem Fall hättest 
Du sehen können, daß der 841 nur Register für TWI-Slaves zu finden sind 
und nirgends erwähnt ist, daß er Master spielen kann.
Bei Deinem ersten Kandidaten, dem Tiny84 findest Du alle nötigen 
Register unter genau den Bezeinungen.

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.