Ja genau so mach ichs...nur das ichs momentan noch nicht ins rtc rückspiele weils nix zum spielen gibt...nur ne 64 in hours....
Gebe es übern UART zurück die Debugausgaben, dürfte aber irrelevant sein. Events und Commands werden alle ausgeführt.
Ein einzelnes Read und Write funzt ja auch, also vom Prinzip her müsste es so passen?
So in DS1307C passiert das:
PHP Code:
ds1307_time_mem_t read_data;
command error_t Rtc.start(rtc_time_t *data){
...
call HplDS1307.open();
call HplDS1307.bulkRead(&read_data);
....
}
in HplDS1307C folgendes:
PHP Code:
command error_t HplDS1307.bulkRead(ds1307_time_mem_t *data) {
data->address=0x00;
if(opened==SUCCESS) {
atomic{
state=BULK_READ;
printf("Data: %p %d, %d, %d, %d\n", data, data->seconds, data->minutes, data->hour, data->date);
call I2CPacket.write(I2C_START, 0x68, 7, (uint8_t*) data);
}
}
return SUCCESS;
}
async event void I2CPacket.writeDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data) {
if(state==BULK_READ) {
printf("Addr: %i\n", addr);
call I2CPacket.read(I2C_START | I2C_STOP, addr, 8, (uint8_t*)(data)+1);
}
}
async event void I2CPacket.readDone(error_t error, uint16_t addr, uint8_t length, uint8_t* data) {
if(state==BULKREAD){
if(error==SUCCESS){
printf("Data1: %d %d, %d, %d, %d\n", data[0], data[1], data[2], data[3], data[4]);
//signal HplDS1307.bulkReadReady();
}
}
}
Eventuell entdeckt ja jemand etwas
Die letzten 5 Std damit zugebracht und nix geht^^
lg
Bookmarks