Recent

Author Topic: ARM STM32 defination Files fro Mikroe or other  (Read 3707 times)

coradi

  • Full Member
  • ***
  • Posts: 148
ARM STM32 defination Files fro Mikroe or other
« on: January 15, 2019, 10:58:27 pm »
Is there any Idea or way, that I can use the defination files from Mikroe compiler or other for Freepascal?

So that I can write/use
PortB.1:=0; //To enable Port B Pin 1 as example
Amstrad Schneider CPC 6128
AVR8/ARM(STM32)

Laksen

  • Hero Member
  • *****
  • Posts: 724
    • J-Software
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #1 on: January 16, 2019, 12:01:15 am »
No. Not like that directly at least.
1 is not a valid identifier so will not be valid in real pascal

jamie

  • Hero Member
  • *****
  • Posts: 6090
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #2 on: January 16, 2019, 01:33:20 am »
as @Laksen said, not directly but it would be nice if the compiler could do that directly with simply types.

A_BYTE.0 := 1; //Set bit 0;

But we are wishing now aren't we!  :D

You could write a Class that has a "default" property array and the setter and getter function.

 it would look like this when used.

 Portb[0] := 1;

 But in the end, you'll still need to do a little conversion. Just write a utility all for it.




The only true wisdom is knowing you know nothing

coradi

  • Full Member
  • ***
  • Posts: 148
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #3 on: January 16, 2019, 06:05:15 am »
Maybe there is a smart way to use ready Files like this..
I deletet some, beause the 20000 character limit

