Schwierigkeiten mit den xmega-timern

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

    • Schwierigkeiten mit den xmega-timern

      Hallo Spezialisten,
      in meinem aktuellen Projekt verwende ich einen xmega32A4U. Bei dem sind 4 pins vom PortE herausgeführt. Genau diese pins verwende ich als output für steppertreiber, clk und dir. Im Programm brauche ich 2 timer, derzeit wird tcc0 und tcc1 verwendet. Geht gut.
      Jetzt hab' ich mir gedacht, wenn ich den PortE schon komplett als Ausgang verwende, könnte ich auch die timer vom portE verwenden. Dann geht nix mehr. Jetzt die Frage: Warum a_27_b277ca12
      Ich dachte, jeder port hat timer und die pins können! als pins für diese timer verwendet werden. Das ich die pins nicht für normale input/output-Dinge verwenden kann, wenn ich den timer nur im overflow-interrupt betreibe, finde ich jetzt bisschen unpraktisch. Ist das wirklich so, oder mach ich wiedermal einen Fehler?
      das geht

      BASCOM Source Code

      1. 'ports
      2. Config Pina.0 = Input 'Starttaster
      3. Porta.0 = 1 'pullup
      4. Config Porte.0 = Output 'step Sonnenrad
      5. Config Porte.1 = Output 'dir Sonnenrad
      6. Config Porte.2 = Output 'step Planetenrad
      7. Config Porte.3 = Output 'dir Planetenrad
      8. ...
      9. 'timer
      10. Config Priority = Roundrobin , Vector = Application , Med = Enabled
      11. 'Takt für steps
      12. 'steperzeugung 'Sonne'
      13. Config Tcc0 = Normal , Prescale = 8
      14. On Tcc0_ovf Steppertakt_s_isr
      15. Enable Tcc0_ovf
      16. 'steperzeugung 'Planet'
      17. Config Tcc1 = Normal , Prescale = 8
      18. On Tcc1_ovf Steppertakt_p_isr
      19. Enable Tcc1_ovf
      20. Enable Interrupts
      Display All

      so geht's nicht mehr

      BASCOM Source Code

      1. 'ports
      2. Config Pina.0 = Input 'Starttaster
      3. Porta.0 = 1 'pullup
      4. Config Porte.0 = Output 'step Sonnenrad
      5. Config Porte.1 = Output 'dir Sonnenrad
      6. Config Porte.2 = Output 'step Planetenrad
      7. Config Porte.3 = Output 'dir Planetenrad
      8. ...
      9. 'timer
      10. Config Priority = Roundrobin , Vector = Application , Med = Enabled
      11. 'Takt für steps
      12. 'steperzeugung 'Sonne'
      13. Config Tce0 = Normal , Prescale = 8
      14. On Tce0_ovf Steppertakt_s_isr
      15. Enable Tce0_ovf
      16. 'steperzeugung 'Planet'
      17. Config Tce1 = Normal , Prescale = 8
      18. On Tce1_ovf Steppertakt_p_isr
      19. Enable Tce1_ovf
      20. Enable Interrupts
      Display All
      Im Datenblatt erkenne ich keinen Unterschied bei den ports
      xmega-ports.PNG
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Hm, im Datenblatt gestöbert und das gefunden
      PORTC and PORTD each has one Timer/Counter 0 and one Timer/Counter1. PORTE has one Timer/Conter0.
      Notation of these are TCC0 (Time/Counter C0), TCC1, TCD0, TCD1 and TCE0, respectively.
      Wieder mal typisch für mich, genau sowas zu wollen. 8|
      Warum aber der eine timer auch nicht geht, verstehe ich jetzt nicht, oder noch nicht.

      Genau, @Galahat, hab' ich auch gerade gefunden.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Wenn man in die .dat schaut (mit Zitronenfalters tool) findet man das
      xmegatimer-e.PNG
      ist das dann mehr zur Verwirrung meinerseits da rein geschrieben?
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Galahat wrote:

      Wie, wie? Per Einschreiben natürlich. a_38_b45e201d

      Na gut, ich mach's. a_30_7dc14a07
      :D :D

      Jetzt noch mal nachgefragt: Ich müsste doch TCC0 mit TCD0 tauschen können, genauso TCC1 mit TCD1. Warum funktioniert das nicht? Ich habe den Eindruck, der interrupt wird sehr langsam aufgerufen. Ich habe an meinen Treiber für die stepper am Ausgang eine Led, im Normalfall leuchten die schwach, weil schnell aus und an, mit einem anderen timer als C blinken die langsam, also eine deutlich kleinere Frequenz.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ach, ich Depp hab' noch das Setzen der Periode übersehen <X
      Tcc0_per = Periode_s
      Tcc1_per = Periode_p
      da steht der timertyp ja auch noch drin.
      Daran wird's liegen. :whistling:
      Ansonsten ist der 32bit-Modus wohl bei bascom noch Zukunftsmusik
      xmegatimer-resolution.PNG
      und der 16bit-Modus standard.
      Raum für Notizen

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

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