Xmega odmierzanie 1 s, 100ms itp

Rodzina procesorów bogatszych w wiele nowych rozwiązań i dlatego warto po nie sięgnąć.
Awatar użytkownika
Pikczu
Posty: 391
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Pikczu » 03 cze 2020, 20:16

Odpowiem za Jacka.
Tak dokładnie będzie to sterowanie tokarką Tytan 750.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Jacek » 04 cze 2020, 20:10

Witam - tak jak Paweł napisał ma to być sterownik do tokarki - pcb gotowe ale są 2 błędy na tyle nieistotne że do testów jest ok
20200604_200350-1.jpg
zobaczymy hi co z tego wyjdzie oczywiście z pomocą Kolegów z tego forum, sam nie dał bym rady.
pozdr. Jacek.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Jacek » 19 lip 2020, 21:06

Witam - ja jeszcze o odmierzaniu tych czasów, czy taki zapis jest poprawny
konfiguracja timera Tcf0
  1. Config Tcf0 = Normal , Prescale = 1024
  2. Tcf0_per = 3125
zmienne dla timera
  1. Dim Timer_tikx10 As Byte
  2. Dim Timer_tikx100 As Byte
  3. Dim Timer_tikx500 As Byte
  4. Dim Timer_tikx1000 As Byte
  5. Dim Timer_tik_flag As Byte
odliczanie czasów
  1.  if Tcf0_intflags.0 = 1 then
  2.       flaga10ms=1
  3.       incr timer_tikx10
  4.       Tcf0_intflags.0 = 0                           ' <-   to jest błąd, czytaj niżej [edytowano przez niveasoft]
  5.    end if
  6.    if timer_tikx10>=10 then
  7.       incr timer_tikx100
  8.       flaga100ms=1
  9.       timer_tikx10=0
  10.    end if
  11.    if timer_tikx100>=5 then
  12.       incr timer_tikx500
  13.       flaga500ms=1
  14.       timer_tikx100=0
  15.    end if
  16.    if timer_tikx500>=2 then
  17.       incr timer_tikx1000
  18.       flaga1s=1
  19.       timer_tikx500=0
  20.    end if
sterowanie ledami
  1.   If Flaga10ms = 1 Then
  2.       Flaga10ms = 0
  3.   End If
  4.    If Flaga100ms = 1 Then
  5.       Toggle Portc.5
  6.       Flaga100ms = 0
  7.    End If
  8.    if flaga500ms=1 then
  9.       toggle portc.4
  10.       flaga500ms=0
  11.    end if
  12.  
  13.    If Flaga1s = 1 Then
  14.       Toggle Portc.0
  15.       Flaga1s = 0
  16.    End If
mi niestety nie działa.
pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1236
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: niveasoft » 19 lip 2020, 21:09

Flagi kasuje się wpisując jeden a nie zero.
  1. If Tcf0_intflags.0 = 1 then    'timer ustawił flagę
  2.   Tcf0_intflags.0 = 1    'żeby ją skasować wpisujemy jedynkę
  3.  
  4. End If
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Jacek » 10 sie 2020, 22:47

Witam - mam pytanie jak atxmedze skonfigurować timer TCC0 aby pracował jako generator częstotliwości, nie znalazłem przykładu a z helpa nie bardzo rozumiem jak to zrobić wiem że trzeba zacząć tak
  1.  
  2. Config Tcc0 = Freq
  3.  
ale nie wiem co dalej chciałbym aby
generował impulsy ze zmiennej pobranej z enkodera
nie wiem jak to ugryźć.

pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1236
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: niveasoft » 11 sie 2020, 8:48

Nie wiem czy czytałeś Bascomową notę "Starting with Xmega"?

Poniżej kod do generowania częstotliwości z tej noty. Jeśli chcesz to mogę tę notę tu wstawić (dołączyć do postu). Ona dużo wyjaśnia początkującym.
Kod najpierw generuje 8MHz a po 3sec 122Hz.
  1. ' Frequency Generation with XMEGA : Output at PIND.0
  2. $regfile = "xm256A3Bdef.dat"
  3. $crystal = 32000000 '32MHz
  4. $hwstack = 64
  5. $swstack = 40
  6. $framesize = 40
  7. 'include the following lib and code, the routines will be replaced since they are a workaround
  8. $lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
  9. 'first enable the osc of your choice
  10. Config Osc = Enabled , Pllosc = Disabled , Extosc = Disabled , 32khzosc = Disabled , 32mhzosc =
  11. Enabled '32MHz
  12. 'configure the systemclock
  13. Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 '32MHz
  14. 'Config Interrupts
  15. Config Priority = Static , Vector = Application , Lo = Enabled 'Enable Lo Level Interrupts
  16. Config Com7 = 57600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
  17. 'Portf.2 and Portf.3 is COM7
  18. Open "COM7:" For Binary As #2
  19. Config Eeprom = Mapped ' when using EEPROM , add this config command
  20. Dim A As Word
  21. Config Portd.0 = Output 'Output for Frequency
  22. Print #2 , "----Example Digital Frequency Generation with XMEGA-----"
  23. Config Tcd0 = Freq , Prescale = 2 , Comparea = Enabled , Resolution = 16
  24. 'TCD_PER is not used in Frequency (Waveformgeneration) mode, only the TCX_CCX Registers to set the
  25. Period of the Digital Waveform
  26. 'Digital Waveform Generation
  27. ' +-----------+ +
  28. ' | | |
  29. '------+ +----------+
  30. '
  31. ' <--------------------->
  32. ' Period = TCD_CCA Register
  33. ' Prescale = 1 --> 32MHz
  34. ' Frequency max with TCD_CCA = 0 --> System Clock/2*Prescaler(CCA + 1) = 32MHz/2*2(0 + 1) = 32MHz/4 = 8MHz
  35. ' Frequency min with TCD_CCA = &HFFFF --> System Clock/2*Prescaler(CCA + 1) = 32MHz/2*2(65535 + 1) = 32MHz/4*65536 = 122 Hz
  36. Tcd0_cca = 0 'F = 8 MHz
  37. Wait 3
  38. Tcd0_cca = &HFFFF 'F = 122 Hz
  39. End 'end program
[EDIT] Nota jest już udostępniona jako przyklejony post w dziale Xmega.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Jacek » 11 sie 2020, 22:30

Witam - dziękuje za podpowiedz jeszcze pytanie bo nie do końca rozumiem
szukałem takiego terminu w dokumentacji atxmega i nie znalazłem czy możesz napisać do czego się to odnosi bo
rozumiem że chodzi o counter - licznik.
czy to pierwsze to rejestr w atxmedze?
pozdrawiam Jacek.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Xmega odmierzanie 1 s, 100ms itp

Post autor: Jacek » 23 sie 2020, 19:36

Witam - odpaliłem silnik na płytce testowej xmegi https://www.youtube.com/watch?v=0eZ7xPh5HBc
Nie uruchamiałem z generatora ponieważ walczyłem ze sterownikiem , okazało się że oznaczenia ( kolory ) przewodów silnika nie są zgodne z instrukcją.
Silnik na wyższych częstotliwościach bez rampy nie startuje - sterownik pokazuje błąd.
Nie wiem jak zrobić rampę startową no i "przekazywanie" impulsów z enkodera do timera sterującego impulsami dla sterownika.
pozdrawiam Jacek.
ODPOWIEDZ