Probleme mit SPITRANSFER

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

    • Probleme mit SPITRANSFER

      Hallo zusammen
      Ich habe ein seltsames Problem das mich seit 2 Tagen beschäftigt.
      Ich teste eine neue LP mit einem RFM12B, Datenabholung mittels Interrupt. Das verwendete Programm läuft bei mir auf anderer HW seit langem.
      Ich stelle fest dass das abgeholte Byte (mittels spitransfer) NICHT demjenigen entspricht das die Funktion spitransfer bereitstellt.
      Rufe ich die Abholroutine jedoch normal mit einem gosub auf so funktioniert die Übergabe. Bei Aufruf der Abholroutine mittels Interrupt jedoch nicht.
      Es ergeben sich dann auch sporadische Programmresets. Meine Vermutung: Stackproblem.
      Nur kann ich im Programm keinen Fehler finden (oder ich sehe vor lauter Bäumen den Wald nicht).
      Hat jemand eine Idee?

      Hier funktioniert spitransfer
      SPI_Test.bas

      Hier funktioniert spitest nicht
      SPI_Test1.bas

      Hier noch wie es vor und nach spitranfer aussieht
      SPITEST.JPG

      jepe

      The post was edited 1 time, last by jepe: Bild eingefügt ().

    • @Michael welche Funktionen meinst Du?
      habe nun:
      $hwstack = 100 ' default use 32 for the hardware stack
      $swstack = 100 ' default use 10 for the SW stack
      $framesize = 100 ' default use 40 for the frame space

      Resultat: Ergebnis vor/nach spitransfer ist das gleiche
      Danach habe ich gespielt; es ist der HW-Stack. Mit 64 oder 100 geht's, je SW-Stack = 64, framesize = 40
      Mit HW-Stack 32 geht es nicht.
      nur: ich verwende immer die Werte und hatte noch nie Probleme; das kanns doch nicht sein; vor allem bei diesem Trivialprogramm

      Korrektur: habe nun in anderen Programmen nachgesehen und festgestellt: HW-Stack ist > 64
      Also doch das???? Warum
    • Ich habe nun mal meine alten Empfangsprogramme durchgesehen und bei allen ist der HW-Stack >64.
      Für dieses Testprogramm habe ich eines der Programme genommen und alles unnötige entfernt. HW-Stack habe ich nicht angerührt.
      Ich kann mir nicht erklären wie der Wert dahin gekommen ist.
      Auf jeden Fall vielen Dank für die Hilfe, werde es nun mit dem vollständigen Testprogramm versuchen; aber nicht mehr heute.

      Gruss
      jepe

      Nachtrag: Habe es doch noch schnell versucht mit >64 und … geht auf Anhieb wie gewünscht
      Nochmals vielen Dank

      The post was edited 1 time, last by jepe: Nachtrag ().

    • @jepe Jetzt wäre es mal interessant, wie der codeexplorer bei deinem Problem hätte helfen können. Wenn ich deinen nicht funktionierenden code lade, bekomme ich folgende Info:
      stacks.PNG
      in der Hilfe zu dem codeexplorer (avrhelp.mcselec.com/view_code_explorer.htm)wird geschrieben
      The calculated stack settings are based on the program call tree and local variables. This is just a tool to give you an idea about stack usage. Not taken into account is the stack required by the assembler routines. This means that you need to add a certain amount to the calculated values. When your code uses interrupts you need to increase the calculated $HWSTACK by 32. Otherwise increase it by 16. The $FRAMESIZE should have a minimum value of 24. Add a value of 16 to $SWSTACK.
      Applications using AVR-DOS should use a minimum of 128 for all stacks.
      A future version will also take the assembler code into account. (Die future ist wohl noch nicht eingetreten :/ )
      jetzt wäre es interessant, ob mit den angezeigten Werten, natürlich mit den empfohlenen Aufstockungen, dein Programm laufen würde.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------