Code: Pascal  [Select][+][-]
  1. unit ATmega32;
  2.  
  3. // Individual bit access constants
  4. const B0 = 0;
  5. const B1 = 1;
  6. const B2 = 2;
  7. const B3 = 3;
  8. const B4 = 4;
  9. const B5 = 5;
  10. const B6 = 6;
  11. const B7 = 7;
  12.  
  13. const __FLASH_SIZE : dword = 0x00008000;
  14.  
  15. // Flash page size in program words
  16. const __FLASH_PAGE_SIZE = 64;
  17.  
  18. const ICS_AUTO                  =     0;
  19. const ICS_OFF                   =     3;
  20.  
  21. // Addres offset from Output and Input (port) registers
  22. const OUTPUT_TO_INPUT_OFFSET : short    =     -2;
  23.  
  24. var
  25. // Rx space registers
  26.   R0  : byte; absolute 0x00; rx; sfr;
  27.   R1  : byte; absolute 0x01; rx; sfr;
  28.   R2  : byte; absolute 0x02; rx; sfr;
  29.   R3  : byte; absolute 0x03; rx; sfr;
  30.   R4  : byte; absolute 0x04; rx; sfr;
  31.   R5  : byte; absolute 0x05; rx; sfr;
  32.   R6  : byte; absolute 0x06; rx; sfr;
  33.   R7  : byte; absolute 0x07; rx; sfr;
  34.   R8  : byte; absolute 0x08; rx; sfr;
  35.   R9  : byte; absolute 0x09; rx; sfr;
  36.   R10 : byte; absolute 0x0A; rx; sfr;
  37.   R11 : byte; absolute 0x0B; rx; sfr;
  38.   R12 : byte; absolute 0x0C; rx; sfr;
  39.   R13 : byte; absolute 0x0D; rx; sfr;
  40.   R14 : byte; absolute 0x0E; rx; sfr;
  41.   R15 : byte; absolute 0x0F; rx; sfr;
  42.   R16 : byte; absolute 0x10; rx; sfr;
  43.   R17 : byte; absolute 0x11; rx; sfr;
  44.   R18 : byte; absolute 0x12; rx; sfr;
  45.   R19 : byte; absolute 0x13; rx; sfr;
  46.   R20 : byte; absolute 0x14; rx; sfr;
  47.   R21 : byte; absolute 0x15; rx; sfr;
  48.   R22 : byte; absolute 0x16; rx; sfr;
  49.   R23 : byte; absolute 0x17; rx; sfr;
  50.   R24 : byte; absolute 0x18; rx; sfr;
  51.   R25 : byte; absolute 0x19; rx; sfr;
  52.   R26 : byte; absolute 0x1A; rx; sfr;
  53.   R27 : byte; absolute 0x1B; rx; sfr;
  54.   R28 : byte; absolute 0x1C; rx; sfr;
  55.   R29 : byte; absolute 0x1D; rx; sfr;
  56.   R30 : byte; absolute 0x1E; rx; sfr;
  57.   R31 : byte; absolute 0x1F; rx; sfr;
  58.  
  59. // X, Y and Z registers
  60.   XL : byte; absolute 0x1A; rx; sfr;
  61.   XH : byte; absolute 0x1B; rx; sfr;
  62.   YL : byte; absolute 0x1C; rx; sfr;
  63.   YH : byte; absolute 0x1D; rx; sfr;
  64.   ZL : byte; absolute 0x1E; rx; sfr;
  65.   ZH : byte; absolute 0x1F; rx; sfr;
  66.   X  : word; absolute 0x1A; rx; sfr;
  67.   Y  : word; absolute 0x1C; rx; sfr;
  68.   Z  : word; absolute 0x1E; rx; sfr;
  69.  
  70. const IVT_ADDR_RESET            = 0x0000;
  71. const IVT_ADDR_INT0             = 0x0002;
  72. const IVT_ADDR_INT1             = 0x0004;
  73. const IVT_ADDR_INT2             = 0x0006;
  74. const IVT_ADDR_TIMER2_COMP      = 0x0008;
  75. const IVT_ADDR_TIMER2_OVF       = 0x000A;
  76. const IVT_ADDR_TIMER1_CAPT      = 0x000C;
  77. const IVT_ADDR_TIMER1_COMPA     = 0x000E;
  78. const IVT_ADDR_TIMER1_COMPB     = 0x0010;
  79. const IVT_ADDR_TIMER1_OVF       = 0x0012;
  80. const IVT_ADDR_TIMER0_COMP      = 0x0014;
  81. const IVT_ADDR_TIMER0_OVF       = 0x0016;
  82. const IVT_ADDR_SPI__STC         = 0x0018;
  83. const IVT_ADDR_USART__RXC       = 0x001A;
  84. const IVT_ADDR_USART__UDRE      = 0x001C;
  85. const IVT_ADDR_USART__TXC       = 0x001E;
  86. const IVT_ADDR_ADC              = 0x0020;
  87. const IVT_ADDR_EE_RDY           = 0x0022;
  88. const IVT_ADDR_ANA_COMP         = 0x0024;
  89. const IVT_ADDR_TWI              = 0x0026;
  90. const IVT_ADDR_SPM_RDY          = 0x0028;
  91.  
  92.  
  93. var SREG : byte; absolute 0x5F; io; volatile; sfr;
  94.     var   SREG_C_bit : sbit at SREG.B0;
  95.     const SREG_C = 0; register;
  96.     var   SREG_Z_bit : sbit at SREG.B1;
  97.     const SREG_Z = 1; register;
  98.     var   SREG_N_bit : sbit at SREG.B2;
  99.     const SREG_N = 2; register;
  100.     var   SREG_V_bit : sbit at SREG.B3;
  101.     const SREG_V = 3; register;
  102.     var   SREG_S_bit : sbit at SREG.B4;
  103.     const SREG_S = 4; register;
  104.     var   SREG_H_bit : sbit at SREG.B5;
  105.     const SREG_H = 5; register;
  106.     var   SREG_T_bit : sbit at SREG.B6;
  107.     const SREG_T = 6; register;
  108.     var   SREG_I_bit : sbit at SREG.B7;
  109.     const SREG_I = 7; register;
  110. var PINA : byte; absolute 0x39; io; volatile; sfr;
  111.     var   PINA0_bit : sbit at PINA.B0;
  112.     const PINA0 = 0; register;
  113.     var   PINA1_bit : sbit at PINA.B1;
  114.     const PINA1 = 1; register;
  115.     var   PINA2_bit : sbit at PINA.B2;
  116.     const PINA2 = 2; register;
  117.     var   PINA3_bit : sbit at PINA.B3;
  118.     const PINA3 = 3; register;
  119.     var   PINA4_bit : sbit at PINA.B4;
  120.     const PINA4 = 4; register;
  121.     var   PINA5_bit : sbit at PINA.B5;
  122.     const PINA5 = 5; register;
  123.     var   PINA6_bit : sbit at PINA.B6;
  124.     const PINA6 = 6; register;
  125.     var   PINA7_bit : sbit at PINA.B7;
  126.     const PINA7 = 7; register;
  127.  
  128. var PORTB : byte; absolute 0x38; io; sfr;
  129.     var   PORTB0_bit : sbit at PORTB.B0;
  130.     const PORTB0 = 0; register;
  131.     var   PORTB1_bit : sbit at PORTB.B1;
  132.     const PORTB1 = 1; register;
  133.     var   PORTB2_bit : sbit at PORTB.B2;
  134.     const PORTB2 = 2; register;
  135.     var   PORTB3_bit : sbit at PORTB.B3;
  136.     const PORTB3 = 3; register;
  137.     var   PORTB4_bit : sbit at PORTB.B4;
  138.     const PORTB4 = 4; register;
  139.     var   PORTB5_bit : sbit at PORTB.B5;
  140.     const PORTB5 = 5; register;
  141.     var   PORTB6_bit : sbit at PORTB.B6;
  142.     const PORTB6 = 6; register;
  143.     var   PORTB7_bit : sbit at PORTB.B7;
  144.     const PORTB7 = 7; register;
  145.  
  146. var DDRB : byte; absolute 0x37; io; sfr;
  147.     var   DDB0_bit : sbit at DDRB.B0;
  148.     const DDB0 = 0; register;
  149.     var   DDB1_bit : sbit at DDRB.B1;
  150.     const DDB1 = 1; register;
  151.     var   DDB2_bit : sbit at DDRB.B2;
  152.     const DDB2 = 2; register;
  153.     var   DDB3_bit : sbit at DDRB.B3;
  154.     const DDB3 = 3; register;
  155.     var   DDB4_bit : sbit at DDRB.B4;
  156.     const DDB4 = 4; register;
  157.     var   DDB5_bit : sbit at DDRB.B5;
  158.     const DDB5 = 5; register;
  159.     var   DDB6_bit : sbit at DDRB.B6;
  160.     const DDB6 = 6; register;
  161.     var   DDB7_bit : sbit at DDRB.B7;
  162.     const DDB7 = 7; register;
  163.  
  164. var PINB : byte; absolute 0x36; io; volatile; sfr;
  165.     var   PINB0_bit : sbit at PINB.B0;
  166.     const PINB0 = 0; register;
  167.     var   PINB1_bit : sbit at PINB.B1;
  168.     const PINB1 = 1; register;
  169.     var   PINB2_bit : sbit at PINB.B2;
  170.     const PINB2 = 2; register;
  171.     var   PINB3_bit : sbit at PINB.B3;
  172.     const PINB3 = 3; register;
  173.     var   PINB4_bit : sbit at PINB.B4;
  174.     const PINB4 = 4; register;
  175.     var   PINB5_bit : sbit at PINB.B5;
  176.     const PINB5 = 5; register;
  177.     var   PINB6_bit : sbit at PINB.B6;
  178.     const PINB6 = 6; register;
  179.     var   PINB7_bit : sbit at PINB.B7;
  180.     const PINB7 = 7; register;
  181.  
  182. var PORTC : byte; absolute 0x35; io; sfr;
  183.     var   PORTC0_bit : sbit at PORTC.B0;
  184.     const PORTC0 = 0; register;
  185.     var   PORTC1_bit : sbit at PORTC.B1;
  186.     const PORTC1 = 1; register;
  187.     var   PORTC2_bit : sbit at PORTC.B2;
  188.     const PORTC2 = 2; register;
  189.     var   PORTC3_bit : sbit at PORTC.B3;
  190.     const PORTC3 = 3; register;
  191.     var   PORTC4_bit : sbit at PORTC.B4;
  192.     const PORTC4 = 4; register;
  193.     var   PORTC5_bit : sbit at PORTC.B5;
  194.     const PORTC5 = 5; register;
  195.     var   PORTC6_bit : sbit at PORTC.B6;
  196.     const PORTC6 = 6; register;
  197.     var   PORTC7_bit : sbit at PORTC.B7;
  198.     const PORTC7 = 7; register;
  199.  
  200. var DDRC : byte; absolute 0x34; io; sfr;
  201.     var   DDC0_bit : sbit at DDRC.B0;
  202.     const DDC0 = 0; register;
  203.     var   DDC1_bit : sbit at DDRC.B1;
  204.     const DDC1 = 1; register;
  205.     var   DDC2_bit : sbit at DDRC.B2;
  206.     const DDC2 = 2; register;
  207.     var   DDC3_bit : sbit at DDRC.B3;
  208.     const DDC3 = 3; register;
  209.     var   DDC4_bit : sbit at DDRC.B4;
  210.     const DDC4 = 4; register;
  211.     var   DDC5_bit : sbit at DDRC.B5;
  212.     const DDC5 = 5; register;
  213.     var   DDC6_bit : sbit at DDRC.B6;
  214.     const DDC6 = 6; register;
  215.     var   DDC7_bit : sbit at DDRC.B7;
  216.     const DDC7 = 7; register;
  217. var TCCR1B : byte; absolute 0x4E; io; sfr;
  218.     var   CS10_bit : sbit at TCCR1B.B0;
  219.     const CS10 = 0; register;
  220.     var   CS11_bit : sbit at TCCR1B.B1;
  221.     const CS11 = 1; register;
  222.     var   CS12_bit : sbit at TCCR1B.B2;
  223.     const CS12 = 2; register;
  224.     var   WGM12_bit : sbit at TCCR1B.B3;
  225.     const WGM12 = 3; register;
  226.     var   WGM13_bit : sbit at TCCR1B.B4;
  227.     const WGM13 = 4; register;
  228.     var   ICES1_bit : sbit at TCCR1B.B6;
  229.     const ICES1 = 6; register;
  230.     var   ICNC1_bit : sbit at TCCR1B.B7;
  231.     const ICNC1 = 7; register;
  232.  
  233. var TCNT1H : byte; absolute 0x4D; io; volatile; sfr;
  234.     var   TCNT1H0_bit : sbit at TCNT1H.B0;
  235.     const TCNT1H0 = 0; register;
  236.     var   TCNT1H1_bit : sbit at TCNT1H.B1;
  237.     const TCNT1H1 = 1; register;
  238.     var   TCNT1H2_bit : sbit at TCNT1H.B2;
  239.     const TCNT1H2 = 2; register;
  240.     var   TCNT1H3_bit : sbit at TCNT1H.B3;
  241.     const TCNT1H3 = 3; register;
  242.     var   TCNT1H4_bit : sbit at TCNT1H.B4;
  243.     const TCNT1H4 = 4; register;
  244.     var   TCNT1H5_bit : sbit at TCNT1H.B5;
  245.     const TCNT1H5 = 5; register;
  246.     var   TCNT1H6_bit : sbit at TCNT1H.B6;
  247.     const TCNT1H6 = 6; register;
  248.     var   TCNT1H7_bit : sbit at TCNT1H.B7;
  249.     const TCNT1H7 = 7; register;
  250.  
  251. var TCNT1L : byte; absolute 0x4C; io; volatile; sfr;
  252.     var   TCNT1L0_bit : sbit at TCNT1L.B0;
  253.     const TCNT1L0 = 0; register;
  254.     var   TCNT1L1_bit : sbit at TCNT1L.B1;
  255.     const TCNT1L1 = 1; register;
  256.     var   TCNT1L2_bit : sbit at TCNT1L.B2;
  257.     const TCNT1L2 = 2; register;
  258.     var   TCNT1L3_bit : sbit at TCNT1L.B3;
  259.     const TCNT1L3 = 3; register;
  260.     var   TCNT1L4_bit : sbit at TCNT1L.B4;
  261.     const TCNT1L4 = 4; register;
  262.     var   TCNT1L5_bit : sbit at TCNT1L.B5;
  263.     const TCNT1L5 = 5; register;
  264.     var   TCNT1L6_bit : sbit at TCNT1L.B6;
  265.     const TCNT1L6 = 6; register;
  266.     var   TCNT1L7_bit : sbit at TCNT1L.B7;
  267.     const TCNT1L7 = 7; register;
  268.  
  269. var OCR1AH : byte; absolute 0x4B; io; sfr;
  270.     var   OCR1AH0_bit : sbit at OCR1AH.B0;
  271.     const OCR1AH0 = 0; register;
  272.     var   OCR1AH1_bit : sbit at OCR1AH.B1;
  273.     const OCR1AH1 = 1; register;
  274.     var   OCR1AH2_bit : sbit at OCR1AH.B2;
  275.     const OCR1AH2 = 2; register;
  276.     var   OCR1AH3_bit : sbit at OCR1AH.B3;
  277.     const OCR1AH3 = 3; register;
  278.     var   OCR1AH4_bit : sbit at OCR1AH.B4;
  279.     const OCR1AH4 = 4; register;
  280.     var   OCR1AH5_bit : sbit at OCR1AH.B5;
  281.     const OCR1AH5 = 5; register;
  282.     var   OCR1AH6_bit : sbit at OCR1AH.B6;
  283.     const OCR1AH6 = 6; register;
  284.     var   OCR1AH7_bit : sbit at OCR1AH.B7;
  285.     const OCR1AH7 = 7; register;
  286.  
  287. var OCR1AL : byte; absolute 0x4A; io; sfr;
  288.     var   OCR1AL0_bit : sbit at OCR1AL.B0;
  289.     const OCR1AL0 = 0; register;
  290.     var   OCR1AL1_bit : sbit at OCR1AL.B1;
  291.     const OCR1AL1 = 1; register;
  292.     var   OCR1AL2_bit : sbit at OCR1AL.B2;
  293.     const OCR1AL2 = 2; register;
  294.     var   OCR1AL3_bit : sbit at OCR1AL.B3;
  295.     const OCR1AL3 = 3; register;
  296.     var   OCR1AL4_bit : sbit at OCR1AL.B4;
  297.     const OCR1AL4 = 4; register;
  298.     var   OCR1AL5_bit : sbit at OCR1AL.B5;
  299.     const OCR1AL5 = 5; register;
  300.     var   OCR1AL6_bit : sbit at OCR1AL.B6;
  301.     const OCR1AL6 = 6; register;
  302.     var   OCR1AL7_bit : sbit at OCR1AL.B7;
  303.     const OCR1AL7 = 7; register;
  304.  
  305. var OCR1BH : byte; absolute 0x49; io; sfr;
  306.     var   OCR1BH0_bit : sbit at OCR1BH.B0;
  307.     const OCR1BH0 = 0; register;
  308.     var   OCR1BH1_bit : sbit at OCR1BH.B1;
  309.     const OCR1BH1 = 1; register;
  310.     var   OCR1BH2_bit : sbit at OCR1BH.B2;
  311.     const OCR1BH2 = 2; register;
  312.     var   OCR1BH3_bit : sbit at OCR1BH.B3;
  313.     const OCR1BH3 = 3; register;
  314.     var   OCR1BH4_bit : sbit at OCR1BH.B4;
  315.     const OCR1BH4 = 4; register;
  316.     var   OCR1BH5_bit : sbit at OCR1BH.B5;
  317.     const OCR1BH5 = 5; register;
  318.     var   OCR1BH6_bit : sbit at OCR1BH.B6;
  319.     const OCR1BH6 = 6; register;
  320.     var   OCR1BH7_bit : sbit at OCR1BH.B7;
  321.     const OCR1BH7 = 7; register;
  322.  
  323. var OCR1BL : byte; absolute 0x48; io; sfr;
  324.     var   OCR1BL0_bit : sbit at OCR1BL.B0;
  325.     const OCR1BL0 = 0; register;
  326.     var   OCR1BL1_bit : sbit at OCR1BL.B1;
  327.     const OCR1BL1 = 1; register;
  328.     var   OCR1BL2_bit : sbit at OCR1BL.B2;
  329.     const OCR1BL2 = 2; register;
  330.     var   OCR1BL3_bit : sbit at OCR1BL.B3;
  331.     const OCR1BL3 = 3; register;
  332.     var   OCR1BL4_bit : sbit at OCR1BL.B4;
  333.     const OCR1BL4 = 4; register;
  334.     var   OCR1BL5_bit : sbit at OCR1BL.B5;
  335.     const OCR1BL5 = 5; register;
  336.     var   OCR1BL6_bit : sbit at OCR1BL.B6;
  337.     const OCR1BL6 = 6; register;
  338.     var   OCR1BL7_bit : sbit at OCR1BL.B7;
  339.     const OCR1BL7 = 7; register;
  340.  
  341.  
  342. var PORTC : byte; absolute 0x35; io; sfr;
  343.     var   PORTC0_bit : sbit at PORTC.B0;
  344.     const PORTC0 = 0; register;
  345.     var   PORTC1_bit : sbit at PORTC.B1;
  346.     const PORTC1 = 1; register;
  347.     var   PORTC2_bit : sbit at PORTC.B2;
  348.     const PORTC2 = 2; register;
  349.     var   PORTC3_bit : sbit at PORTC.B3;
  350.     const PORTC3 = 3; register;
  351.     var   PORTC4_bit : sbit at PORTC.B4;
  352.     const PORTC4 = 4; register;
  353.     var   PORTC5_bit : sbit at PORTC.B5;
  354.     const PORTC5 = 5; register;
  355.     var   PORTC6_bit : sbit at PORTC.B6;
  356.     const PORTC6 = 6; register;
  357.     var   PORTC7_bit : sbit at PORTC.B7;
  358.     const PORTC7 = 7; register;
  359.  
  360. var DDRC : byte; absolute 0x34; io; sfr;
  361.     var   DDC0_bit : sbit at DDRC.B0;
  362.     const DDC0 = 0; register;
  363.     var   DDC1_bit : sbit at DDRC.B1;
  364.     const DDC1 = 1; register;
  365.     var   DDC2_bit : sbit at DDRC.B2;
  366.     const DDC2 = 2; register;
  367.     var   DDC3_bit : sbit at DDRC.B3;
  368.     const DDC3 = 3; register;
  369.     var   DDC4_bit : sbit at DDRC.B4;
  370.     const DDC4 = 4; register;
  371.     var   DDC5_bit : sbit at DDRC.B5;
  372.     const DDC5 = 5; register;
  373.     var   DDC6_bit : sbit at DDRC.B6;
  374.     const DDC6 = 6; register;
  375.     var   DDC7_bit : sbit at DDRC.B7;
  376.     const DDC7 = 7; register;
  377.  
  378. var PINC : byte; absolute 0x33; io; volatile; sfr;
  379.     var   PINC0_bit : sbit at PINC.B0;
  380.     const PINC0 = 0; register;
  381.     var   PINC1_bit : sbit at PINC.B1;
  382.     const PINC1 = 1; register;
  383.     var   PINC2_bit : sbit at PINC.B2;
  384.     const PINC2 = 2; register;
  385.     var   PINC3_bit : sbit at PINC.B3;
  386.     const PINC3 = 3; register;
  387.     var   PINC4_bit : sbit at PINC.B4;
  388.     const PINC4 = 4; register;
  389.     var   PINC5_bit : sbit at PINC.B5;
  390.     const PINC5 = 5; register;
  391.     var   PINC6_bit : sbit at PINC.B6;
  392.     const PINC6 = 6; register;
  393.     var   PINC7_bit : sbit at PINC.B7;
  394.     const PINC7 = 7; register;
  395.  
  396. var PORTD : byte; absolute 0x32; io; sfr;
  397.     var   PORTD0_bit : sbit at PORTD.B0;
  398.     const PORTD0 = 0; register;
  399.     var   PORTD1_bit : sbit at PORTD.B1;
  400.     const PORTD1 = 1; register;
  401.     var   PORTD2_bit : sbit at PORTD.B2;
  402.     const PORTD2 = 2; register;
  403.     var   PORTD3_bit : sbit at PORTD.B3;
  404.     const PORTD3 = 3; register;
  405.     var   PORTD4_bit : sbit at PORTD.B4;
  406.     const PORTD4 = 4; register;
  407.     var   PORTD5_bit : sbit at PORTD.B5;
  408.     const PORTD5 = 5; register;
  409.     var   PORTD6_bit : sbit at PORTD.B6;
  410.     const PORTD6 = 6; register;
  411.     var   PORTD7_bit : sbit at PORTD.B7;
  412.     const PORTD7 = 7; register;
  413.  
  414. var DDRD : byte; absolute 0x31; io; sfr;
  415.     var   DDD0_bit : sbit at DDRD.B0;
  416.     const DDD0 = 0; register;
  417.     var   DDD1_bit : sbit at DDRD.B1;
  418.     const DDD1 = 1; register;
  419.     var   DDD2_bit : sbit at DDRD.B2;
  420.     const DDD2 = 2; register;
  421.     var   DDD3_bit : sbit at DDRD.B3;
  422.     const DDD3 = 3; register;
  423.     var   DDD4_bit : sbit at DDRD.B4;
  424.     const DDD4 = 4; register;
  425.     var   DDD5_bit : sbit at DDRD.B5;
  426.     const DDD5 = 5; register;
  427.     var   DDD6_bit : sbit at DDRD.B6;
  428.     const DDD6 = 6; register;
  429.     var   DDD7_bit : sbit at DDRD.B7;
  430.     const DDD7 = 7; register;
  431.  
  432. var PIND : byte; absolute 0x30; io; volatile; sfr;
  433.     var   PIND0_bit : sbit at PIND.B0;
  434.     const PIND0 = 0; register;
  435.     var   PIND1_bit : sbit at PIND.B1;
  436.     const PIND1 = 1; register;
  437.     var   PIND2_bit : sbit at PIND.B2;
  438.     const PIND2 = 2; register;
  439.     var   PIND3_bit : sbit at PIND.B3;
  440.     const PIND3 = 3; register;
  441.     var   PIND4_bit : sbit at PIND.B4;
  442.     const PIND4 = 4; register;
  443.     var   PIND5_bit : sbit at PIND.B5;
  444.     const PIND5 = 5; register;
  445.     var   PIND6_bit : sbit at PIND.B6;
  446.     const PIND6 = 6; register;
  447.     var   PIND7_bit : sbit at PIND.B7;
  448.     const PIND7 = 7; register;
  449.  
  450. var SPDR : byte; absolute 0x2F; io; volatile; sfr;
  451.     var   SPDR0_bit : sbit at SPDR.B0;
  452.     const SPDR0 = 0; register;
  453.     var   SPDR1_bit : sbit at SPDR.B1;
  454.     const SPDR1 = 1; register;
  455.     var   SPDR2_bit : sbit at SPDR.B2;
  456.     const SPDR2 = 2; register;
  457.     var   SPDR3_bit : sbit at SPDR.B3;
  458.     const SPDR3 = 3; register;
  459.     var   SPDR4_bit : sbit at SPDR.B4;
  460.     const SPDR4 = 4; register;
  461.     var   SPDR5_bit : sbit at SPDR.B5;
  462.     const SPDR5 = 5; register;
  463.     var   SPDR6_bit : sbit at SPDR.B6;
  464.     const SPDR6 = 6; register;
  465.     var   SPDR7_bit : sbit at SPDR.B7;
  466.     const SPDR7 = 7; register;
  467.  
  468. var SPSR : byte; absolute 0x2E; io; volatile; sfr;
  469.     var   SPI2X_bit : sbit at SPSR.B0;
  470.     const SPI2X = 0; register;
  471.     var   WCOL_bit : sbit at SPSR.B6;
  472.     const WCOL = 6; register;
  473.     var   SPIF_bit : sbit at SPSR.B7;
  474.     const SPIF = 7; register;
  475.  
  476. var SPCR : byte; absolute 0x2D; io; sfr;
  477.     var   SPR0_bit : sbit at SPCR.B0;
  478.     const SPR0 = 0; register;
  479.     var   SPR1_bit : sbit at SPCR.B1;
  480.     const SPR1 = 1; register;
  481.     var   CPHA_bit : sbit at SPCR.B2;
  482.     const CPHA = 2; register;
  483.     var   CPOL_bit : sbit at SPCR.B3;
  484.     const CPOL = 3; register;
  485.     var   MSTR_bit : sbit at SPCR.B4;
  486.     const MSTR = 4; register;
  487.     var   DORD_bit : sbit at SPCR.B5;
  488.     const DORD = 5; register;
  489.     var   SPE_bit : sbit at SPCR.B6;
  490.     const SPE = 6; register;
  491.     var   SPIE_bit : sbit at SPCR.B7;
  492.     const SPIE = 7; register;
  493.  
  494. var UDR0 : byte; absolute 0x2C; io; volatile; sfr;
  495. var UDR : byte; absolute 0x2C; io; volatile; sfr;
  496.     var   UDR0__bit : sbit at UDR.B0;
  497.     const UDR0_ = 0; register;
  498.     var   UDR1_bit : sbit at UDR.B1;
  499.     const UDR1 = 1; register;
  500.     var   UDR2_bit : sbit at UDR.B2;
  501.     const UDR2 = 2; register;
  502.     var   UDR3_bit : sbit at UDR.B3;
  503.     const UDR3 = 3; register;
  504.     var   UDR4_bit : sbit at UDR.B4;
  505.     const UDR4 = 4; register;
  506.     var   UDR5_bit : sbit at UDR.B5;
  507.     const UDR5 = 5; register;
  508.     var   UDR6_bit : sbit at UDR.B6;
  509.     const UDR6 = 6; register;
  510.     var   UDR7_bit : sbit at UDR.B7;
  511.     const UDR7 = 7; register;
  512.  
  513. implementation
  514. end.
  515.  
