RTC32 ATXMega256A3BU Problem

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

    • RTC32 ATXMega256A3BU Problem

      Hallo Forum,

      ich versuche bisher vergeblich den RTC32 Counter des ATXMega256A3BU zum laufen zu bekommen. Habe verschiedene Beispiele getestet, ich sehe aber aktuell noch nicht wo das Problem ist.

      Hat jemand ein lauffähiges Beispiel für einen ATXMega mit RTC32 (ATXMega256A3BU) oder kann mir sagen wo der Fehler in meinem Code ist?

      Liebe Grüße
      Andreas

      BASCOM Source Code

      1. '(
      2. '*******************************************************************************
      3. Controller Belegung:
      4. UART 1
      5. UART C1
      6. RX PC6 PIN22
      7. TX PC7 PIN23
      8. UART 2
      9. UART C0
      10. Rx Pc2 Pin18
      11. TX PC3 PIN19
      12. I2C
      13. SDA PD0 PIN26
      14. SCL PD1 PIN27
      15. I2C INT PC1 PIN17
      16. SPI
      17. CS PD4 PIN30
      18. MOSI PD5 PIN31
      19. MISO PD6 PIN32
      20. SCK PD7 PIN33
      21. GPIO
      22. LED DATA PC0 PIN16
      23. '*******************************************************************************
      24. ')
      25. '$programmer = 16 'USBprog Programmer/ AVR ISP mkII (Atmel)
      26. $programmer = 13 'MSC Bootloader
      27. $regfile = "xm256a3budef.dat"
      28. $crystal = 32000000
      29. $hwstack = 64
      30. $swstack = 64
      31. $framesize = 64
      32. $lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
      33. Config Osc = Enabled , 32mhzosc = Enabled , Extosc = Enabled , Startup = Extclk
      34. Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
      35. Config Clock = Soft , Rtc32 = 1khz_32khz_crystosc , Gosub = Sectic
      36. Config Priority = Static , Vector = Application , Lo = Enabled
      37. Enable Interrupts
      38. 'UARTC0, PIN 18, 19
      39. Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 ' use USART C0
      40. Config Com2 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 ' use USART C0
      41. 'Open all UARTS
      42. Open "com2:" For Binary As #1
      43. Print "COM 1"
      44. Print #1 , "COM 2"
      45. Config Porte.2 = Output
      46. Leddata2 Alias Porte.2
      47. Leddata2 = 0
      48. Config Porte.3 = Output
      49. Leddata3 Alias Porte.3
      50. Leddata3 = 0
      51. Dim Count As Byte
      52. Dim Lsyssec As Long
      53. Dim Second_tick As Bit
      54. Do
      55. Incr Count
      56. Print "hallo com 1 " ; Count
      57. Print #1 , "hallo com 2 " ; Count
      58. Toggle Leddata2
      59. Waitms 250
      60. If Second_tick = 1 Then
      61. Second_tick = 0 ' Flag Reset
      62. Toggle Leddata3
      63. Lsyssec = Syssec() ' Number, which represents the System Second
      64. Print Time$ ; " " ; Lsyssec
      65. Print #1 , Time$ ; " " ; Lsyssec ' print the system time
      66. End If
      67. ' print the time
      68. Loop
      69. 'Interrupt Routine for 32-Bit RTC
      70. Sectic:
      71. Second_tick = 1
      72. Return
      73. Close #1
      74. End
      Display All
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.
    • Ohne Ahnung zu haben, ich würde mal Zeile 46 bearbeiten. Probier doch mal mit dem internen 32k RC-Oszillator
      Config Osc = Enabled , 32mhzosc = Enabled , 32khzosc = Enabled
      und dann
      Config Clock = Soft , Rtc = 1khz_int32khz_ulp , Gosub = Sectic ' we select the internal 1 KHz clock from the 32KHz internal oscillator
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Danke für deine schnelle Antwort.
      Habe die Zeile auf:
      Config Osc = Enabled , 32mhzosc = Enabled , 32khzosc = Enabled , Extosc = Enabled , Startup = Extclk
      geändert.
      Leider unverändert, das Programm läuft überhaupt nicht. Ich bekomme keine Ausgabe über COM und auch die LED blinkt nicht.
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.
    • Wenn sich garnix tut, dann bau doch mal am Anfang einen kleinen Test ein, sowas wie
      Leddata2=1
      Waitms 500
      Leddata2=0
      Waitms 500
      vor das do, einfach um zu sehen, ob der Kontroller läuft.
      Und lass mal das 'Extosc...' und 'startup...' weg. Das kling so nach extern, es soll ja mal mit dem internen Zeugs gehen.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Nach vielen Test habe ich nun herausgefunden, dass das Problem die in der Zeile ist.


      Config Clock = Soft , Gosub = Sectic , Rtc32 = 1khz_32khz_crystosc

      Der Code lässt sich Fehlerfrei erzeugen, aber läuft auf dem Controller nicht. Ich kann keine Funktion der LEDs sehen und auch keine Datenausgabe über die COMs.

      Ich verwende eine eigene Hardware, die ich überprüft habe. Der 32KHz Quarz ist an den richtigen Pins des Controllers angeschlossen.

      Verwende folgende Bascom Version
      Compiler version :2.0.8.2
      Compiler build :2.0.8.2.003
      IDE version :2.0.8.2.015
      Windows OS :Windows 10 Pro

      Was kann ich nun machen?

      Liebe Grüße
      Andreas
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.
    • in der Hilfe unter config clock avrhelp.mcselec.com/config_clock.htm gibt es ein Beispiel für xmega. Zwar mit internen RC-Oszillator, ist aber mal erst egal. Probier mal das. Ich würde mal davon ausgehen, dass der code funkioniert.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Danke für deine Unterstützung. Den Code habe ich auch getestet. Geht auch nicht. Da ist die gleiche Codezeile drin.
      Möglicherweise geht ja auch nur bei meinem Controller was nicht. Habe auch einen Beitrag gefunden, dass der ATX möglichst 7. Generation sein soll. Meiner ist 6. Generation. Hmm, was sagt mir das nun?

      Hilfreich wäre, wenn ich einen Code hätte, der definitiv funktioniert. Wie immer, haste keine Erfahrung is halt blöd.
      Mit den ATX Controller wir halt weniger gebastelt, von daher gibt es weniger breite Erfahrung und Foreneinträge.

      Liebe Grüsse
      Andreas
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.
    • bei deinem Programm müsste ja gleich was aus der Seriellen kommen, bevor auf die Sekunde gewartet wird. Wenn da schon nix kommt, dann mal ganz primitiv anfangen, mit Led-blinken lassen. Wenn das geht die serielle checken usw. Ich weiß aus Erfahrung, dass selbstgebastelte hw nicht immer gleich geht, wie man es gerne hätte. Wenn sich der chip flashen lässt, dann kann man auch alles testen. Wenn dann nicht mal Ledblinken geht, muss man halt ziemlich nah am Kontroller das Kontrollieren beginnen, mit dem Multimeter direkt an den pins messen usw. Hast du ein Oszi? Damit sollte am Quarz eine Schwingung messbar sein. Das wäre aber nur interessant, wenn es mit interen Zeugs geht, mit externen nicht.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ich verstehe was du meinst. Nennt man klassisch Fehlersuche ;)

      Heute war die Suche in der Software dran. Das Problem ist, dass auf dem Controller nichts mehr funktioniert, auch keine LEDs, sobald die oben beschriebene Codezeile enthalten ist. Ohne diese läuft jeder Code ganz normal.
      Es schaut so aus, als ob man nicht auf den internen Oszillator bei dem 32Bit Counter umgeschaltet werden kann. Wie gesagt, da fehlt mir einfach die Erfahrung mit den ATX Typen.

      Es kann vielleicht daran liegen, das der Quarz nicht anschwingt. Wie du schreibst, werde morgen in der Arbeit mit dem Oszilloskop schauen, was der Quarz macht.
      Es kann auch sein, dass ganz einfach der Controller einen Schlag hat. Hatte diesen zuerst blöderweise verkehrt herum aufgelötet. Er sollte zwar keine Verpolung gegeben haben, aber einen Vorschaden kann man damit nicht ausschliessen. So ein Controller ist ja zum Schluss auch nur ein Mensch.

      Werde Rückmeldung geben. Vielen danke schon mal.

      Lg Andreas
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.
    • ... kurze Rückmeldung, der Controller läuft mit dem Democode.
      Mein Controller war defekt :( , deswegen lief die RTC nicht.

      Grüße
      Andreas
      Mancher Baum hätte wohl sein Wachstum eingestellt, wenn er gewusst hätte was hinterher für ein Mist auf seinem Papier geschrieben wird.