// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { lesen_kanal_1(); zwischenspeichern(); auf_SD_karte_schreiben(); } void auf_SD_karte_schreiben(void) { if (t==512) { if ((P2IN & BIT7) == BIT7) //prüft, ob SD-Karte eingesteckt ist { Fehlermeldung_ausgeben(); mmcWriteSector(sector,mmc_buffer); t=0; sector=sector+1; } else mmcWriteSector(sector,mmc_buffer); t=0; messende(); sector=sector+1; } } void zwischenspeichern(void) //eine Zwischentabelle wird im Arbeitsspeicher // (RAM ) angelegt { mmc_buffer[t]= K1OB; t=t+1; mmc_buffer[t]= K1MB; t=t+1; mmc_buffer[t]= K1UB; t=t+1; mmc_buffer[t]= 0xA3; // Platzhalter, damit 512/4 ohne Rest bleibt t=t+1; } void lesen_kanal_1(void) { K1UB=SPI_Config_CMD_16Bit(0xB900); K1MB=SPI_Config_CMD_16Bit(0xB800); K1OB=SPI_Config_CMD_16Bit(0xB700); //liest Kanal 1 aus Register 0x37 (unteres Byte) }