« Last Edit: January 16, 2019, 06:11:09 am by coradi »
Amstrad Schneider CPC 6128
AVR8/ARM(STM32)

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #4 on: January 16, 2019, 09:32:43 am »
Is there any Idea or way, that I can use the defination files from Mikroe compiler or other for Freepascal?
I am not sure that license allows you to use Mikroelektronika compiler definition files in such a way. If not, then MCU datasheets are the safe way. If yes, then there is always a way.

So that I can write/use
PortB.1:=0; //To enable Port B Pin 1 as example

With BitHelpers you can use something like:
Code: Pascal  [Select][+][-]
  1. MyByte.Bit[2] := true;

Since it is open source project, you should not have much trouble to extend it to support this syntax:
Code: Pascal  [Select][+][-]
  1. MyByte.Bit[2] := 1;

For syntax like
Code: Pascal  [Select][+][-]
  1. MyByte.Bit2 := 1;
or
Code: Pascal  [Select][+][-]
  1. MyByte.B2 := 1;
you can take a look into these threads:
https://forum.lazarus.freepascal.org/index.php/topic,36374.0.html
https://forum.lazarus.freepascal.org/index.php/topic,38809.0.html

So not exactly the same syntax, but nothing that a simple search and replace can not solve.
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11383
  • FPC developer.
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #5 on: January 16, 2019, 09:37:40 am »
Note that library workarounds might not generate atomic bit manipulation instructions. This can cause problems if you set bits in registers from both an interrupt and a main program.

