Seltsamer Fehler

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

    • Seltsamer Fehler

      Hallo Zusammen,
      ich schreibe / entwickle gerade ein Programm um 7 Segment Anzeigen über PCF 8574 direkt anzusteuern.
      Nachdem ich nun das Rumpfgerüst soweit fertig geschrieben habe mache ich einen ersten Syntax Check; einige kleine Fehler
      die schnell gefunden wurden.
      Es bleibt aber ein Fehler den sich nicht zuordnen kann. Wenn man in der Fehlerleiste unten doppelt clickt wird die letzte Befehlszeile des
      gesamten Programms angegeben.

      Die Fehlermeldung lautet : Error: 46 Line 172 Assignment Error, unknown Variable (DIM) [Compare1A:0 24999 :112] in file --> Programmname

      Zeile 172 ist die letzte Programmzeile.

      Wenn ich jetzt noch ein paar mal Einter drücke, kommt die gleiche Fehlerbeschreibung mit der entsprechenden höheren Zeilennummer.

      Was ist das ? Ich find es nicht, und suche schon mehrere Tage

      Kann sich das bitte mal jemand anschauen Vielen Dank vorab!
      Gruss
      Theo
      Hier mein Programm:

      Source Code

      1. $regfile = "Attiny85.dat"
      2. $crystal = 8000000 'interner Takt ohne Quartz
      3. $swstack = 40
      4. $hwstack = 20
      5. $framesize = 8
      6. '######### Eingänge definieren
      7. Declare Sub Sekunde_stellen()
      8. Declare Sub Minute_stellen()
      9. Declare Sub Std_stellen()
      10. 'Array für Segmente einreichten
      11. Dim Array_D(12) as Byte
      12. Array_D(1)= &B00010100 'ist 0
      13. Array_D(2)= &B11110101 'ist 1
      14. Array_D(3)= &B01010010 'ist 2
      15. Array_D(4)= &B01110000 'ist 3
      16. Array_D(5)= &B00110101 'ist 4
      17. Array_D(6)= &B00111000 'ist 5
      18. Array_D(7)= &B10011000 'ist 6
      19. Array_D(8)= &B01110101 'ist 7
      20. Array_D(9)= &B00010000 'ist 8
      21. Array_D(10)= &B00110011 'ist 9
      22. Array_D(11)= &B11111111 'alle Segmente aus incl. DP
      23. Array_D(12)= &B00000000 'alle Segmente an incl DP
      24. 'I2C einrichten
      25. Config SCL=Portb.2
      26. Config SDA=Portb.0
      27. Const AdrSec_E= &B01000000'Adresse Sekunden Einer
      28. Const AdrSec_Z= &B01000010 'Adresse Sekunden Zehner
      29. Config Dcf77 = PinB.3 , Inverted = 1 , Timer = 1 , Update = 0 , Debug = 0 , Check = 1 , Gosub = Sectic
      30. Config Date = Dmy , Separator = .
      31. Enable Interrupts
      32. Dim Sync_Uhr as Byte
      33. Dim Neue_sekunde As Byte
      34. Dim Sek_alt as Byte
      35. Sek_alt =0
      36. Dim Sek as Byte
      37. Dim Sek_E as Byte
      38. Dim Sek_Z as Byte
      39. Sek_E=0
      40. Sek_Z=0
      41. Dim Min_alt as Byte
      42. Min_alt=0
      43. Dim Minu as Byte
      44. Dim Min_E as Byte
      45. Dim Min_Z as Byte
      46. Min_E=0
      47. Min_Z=0
      48. Dim Std_alt as Byte
      49. Std_alt=0
      50. Dim Stund as Byte
      51. Dim Std_E as Byte
      52. Dim Std_Z as Byte
      53. Std_E=0
      54. Std_Z=0
      55. Do
      56. Sync_Uhr=Dcf_status.7 '=0 wenn nicht synchronisiert; =1 wenn synchronisiert
      57. If Neue_sekunde = 1 Then
      58. Neue_sekunde = 0
      59. End If
      60. Sek= _sec
      61. Minu= _min
      62. Stund= _hour
      63. if sek <> Sek_alt then
      64. Sekunde_stellen
      65. End if
      66. if Minu<> Min_alt then
      67. Minute_stellen
      68. End if
      69. if Stund<> Std_alt then
      70. Std_stellen
      71. End if
      72. Loop
      73. End
      74. Sectic:
      75. Neue_sekunde = 1
      76. Return
      77. Sub Sekunde_stellen()
      78. if sek<10 then
      79. Sek_Z=0
      80. Sek_E=Sek
      81. Elseif sek > 9 then
      82. Sek_Z=Sek/10
      83. Sek_E=Sek Mod 10
      84. End if
      85. Sek_alt =sek
      86. 'hier Daten per I2C senden
      87. 'Sekunden Einer senden
      88. I2Cstart
      89. I2Cwbyte AdrSec_E
      90. I2Cwbyte Array_D(Sek_E+1)
      91. I2CStop
      92. 'Sekunden Zehner senden
      93. I2Cstart
      94. I2cwbyte AdrSec_Z
      95. I2Cwbyte Array_D(Sek_Z+1)
      96. I2CStop
      97. End Sub
      98. Sub Minute_stellen()
      99. if Minu<10 then
      100. Min_Z=0
      101. Min_E=Minu
      102. Elseif Minu>9 then
      103. Min_Z=Minu/10
      104. Min_E=Minu Mod 10
      105. End if
      106. Min_alt=Minu
      107. 'hier Daten per I2C senden
      108. End Sub
      109. Sub Std_stellen()
      110. if Stund<10 then
      111. Std_Z=0
      112. Std_E=Stund
      113. Elseif Stund >9 then
      114. Std_Z=Stund/10
      115. Std_E=Stund Mod 10
      116. End if
      117. Std_alt=Stund
      118. 'hier Daten per I2C sende
      119. End Sub
      Display All
    • Da hadert die Dcf Routine mit der Attiny85.dat.
      Quick and Dirty: die Attiny45.dat verwenden und trotzdem einen 85 damit beschreiben.
      Immer noch Dirty: ATtiny85modify.DAT.txt (Änderungen in einer Dat können ungeahnte Folgen haben)
      Sollte aber funktionieren ( das ".txt" wegnehmen)
      Vielleicht wurde sie in der neueren Version angepasst?

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

    • Hallo Insanity und Pluto 25,
      danke für den Tip! Wenn man umstellt auf Attiny 45 ist alles o.k. und der Fehler weg.
      Wie ich jetzt aber das Attiny 85 .dat modifizieren soll, davon hab ich keine Ahnung und lass das erstmal.
      Mit anderen Worten, das ist mit zu kompliziert.
      Ich mach erstmal mit dem Tiny 45 weiter.
      Besten Dank nochmal !
      Gruss
      Theo
    • Hallo djmsc,
      vielen Dank für Deinen Hinweis! Mit etwas Mühe ist es mir gelungen die Datei zu erneuern. Jetzt ist auch bei der Syntaxprüfung mit Attiny 85 der oben beschriebene Fehler weg.
      Konnte leider erst so spät antworten, da derzeit andere Dinge im Focus stehen als Bascom+ Hobby.

      Vielen Dank nochmal für die Unterstützung!

      Gruss
      Theo