So also das mit der Uhrzeit funktioniert nun einwandfrei, allerdings klappt das auslesen in der ISR nicht.
Ich hab den SQW Pin der RTC direkt mit Pin B.2 verbunden. Der Plan ist nun gewesen, dass ich beim Mega32 an diesem Pin den Pull-Up aktiviere und den Interrupt und der SQW Pin der RTC auf 1Hz gestellt wird.
Das klappt allerdings nicht.
Mein Code ist folgender:
Ich finde da einfach keinen Fehler.... aber es funktioniert nicht.Code:'Mikrocontroller $regfile = "m32def.dat" $crystal = 8000000 'Stackgröße festlegen $hwstack = 200 $swstack = 200 'TWI konfigurieren Config Sda = Portc.1 Config Scl = Portc.0 Config Twi = 100000 'TWI Frequenz 'Unterprogramme Declare Sub Uhrzeit Declare Sub Settime Declare Sub Read_dcf Declare Sub Enable_sqw 'Ports konfigurieren Config Porta = Output 'Port für die Stunden Config Portd = Output 'Port für die Minuten Config Portb.2 = Output Ds1307 Alias Pinb.2 Porta = 0 Portd = 0 Ds1307 = 1 'Pull-Up aktivieren 'Variablen Dim Zaehler As Byte Dim _hour As Byte Dim _min As Byte Dim _sec As Byte Dim _weekday As Byte Dim _day As Byte Dim _month As Byte Dim _year As Byte Dim Ds1307w As Byte Dim Ds1307r As Byte Dim Stunde As Byte Dim Minute As Byte Dim Sekunde As Byte 'Adresse der DS1307 Ds1307w = &HD0 'Schreibadresse der RTC Ds1307r = &HD1 'Leseadresse der RTC 'Interrups aktivieren Enable Interrupts 'Interrupts einstellen On Int2 Ds1307_int Config Int2 = Rising Enable Int2 'Uhrzeit voreinstellen _hour = 16 _min = 01 _sec = 00 'Call Settime Call Enable_sqw 'SQW der RTC aktivieren Do 'Call Uhrzeit Porta = Zaehler 'Porta = Stunde 'Portd = Minute Wait 1 Loop End '------------------------------------------------------------------------------ 'RTC auslesen Sub Uhrzeit I2cstart I2cwbyte Ds1307w ' Schreibadresse senden I2cwbyte 0 ' Startadresse auf Register 0 setzen I2cstart I2cwbyte Ds1307r ' Adresse übermitteln I2crbyte Sekunde , Ack I2crbyte Minute , Ack I2crbyte Stunde , Ack I2crbyte _weekday , Ack I2crbyte _day , Ack I2crbyte _month , Ack I2crbyte _year , Nack I2cstop End Sub '------------------------------------------------------------------------------ Sub Read_dcf Return End Sub '------------------------------------------------------------------------------ Sub Enable_sqw I2cstart I2cwbyte &HD0 I2cwbyte 7 I2cwbyte &B00010001 I2cstop End Sub '------------------------------------------------------------------------------ Ds1307_int: Incr Zaehler Return '------------------------------------------------------------------------------ Sub Settime _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart I2cwbyte Ds1307w I2cwbyte 0 I2cwbyte _sec I2cwbyte _min I2cwbyte _hour I2cstop End Sub '------------------------------------------------------------------------------
Kann mir da jemand helfen (ist sicher wieder was total banales -.-)?
Danke schonmal!







Zitieren

Lesezeichen