(at least for other Microchip architectures like pic32 and dspic)

coradi

  • Full Member
  • ***
  • Posts: 148
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #6 on: January 16, 2019, 09:42:33 am »
"I am not sure that license allows you to use"?
Where is the Problem?
The Idea is only, that Freepascal understood such files :-)
Everyboddy can download it itself from Mikro :-)
Then there i no problem for private use or not ;-)
Amstrad Schneider CPC 6128
AVR8/ARM(STM32)

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #7 on: January 16, 2019, 12:57:14 pm »
"I am not sure that license allows you to use"?
Where is the Problem?
Open help file of Mikroelektronika Pascal compiler, then look into Introduction / Software License Agreement. You will see that they hold copyright and under what terms you may use any part of their software.

The Idea is only, that Freepascal understood such files :-)
Everyboddy can download it itself from Mikro :-)
Then there i no problem for private use or not ;-)
Being able to download freely does not mean that you can do whatever you like with it. I am not a lawyer, but from what I read using it in a way you want smells like license violation. If you do it for your own private use that is your problem and not mine. But if you do it and then these files somehow end up in FPC, and it turns out that it is indeed a license violation (again, I am not a lawyer) then it becomes my problem and the problem of the FPC community, since that move could threaten FPC in general if Mikroelektronika enforces legal actions.

