Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package SysTick;
- import static org.junit.Assert.assertEquals;
- //import java.util.ArrayList;
- public class SysTick implements Cortex_M0_SysTick_Interface {
- private int rvr; // rejestr przeładowania
- private int cvr; // rejestr wartości bieżącje
- private int csr; // rejestr stanu
- public SysTick() {
- // Inicjalizacja pĂłl
- this.rvr = 0;
- this.cvr = 0;
- this.csr = 0;
- // this.countFlag = false;
- // this.Clksrc = false; // Domyślnie źródło zegara to zewnętrzne
- // this.Tickint= false;
- // this.Enable = false;
- }
- public static void main(String[]args) {
- SysTick cortexM01 = new SysTick();
- cortexM01.setSourceInternal();
- cortexM01.setRVR(1);
- cortexM01.setCVR(4);
- cortexM01.setEnable();
- cortexM01.tickInternal();
- // assertEquals(1, cortexM01.getCVR());
- cortexM01.setRVR(0);
- cortexM01.tickInternal();
- // assertEquals(0, cortexM01.getCVR());
- // assertEquals(0, cortexM01.getRVR());
- cortexM01.tickInternal();
- // assertEquals(0, cortexM01.getCVR());
- // assertEquals(0, cortexM01.getRVR());
- cortexM01.setRVR(2);
- cortexM01.tickInternal();
- // assertEquals(0, cortexM01.getCVR()); ten nie dziala
- // assertEquals(2, cortexM01.getRVR());
- cortexM01.setEnable();
- cortexM01.tickInternal();
- // assertEquals(2, cortexM01.getCVR());
- cortexM01.tickInternal();
- // assertEquals(1, cortexM01.getCVR());
- cortexM01.tickInternal();
- // assertEquals(0, cortexM01.getCVR());
- }
- public void tickInternal() {
- // TODO Auto-generated method stub
- // zegar wewnetrzny
- if ((csr & (1 << 2))!=0) {
- if ((csr & (1 << 0))!=0) {
- cvr--;
- if (cvr == 0) {
- if(rvr==0) {
- csr &= ~(1 << 0);
- }
- csr |= (1 << 16); // Ustawia bit COUNTFLAG
- }
- else if(cvr < 0){
- cvr=rvr;
- }
- }
- }
- }
- @Override
- public void tickExternal() {
- //zergar zewnetrzny
- if ((csr & (1 << 2))==0) {
- if ((csr & (1 << 0))!=0) {
- cvr--;
- if (cvr == 0) {
- if(rvr==0) {
- csr &= ~(1 << 0);
- }
- csr |= (1 << 16); // Ustawia bit COUNTFLAG
- }
- else if(cvr < 0){
- cvr=rvr;
- }
- }
- }
- }
- @Override
- public void setRVR(int value) {
- // TODO Auto-generated method stub
- //System_RVR = 0 timer = 0
- //wyłącza timer, nawet jeśli timer jest włączony
- // if(value == 0) {
- // csr &= ~(1<<0);
- // }
- rvr = value & 0xFFFFFF;
- }
- @Override
- public void setCVR(int value) {
- // TODO Auto-generated method stub
- /*
- * wartoś system CVR jest niezna po resecie
- */
- // Ograniczenie do 24 bitów
- cvr =0x000000;
- csr &= ~(1<<16);
- }
- @Override
- public void setCSR(int value) {
- // TODO Auto-generated method stub
- csr=value&0xFFFFFF;
- // csr &= ~(1 <<16);
- // Enable = (value & (1 << 0)) != 0;
- // Tickint = (value & (1 << 1)) != 0;
- // Clksrc = (value & (1 << 2)) != 0;
- // countFlag= (value & (1 << 16))!= 0;
- // csr = csr &~(1<<16);
- }
- @Override
- public void reset() {
- // TODO Auto-generated method stub
- csr = 0x000000;
- }
- @Override
- public void setEnable() {
- // TODO Auto-generated method stub
- // Ustaw bit ENABLE
- //csr = csr | (1 << 0);
- csr |= (1 << 0);
- }
- @Override
- public void setDisable() {
- // TODO Auto-generated method stub
- // Wyzeruj bit ENABLE
- csr &= ~(1 << 0);
- }
- @Override
- public void setSourceExternal() {
- // TODO Auto-generated method stub
- // Wyzeruj bit ENABLE
- // csr |= (1 << 2);
- csr &= ~(1 << 2);
- }
- @Override
- public void setSourceInternal() {
- // TODO Auto-generated method stub
- // Ustaw bit CLKSRC
- csr |= (1 << 2);
- // csr &= ~(1 << 2);
- }
- @Override
- public void setInterruptEnable() {
- // TODO Auto-generated method stub
- // Ustaw bit TICKINT
- csr |= (1 << 1);
- }
- @Override
- public void setInterruptDisable() {
- // TODO Auto-generated method stub
- // Wyzeruj bit TICKINT
- csr &= ~(1 << 1);
- }
- @Override
- public int getCVR() {
- // TODO Auto-generated method stub
- // Odczyt z rejestru CV (0xE000E018)
- return cvr;
- }
- @Override
- public int getRVR() {
- // TODO Auto-generated method stub
- // Odczyt z rejestru RV (0xE000E014)
- return rvr;
- }
- @Override
- public int getCSR() {
- // TODO Auto-generated method stub
- // Aktualizuj stan rejestrĂłw przed odczytem
- int temp = csr;
- csr &= ~(1 <<16);
- return temp;
- }
- @Override
- public boolean getEnabled() {
- // TODO Auto-generated method stub
- // Sprawdź bit ENABLE (0xE000E010)
- int temp = (csr&(1<<0));
- csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean getInterrupt() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<1));
- csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean getSource() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<2));
- csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean getCountFlag() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<16));
- csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean isCountFlag() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<16));
- // csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean isEnableFlag() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<0));
- // csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean isInterruptFlag() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<1));
- // csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- @Override
- public boolean isSourceFlag() {
- // TODO Auto-generated method stub
- int temp = (csr&(1<<2));
- // csr &= ~(1<<16);
- if (temp<=0) return false;
- else
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment