Xmega Timer 32 bit

Rodzina procesorów bogatszych w wiele nowych rozwiązań i dlatego warto po nie sięgnąć.
ODPOWIEDZ
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Xmega Timer 32 bit

Post autor: Jacek » 20 lis 2020, 22:03

Witam - ma ktoś może przykład jak połączyć kaskadowo 2 timery 16 bit aby uzyskać licznik 32bity.
W podprogramie który używam do obrotomierza przy enkoderze 720imp/obr powyżej 1350 obrotów timer przeskakuje ( jest 16 bit i liczy do 65535 ) i zaczyna liczyć od zera, w helpie jest napisane że zamiast NORMAL należy ustawić SPLIT ale nie wiem jak to zapisać dalej żeby licznik miał większą pojemność.
pozdrawiam Jacek.
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Xmega Timer 32 bit

Post autor: tomaszdko » 24 lis 2020, 10:37

Nie wiem po co enkoder robisz na timer , mi lepiej na przerwaniach. Kiedyś się bawiłem z timer 32bit i musisz użyć Event System aaa i działa to podobno tylko z timer klasy 0 czyli z pierwszymi na porcie . Link https://www.avrfreaks.net/forum/timer-32-bit-xmegado przykładu gdzie możesz się sugerować (ostatni post)
Awatar użytkownika
Pikczu
Posty: 392
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Xmega Timer 32 bit

Post autor: Pikczu » 24 lis 2020, 20:40

Jacek,
Tak na szybko bo niestety nie mam czasu.
Wszytko jest w PDF-ie podane jak na tacy.
Wystarczy przeczytać (wklej sobie w google translate)
http://ww1.microchip.com/downloads/en/A ... oc8045.pdf
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Xmega Timer 32 bit

Post autor: tomaszdko » 07 gru 2020, 21:54

Zrobiłeś ?

Znalazłem swój stary kod , pokombinuj scalajac wyniki dwóch timerów w zmienną dword.
  1.  
  2. Config Event_system = Dummy , Mux0 = TCf0_OVF  ,Mux1 = portf.0  , Digflt0 = 1 ' ,Mux1 = portf.0
  3. Enable Interrupts
  4.  
  5. config portf.0=input : Config Xpin = Portf.0 , Outpull = PULLUP  , Sense = FALLING
  6. Portf_int0mask = &B0000_0001    'przerwanie dla pinu 0
  7. Enable Portf_int0 , Lo
  8.  
  9.  
  10. Config Tcf0 = Normal,  Prescale = E1 , Event_source = E1 , Event_action = Capture'
  11. Tcf0_per =65535'32MHz/1024 = 31250 --> One Second Tick
  12. On Tcf0_ovf Tf0_isr 'Setup overflow interrupt of Timer/Counter C0 and name ISR
  13. Enable Tcf0_ovf , Lo 'Enable overflow interrupt in LOW Priority
  14. start tcf0
  15.  
  16. Config Tcf1 = Normal , Prescale = E0 , Event_source = E0 , Event_action = Capture'
  17. Tcf1_per =65535'32MHz/1024 = 31250 --> One Second Tick
  18. On Tcf1_ovf Tf1_isr 'Setup overflow interrupt of Timer/Counter C0 and name ISR
  19. Enable Tcf1_ovf , Lo 'Enable overflow interrupt in LOW Priority
  20. start tcf1
Pinf.0 wyzwalasz impuls , zliczany w Tcf0 a po przepełnieniu Tcf0 wzrasta licznik Tcf1 . Wyniki liczników scalasz w dword i masz wynik dla enkodera
Awatar użytkownika
tomaszdko
Posty: 78
Rejestracja: 06 gru 2018, 19:58

Re: Xmega Timer 32 bit

Post autor: tomaszdko » 08 gru 2020, 7:50

Trochę uporządkowałem ten testowy kod na bardziej wyraźny (skoki do pod programów nie potrzebne), dodałem scalanie word na dword. Nie wiem jak zliczać w przód i w tył (z tego co czytałem to jest taka opcja ale nigdy jej nie używałem . Wystarczył mi enkoder na przerwaniach i zmienna integer). Bartek pewnie będzie wiedział.
  1. Dim x as dword at &H2100
  2. Dim B1 As word at x Overlay
  3. Dim B2 As word at x +2 Overlay
  4.  
  5. Config Event_system = Dummy , Mux0 = TCf0_OVF  ,Mux1 = portf.0  , Digflt0 = 1
  6. config portf.0=input : Config Xpin = Portf.0 , Outpull = PULLUP  , Sense = FALLING
  7.  
  8. Config Tcf0 = Normal,  Prescale = E1 , Event_source = E1 , Event_action = Capture
  9. Tcf0_per =65535
  10. Enable Tcf0_ovf , Lo
  11. start tcf0
  12.  
  13. Config Tcf1 = Normal , Prescale = E0 , Event_source = E0 , Event_action = Capture
  14. Tcf1_per =65535
  15. Enable Tcf1_ovf , Lo
  16. start tcf1
  17.  
  18. do
  19. b1=TCf0_CNT
  20. b2=TCf1_CNT
  21.  
  22. locate 1,1
  23. lcd x
  24. loop
  25. end
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Xmega Timer 32 bit

Post autor: niveasoft » 08 gru 2020, 7:56

Bartek przerwał pisanie jednego programu o północy a o piątej wstał i znowu pisze ahahahaha :D
Pozerkam i pomyślę później.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega Timer 32 bit

Post autor: Jacek » 08 gru 2020, 20:41

Witam - dziękuje za pomoc, program po testuje w sobotę niedzielę ostatni praca zawodowa absorbuje dużo czasu.
pozdrawiam Jacek.
ODPOWIEDZ