To make it more clear, we can all download community (or even paid) version of Delphi, but that does not mean that we can just copy/paste content of any source file found there. Compatibility is instead achieved at interface and syntax level rewriting things from scratch.

To be fair, if MCU define files can be treated as header files (that is a big if), it seams that Free Software Foundation does not treat them as viral:
https://softwareengineering.stackexchange.com/questions/216471/how-does-copyrights-apply-to-source-code-header-files#216480
However, that definitely does not apply to copyright holders who can enforce and license whatever they wish and treat their files differently. After looking at this, I guess that if automated code generator should be used over datasheets manual data extraction, then GNU tool chain MCU header files would be a much safer candidate.
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

Edson

  • Hero Member
  • *****
  • Posts: 1301
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #8 on: January 19, 2019, 05:54:32 pm »
Just for information. When implemented my PIC compiler (https://github.com/t-edson/PicPas) I implemented, in a native way, the syntax:

Code: Pascal  [Select][+][-]
  1. PORTB.bit1 := 0;
  2. PORTB.1 := 0;  //Just for compatibility
  3. word_variable.low.bit1 := 0;
  4.  

It's really useful when working with microcontrollers. But I had to create (with much help from people interested) many libraries to adapt to my compiler.
Lazarus 2.2.6 - FPC 3.2.2 - x86_64-win64 on Windows 10

jamie

  • Hero Member
  • *****
  • Posts: 6090
Re: ARM STM32 defination Files fro Mikroe or other
« Reply #9 on: January 19, 2019, 06:41:08 pm »
excluding "PORTB.1" the compiler can already have a Type Helper to allow the syntax you have
shown here.
The only true wisdom is knowing you know nothing

 

TinyPortal © 2005-2018