$hwstack, $swstack und $framesize optimal setzen

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • $hwstack, $swstack und $framesize optimal setzen

      Hallo,

      habe den ATMEGA8A im Einsatz und noch keine 700 Zeilen Code, bekomme schon die Meldung
      Error : 344 Line : 59 Program will overwrite bootloader [ 128 too long] , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\FP_TRIG.LBX

      Der Haeder schaut aktuell so aus:

      BASCOM Source Code

      1. $regfile = "m8adef.dat"
      2. $crystal = 7372800
      3. $baud = 115200
      4. $hwstack = 80
      5. $swstack = 80
      6. $framesize = 50
      7. '------------------------------------------------------------------------------
      8. '------------------------------------------------------------------------------
      9. On Urxc Rs232receive
      10. Enable Urxc 'Interrupt (Byte über USART erhalten) enabled
      11. Enable Interrupts ' Interrupts global zulassen
      12. '------------------------------------------------------------------------------
      13. '------------------------------------------------------------------------------
      14. Const Devicetype = "01"
      15. Const Lichtwelle = "19122201" + Devicetype
      16. Const Phiregel = "Alpha07"
      17. Dim Alpha1 As String * 3
      18. Dim Alpha2 As String * 3
      19. Dim Alpha3 As String * 3
      20. Dim Alpha4 As String * 3
      21. Dim Alpha5 As String * 3
      22. Dim Alpha6 As String * 3
      23. Dim Alpha7 As String * 3
      24. Dim Alpha8 As String * 3
      25. Dim OmegaZetaBeta1 As Byte
      26. Dim OmegaZetaBeta2 As Byte
      27. Dim OmegaZetaBeta3 As Byte
      28. Dim OmegaZetaBeta4 As Byte
      29. Dim OmegaZetaBeta5 As Byte
      30. Dim OmegaZetaBeta6 As Byte
      31. Dim OmegaZetaBeta7 As Byte
      32. Dim OmegaZetaBeta8 As Byte
      33. Dim Winkel_1 As Byte
      34. Dim Winkel_2 As Byte
      35. Dim Winkel_3 As Byte
      36. Dim Winkel_4 As Byte
      37. Dim Winkel_5 As Byte
      38. Dim Winkel_6 As Byte
      39. Dim Winkel_7 As Byte
      40. Dim Winkel_8 As Byte
      41. Dim Phi_1 As Bit
      42. Dim Phi_2 As Bit
      43. Dim Phi_3 as bit
      44. Dim Phi_4 as bit
      45. Dim Phi_5 as bit
      46. Dim Phi_6 as bit
      47. Dim Phi_7 as bit
      48. Dim Phi_8 as bit
      49. Dim Phi_9 as bit
      50. Dim Phi_10 as bit
      51. Dim Phi_11 as bit
      52. Dim Phi_12 as bit
      53. Dim Phi_13 as bit
      54. Dim Phi_14 as bit
      55. Dim Phi_15 as bit
      56. Dim Phi_16 as bit
      57. Dim Phi_17 as bit
      58. Dim Phi_18 as bit
      59. Dim Phi_19 as bit
      60. Dim Phi_20 as bit
      61. Dim Phi_21 as bit
      62. Dim Phi_22 as bit
      63. Dim Phi_23 as bit
      64. Dim Phi_24 As Bit
      65. Dim Phi_25 as bit
      66. Dim Phi_26 as bit
      67. Dim Phi_27 As Bit
      68. Dim Phi_28 as bit
      69. Dim Phi_29 as bit
      70. Dim Phi_30 as bit
      71. Dim Phi_31 as bit
      72. Dim Phi_32 as bit
      73. Dim Phi_33 as bit
      74. Dim Phi_34 as bit
      75. Dim Phi_35 as bit
      76. Dim Phi_36 as bit
      77. Dim Phi_37 as bit
      78. Dim Phi_38 as bit
      79. Dim Phi_39 as bit
      80. Dim Phi_40 as bit
      81. Dim Phi_41 as bit
      82. Dim Phi_42 as bit
      83. Dim Phi_43 as bit
      84. Dim Phi_44 as bit
      85. Dim Phi_45 as bit
      86. Dim Phi_46 as bit
      87. Dim Phi_47 as bit
      88. Dim Phi_48 as bit
      89. Dim Phi_49 as bit
      90. Dim Phi_50 as bit
      91. Dim Phi_51 as bit
      92. Dim Phi_52 as bit
      93. Dim Phi_53 as bit
      94. Dim Phi_54 as bit
      95. Dim Phi_55 as bit
      96. Dim Phi_56 as bit
      97. Dim Phi_57 as bit
      98. Dim Phi_58 As Bit
      99. Dim Phi_59 as bit
      100. Dim Phi_60 as bit
      101. Dim Phi_61 as bit
      102. Dim Phi_62 as bit
      103. Dim Phi_63 as bit
      104. Dim Phi_64 as bit
      105. Dim Grad As Byte
      106. Dim Zt As Byte
      107. Dim Achse As Byte
      108. Dim Error_index As Byte
      109. Dim Data_match As String * 1
      110. Dim Eingabestring As String * 45
      111. Dim Tmp As Byte
      112. Dim Command_array(14) As String *35
      Display All
      Hat es damit was zu tun, weil ich zu viele Variablen habe?

      VG
      Katip
    • Pluto25 wrote:

      Nein, der Code (bin_Datei) ist zu groß für das Flash, Im Ram wäre noch Platz für weitere Variablen.
      Es könnte den Flashbedarf sparen wenn die Bits Bytes wären. Bit Variablen benötigen viel mehr Arbeit als eine Byte-Variable.
      So bekomme ich die Meldung OUT OF SRAM


      Mitch64 wrote:

      Verwendest du einen Bootloader? Ab welcher Adresse?

      Wird trotz des Fehlers die Bin Datei erzeugt und wenn ja, wie groß ist die?
      nein, kein Bootloader
      nein, die BIN Datei wird auch nicht erzeugt.



      Habe mal zum Testen auf $regfile = "m16adef.dat" geändert,
      die BIN-Datei wird erzeugt und ist 10KB groß.

      The post was edited 1 time, last by katipefendi ().

    • Entschuldigt bitte, ich verstehe im Moment sinngemäß nur Bahnhof.
      Habe den Teil des Programmes oben übernommen, etwas verändert zum ausprobieren, complieren lassen. Ergebnis, passt in Atmega8a und es gibt noch jede Menge Platz.
      Also muss einiges fehlen, nach geschaut. Als erstes fiel auf, die Interrupt Routine fehlte. Also da was eingefügt. Auch noch okay.
      Folglich noch mal den Artikel durch gelesen, ob ich etwas übersehen habe.

      Tha, dann fand ich, es wird anscheinend eine LIB includiert und laut LIB-Datei ist alleine diese schon 30 K groß.
      Somit besteht nun für mich ein Zweifel, ob das Ganze in einen Atmega328 passen könnte.
      Falls ich irgendwelche Zusammenhänge mit Programmgröße in Bytes und In Bin nicht verstanden habe, bitte ich um Erklärungen.
    • bitlogger wrote:

      Entschuldigt bitte, ich verstehe im Moment sinngemäß nur Bahnhof.
      Habe den Teil des Programmes oben übernommen, etwas verändert zum ausprobieren, complieren lassen. Ergebnis, passt in Atmega8a und es gibt noch jede Menge Platz.
      Also muss einiges fehlen, nach geschaut. Als erstes fiel auf, die Interrupt Routine fehlte. Also da was eingefügt. Auch noch okay.
      Folglich noch mal den Artikel durch gelesen, ob ich etwas übersehen habe.
      Hi,

      die Menge an Code war das Problem.
      Nicht die Variablen.

      Nun, habe ich c. 1500 Zeilen und die BIN-Datei liegt bei 18KB
      und denke das wir mit dem ATMEGA328P den richtige Wahl getroffen haben.

      Denn es läuft alles wie geschmiert.