wiktortokumpel

systick

Nov 9th, 2023 (edited)
744
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.61 KB | None | 0 0
  1. package SysTick;
  2.  
  3. import static org.junit.Assert.assertEquals;
  4.  
  5. //import java.util.ArrayList;
  6.  
  7. public class SysTick implements Cortex_M0_SysTick_Interface {
  8.  
  9.     private int rvr; // rejestr przeładowania
  10.     private int cvr; // rejestr wartości bieżącje
  11.     private int csr; // rejestr stanu
  12.    
  13.      public SysTick() {
  14.             // Inicjalizacja pĂłl
  15.             this.rvr = 0;
  16.             this.cvr = 0;
  17.             this.csr = 0;
  18. //          this.countFlag = false;
  19. //          this.Clksrc = false; // DomyĹ›lnie ĹşrĂłdĹ‚o zegara to zewnÄ™trzne
  20. //          this.Tickint= false;
  21. //          this.Enable = false;
  22.         }
  23.     public static void main(String[]args)  {
  24.         SysTick cortexM01 = new SysTick();
  25.         cortexM01.setSourceInternal();
  26.         cortexM01.setRVR(1);
  27.         cortexM01.setCVR(4);
  28.         cortexM01.setEnable();
  29.         cortexM01.tickInternal();
  30. //        assertEquals(1, cortexM01.getCVR());
  31.         cortexM01.setRVR(0);
  32.         cortexM01.tickInternal();
  33. //        assertEquals(0, cortexM01.getCVR());
  34. //        assertEquals(0, cortexM01.getRVR());
  35.         cortexM01.tickInternal();
  36. //        assertEquals(0, cortexM01.getCVR());
  37. //        assertEquals(0, cortexM01.getRVR());
  38.         cortexM01.setRVR(2);
  39.         cortexM01.tickInternal();
  40. //        assertEquals(0, cortexM01.getCVR()); ten nie dziala
  41. //        assertEquals(2, cortexM01.getRVR());
  42.         cortexM01.setEnable();
  43.         cortexM01.tickInternal();
  44. //        assertEquals(2, cortexM01.getCVR());
  45.         cortexM01.tickInternal();
  46. //        assertEquals(1, cortexM01.getCVR());
  47.         cortexM01.tickInternal();
  48. //        assertEquals(0, cortexM01.getCVR());
  49.     }
  50.  
  51. public void tickInternal() {
  52.             // TODO Auto-generated method stub
  53.             // zegar wewnetrzny
  54.             if ((csr & (1 << 2))!=0) {
  55.                 if ((csr & (1 << 0))!=0) {
  56.                     cvr--;
  57.                     if (cvr == 0) {
  58.                         if(rvr==0) {
  59.                             csr &= ~(1 << 0);
  60.                         }
  61.                         csr |= (1 << 16); // Ustawia bit COUNTFLAG
  62.                     }
  63.                     else if(cvr < 0){
  64.                         cvr=rvr;
  65.                     }
  66.                 }
  67.             }
  68.         }
  69.  
  70.         @Override
  71.         public void tickExternal() {
  72.             //zergar zewnetrzny
  73.  
  74.             if ((csr & (1 << 2))==0) {
  75.                 if ((csr & (1 << 0))!=0) {
  76.                     cvr--;
  77.                     if (cvr == 0) {
  78.                         if(rvr==0) {
  79.                             csr &= ~(1 << 0);
  80.                         }
  81.                         csr |= (1 << 16); // Ustawia bit COUNTFLAG
  82.                     }
  83.                     else if(cvr < 0){
  84.                         cvr=rvr;
  85.                     }
  86.                 }
  87.             }
  88.     }
  89.     @Override
  90.     public void setRVR(int value) {
  91.         // TODO Auto-generated method stub
  92.         //System_RVR = 0 timer = 0
  93.         //wyłącza timer, nawet jeśli timer jest włączony
  94. //      if(value == 0) {
  95. //          csr &= ~(1<<0);
  96. //      }
  97.         rvr = value & 0xFFFFFF;
  98.     }
  99.    
  100.     @Override
  101.     public void setCVR(int value) {
  102.         // TODO Auto-generated method stub
  103.         /*
  104.          * wartoś system CVR jest niezna po resecie
  105.          */
  106.         // Ograniczenie do 24 bitów
  107.         cvr =0x000000;
  108.        
  109.         csr &= ~(1<<16);
  110.     }
  111.  
  112.     @Override
  113.     public void setCSR(int value) {
  114.         // TODO Auto-generated method stub
  115.         csr=value&0xFFFFFF;
  116. //      csr &= ~(1 <<16);
  117. //      Enable   = (value & (1 << 0)) != 0;
  118. //      Tickint  = (value & (1 << 1)) != 0;
  119. //      Clksrc   = (value & (1 << 2)) != 0;
  120. //      countFlag= (value & (1 << 16))!= 0;
  121. //      csr = csr &~(1<<16);
  122.        
  123.        
  124.        
  125.        
  126.     }
  127.  
  128.     @Override
  129.     public void reset() {
  130.         // TODO Auto-generated method stub
  131.         csr = 0x000000;
  132.     }
  133.  
  134.     @Override
  135.     public void setEnable() {
  136.         // TODO Auto-generated method stub
  137.         // Ustaw bit ENABLE
  138.         //csr = csr | (1 << 0);
  139.         csr |= (1 << 0);
  140.     }
  141.  
  142.     @Override
  143.     public void setDisable() {
  144.         // TODO Auto-generated method stub
  145.          // Wyzeruj bit ENABLE
  146.  
  147.         csr &= ~(1 << 0);
  148.     }
  149.  
  150.     @Override
  151.     public void setSourceExternal() {
  152.         // TODO Auto-generated method stub
  153.          // Wyzeruj bit ENABLE
  154. //      csr |= (1 << 2);
  155.         csr &= ~(1 << 2);
  156.     }
  157.  
  158.     @Override
  159.     public void setSourceInternal() {
  160.         // TODO Auto-generated method stub
  161.         // Ustaw bit CLKSRC
  162.         csr |= (1 << 2);
  163. //      csr &= ~(1 << 2);
  164.     }
  165.  
  166.     @Override
  167.     public void setInterruptEnable() {
  168.         // TODO Auto-generated method stub
  169.         // Ustaw bit TICKINT
  170.         csr |= (1 << 1);
  171.     }
  172.  
  173.     @Override
  174.     public void setInterruptDisable() {
  175.         // TODO Auto-generated method stub
  176.         // Wyzeruj bit TICKINT
  177.         csr &= ~(1 << 1);
  178.     }
  179.  
  180.     @Override
  181.     public int getCVR() {
  182.         // TODO Auto-generated method stub
  183.         // Odczyt z rejestru CV (0xE000E018)
  184.         return cvr;
  185.     }
  186.  
  187.     @Override
  188.     public int getRVR() {
  189.         // TODO Auto-generated method stub
  190.         // Odczyt z rejestru RV (0xE000E014)
  191.         return rvr;
  192.     }
  193.  
  194.     @Override
  195.     public int getCSR() {
  196.         // TODO Auto-generated method stub
  197.         // Aktualizuj stan rejestrĂłw przed odczytem
  198.         int temp = csr;
  199.         csr &= ~(1 <<16);
  200.        return temp;
  201.     }
  202.  
  203.     @Override
  204.     public boolean getEnabled() {
  205.         // TODO Auto-generated method stub
  206.         // Sprawdź bit ENABLE (0xE000E010)
  207.         int temp = (csr&(1<<0));
  208.         csr &= ~(1<<16);
  209.         if (temp<=0) return false;
  210.         else
  211.             return true;
  212.        
  213.        
  214.     }
  215.     @Override
  216.     public boolean getInterrupt() {
  217.         // TODO Auto-generated method stub
  218.         int temp = (csr&(1<<1));
  219.         csr &= ~(1<<16);
  220.         if (temp<=0) return false;
  221.         else
  222.             return true;
  223.     }
  224.  
  225.  
  226.     @Override
  227.     public boolean getSource() {
  228.         // TODO Auto-generated method stub
  229.         int temp = (csr&(1<<2));
  230.         csr &= ~(1<<16);
  231.         if (temp<=0) return false;
  232.         else
  233.             return true;
  234.        
  235.     }
  236.  
  237.     @Override
  238.     public boolean getCountFlag() {
  239.         // TODO Auto-generated method stub
  240.         int temp = (csr&(1<<16));
  241.         csr &= ~(1<<16);
  242.         if (temp<=0) return false;
  243.         else
  244.             return true;
  245.     }
  246.  
  247.     @Override
  248.     public boolean isCountFlag() {
  249.         // TODO Auto-generated method stub
  250.         int temp = (csr&(1<<16));
  251. //      csr &= ~(1<<16);
  252.         if (temp<=0) return false;
  253.         else
  254.             return true;
  255.     }
  256.     @Override
  257.     public boolean isEnableFlag() {
  258.         // TODO Auto-generated method stub
  259.         int temp = (csr&(1<<0));
  260. //      csr &= ~(1<<16);
  261.         if (temp<=0) return false;
  262.         else
  263.             return true;
  264.     }
  265.  
  266.  
  267.     @Override
  268.     public boolean isInterruptFlag() {
  269.         // TODO Auto-generated method stub
  270.         int temp = (csr&(1<<1));
  271. //      csr &= ~(1<<16);
  272.         if (temp<=0) return false;
  273.         else
  274.             return true;
  275.     }
  276.  
  277.     @Override
  278.     public boolean isSourceFlag() {
  279.         // TODO Auto-generated method stub
  280.        
  281.         int temp = (csr&(1<<2));
  282. //      csr &= ~(1<<16);
  283.         if (temp<=0) return false;
  284.         else
  285.             return true;
  286.     }
  287.  
  288. }
Advertisement
Add Comment
Please, Sign In to add comment