Prosty generator prostokąta

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Prosty generator prostokąta

Post autor: Henryk » 10 cze 2019, 19:53

Witam :D
Próbuję wkomponować w program generatora zmienną licznikową impulsów pojawiających się na wyjściu PWM .
Czy mogę tu wykorzystać przerwanie rejestru porównania :?:
Czy nie będzie gubił impulsów przy częstotliwości 1khz max :?:

Próbuję zmajstrować kalibrator licznika przebytej drogi hmm ;)
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Prosty generator prostokąta

Post autor: niveasoft » 10 cze 2019, 21:57

nie drażnij mnie :P wpływamy na wody :P
Jeden kiloHertz przy jakim taktowaniu?
odpal swój piracki statek i zmierzmy sie ahahahaha

Teraz mój helikopter będzie powered by Jumper T16 :P
coraz bardziej mnie kręci kupic cos co w wodzie zaiwania ahahahaha
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Prosty generator prostokąta

Post autor: niveasoft » 10 cze 2019, 22:04

cos potłumaczę - chcę kupic dla siebie aparature RC - nic łatwego i tez tak sie kreca od 300zł do nawet dużo dużo.
Nie chcę wydac więcej niż tysiak ,2
to juz powinno jakos smigac i nawet powinno pozwolic kontrolować inne statki powietrzne
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Prosty generator prostokąta

Post autor: niveasoft » 10 cze 2019, 22:16

wybaczcie- czasem zapinam wrotki :P https://www.youtube.com/watch?v=6eRnOOo ... g&index=20
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Prosty generator prostokąta

Post autor: Pikczu » 10 cze 2019, 23:04

Fajnie ale skupić się ciężko przy tym.
przy okazji oftopa chciałem zawiadomić iż padła moja maszyna CNC
[media]https://www.youtube.com/watch?v=zie1HUIv-tE[/media]
A dokładnie sterownik DSP :cry: :cry:
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Prosty generator prostokąta

Post autor: Henryk » 11 cze 2019, 8:53

Witam :D
niveasoft pisze:
10 cze 2019, 21:57
Jeden kiloHertz przy jakim taktowaniu?
Tak jak w programie 16 MHz .
Jeden kilohHerc jest z zapasem na przyszłość ;)
niveasoft pisze:
10 cze 2019, 22:04
cos potłumaczę - chcę kupic dla siebie aparature RC - nic łatwego i tez tak sie kreca od 300zł do nawet dużo dużo.
Nie chcę wydac więcej niż tysiak ,2
to juz powinno jakos smigac i nawet powinno pozwolic kontrolować inne statki powietrzne
Z RC mam małe doświadczenie , kup najlepszą z topowych wielokanałowych :P nigdy nie wiadomo co za pomysł przyjdzie do głowy .
Na wodę kup sobie ślizgacz z napędem spalinowym zap...... ekstra :lol:

Jak zaczniesz sklejać modele kartonowe będę mógł więcej pomóc :D
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Prosty generator prostokąta

Post autor: Jacek » 11 cze 2019, 17:33

Cześć - Paweł pisałeś do żółtych ludzi w sprawie sterownika?
pozdr. Jacek.
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Prosty generator prostokąta

Post autor: Pikczu » 11 cze 2019, 20:44

Jacek - Pisałem dziś rano mnie Chinka skypem obudziła, załatwione mam wysłać do chin.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Prosty generator prostokąta

Post autor: Henryk » 25 mar 2020, 20:15

Witam :D

Próbuję wkomponować w program zmienną licznika impulsów na wyjściu PWM .
Nie potrafię sprawić aby licznik liczył impulsy poprawnie , niezależnie od ustawionej częstotliwości .
Nabija mi licznik jak wściekły , no bo program sprawdzi warunek ileś tam razy nim zmieni się stan na wyjściu PWM .
Podpowiedzcie jak to ugryźć :?: :( , w kodzie jest tylko dopisana zmienna " licznik " , wstyd pokazywać co kombinowałem :oops:
  1. '*************************************
  2. '&sim
  3. $regfile = "m8def.dat"
  4. $crystal = 16000000
  5. $hwstack = 64
  6. $swstack = 32
  7. $framesize = 128
  8.  
  9. '----- KONFIGURACJA WYŚWIETLACZA -----------------------------------------------
  10.  
  11. Config Lcd = 20 * 4
  12. Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
  13. Cursor Off
  14. Cls
  15.  
  16. '----- KONFIGURACJA PORTÓW WEJŚCIA I WYJŚCIA / SCL i SDA / 1 WIRE / ALIASY -----
  17.  
  18. Config Pinb.0 = Input : Set Portb.0 : F_d Alias Pinb.0
  19. Config Portb.1 = Output       'OC1A
  20. Config Pinb.2 = Input : Set Portb.2 : Dn Alias Pinb.2
  21. Config Pinb.3 = Input : Set Portb.3 : Up Alias Pinb.3
  22. Config Pinb.4 = Input : Set Portb.4 : Plus Alias Pinb.4       'zaminna wanted + 10
  23. Config Pinb.5 = Input : Set Portb.5 : Minus Alias Pinb.5       'zmienna wanted - 10
  24. 'Config Portb.5 = Input : Reset Portb.5       'nieprzypisany - na razie jako wejście
  25. 'Config Portc.0 = Input : Reset Portc.0       'nieprzypisany - na razie jako wejście
  26. 'Config Portd.0 = Input : Set Portd.0 : Led Alias Portd.0
  27. 'Config Portd.1 = Input : Reset Portd.1       'nieprzypisany - na razie jako wejście
  28. 'Config Pind.2 = Input : Set Portd.2       'nieprzypisany - na razie jako wejście
  29. 'Config Pind.3 = Input : Set Portd.3       'nieprzypisany - na razie jako wejście
  30. 'Config Pind.5 = Input : Set Portd.5 :         nieprzypisany - na razie jako wejście
  31. 'Config Pind.6 = Input : Set Portd.6 : X100 Alias Pind.6
  32. 'Config Pind.7 = Input : Set Portd.7 : Run Alias Pind.7
  33.  
  34. 'TCCR1A  -> |COM1A1| COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
  35. 'TCCR1B  -> | ICNC1|  ICES1   --   WGM13  WGM12  CS12  CS11  CS10
  36.  
  37. '                    WGM13-|
  38.  
  39. '----- DEKLARACJA STAŁYCH I ZMIENNYCH ------------------------------------------
  40.  
  41.    Const Pwm_presc1 = &B00010001       'for TCCR1B
  42.    Const Pwm_presc8 = &B00010010
  43.   Const Pwm_presc64 = &B00010011
  44.  Const Pwm_presc256 = &B00010100
  45. Const Pwm_presc1024 = &B00010101
  46.  
  47. Const Set_output_mode = &B10100000       'for TCCR1A
  48.  
  49. Dim Presc As Byte , Wartosc_dla_tccr1b As Byte
  50. Dim Value As Dword , Help_d As Dword , Wanted As Dword
  51. Dim Ustaw As Word , Wypelnienie As Word , Proc As Word
  52. Dim Pos As Byte , Helpb As Byte
  53. Dim Wanted_str As String * 20
  54. dim licznik as single ' zmienna dla licznika PWM
  55. Const Freq_ = _xtal / 2
  56. Const Freq = Freq_ * 10       'z 8 Mega zrobi 80 Mega
  57.  
  58. Proc = 50           'wypełnienie początkowa wartośc, można wpisać 50
  59. Wanted = 100        'Hz początkowa 10,0 Hz
  60.  
  61. Locate 1 , 3 : Lcd "FREQ = "
  62. Locate 2 , 3 : Lcd "DUTY = "
  63.  
  64.  Gosub Przelicz
  65.   Gosub Menu_sub
  66.  
  67. Do
  68.   If Plus = 0 Then
  69.     Wanted = Wanted + 10
  70.     Gosub Przelicz
  71.    End If
  72.  
  73.  If Minus = 0 Then
  74.        Wanted = Wanted - 10
  75.        If Wanted < 10 Then : Wanted = 10 : End If
  76.         Gosub Przelicz
  77.       End If
  78.  
  79.  If Up = 0 Then
  80.   Waitms 50
  81.    If Up = 0 Then
  82.  
  83.     Select Case Pos
  84.  
  85.      Case 0
  86.  
  87.       If Wanted < 100000 Then
  88.        Incr Wanted
  89.         Gosub Przelicz
  90.       End If
  91.  
  92.      Case 1
  93.  
  94.       If Proc < 99 Then
  95.        Incr Proc
  96.         Gosub Calc_duty
  97.          Waitms 50
  98.       End If
  99.         End Select
  100.       End If
  101.  End If
  102.  
  103.  If Dn = 0 Then
  104.   Waitms 50
  105.    If Dn = 0 Then
  106.  
  107.     Select Case Pos
  108.  
  109.      Case 0
  110.  
  111.       If Wanted > 10 Then
  112.        Decr Wanted
  113.        Gosub Przelicz
  114.       End If
  115.      Case 1
  116.  
  117.       If Proc > 1 Then
  118.        Decr Proc
  119.         Gosub Calc_duty
  120.          Waitms 50
  121.       End If
  122.  
  123.     End Select
  124.      End If
  125.  End If
  126.  
  127.  Debounce F_d , 0 , Menu_sub , Sub
  128. Loop
  129. End
  130.  
  131. Menu_sub:
  132.  
  133.  If Pos = 0 Then
  134.   Pos = 1
  135.    Locate 1 , 1 : Lcd " "
  136.    Locate 2 , 1 : Lcd ">"
  137.  Else
  138.   Pos = 0
  139.    Locate 1 , 1 : Lcd ">"
  140.    Locate 2 , 1 : Lcd " "
  141.  End If
  142.  
  143. Return
  144.  
  145. Przelicz:
  146.  
  147.    Wanted_str = Str(wanted)
  148.    Wanted_str = Format(wanted_str , "0.0")
  149.  
  150.    Locate 1 , 10 : Lcd Wanted_str ; " Hz "
  151.  
  152.    Value = Freq     'przepisz Freq procka do zmiennej
  153.  
  154.    Help_d = Wanted
  155.  
  156.    Select Case Help_d
  157.  
  158.      Case 1 To 9
  159.     '256
  160.       Wartosc_dla_tccr1b = Pwm_presc256
  161.        Shift Value , Right , 7
  162.      Presc = 255
  163.  
  164.     Case 10 To 152
  165.     '64
  166.       Wartosc_dla_tccr1b = Pwm_presc64
  167.        Shift Value , Right , 6
  168.      Presc = 64
  169.  
  170.     Case 153 To 1220       '16000000Hz/131072 = 15Hz  '
  171.     '8
  172.       Wartosc_dla_tccr1b = Pwm_presc8
  173.        Shift Value , Right , 3
  174.       Presc = 8
  175.  
  176.     Case Else       '16000000Hz/131072 = 122Hz
  177.     '1
  178.       Wartosc_dla_tccr1b = Pwm_presc1
  179.       Presc = 1
  180.  
  181.    End Select
  182.  
  183.    Value = Value \ Help_d       'rzeczywistą po preskalerze podziel przez żądaną
  184.  
  185.     Decr Value : Ustaw = Value       'odejmij jeden
  186.  
  187.     Gosub Calc_duty
  188.  
  189.      Icr1 = Ustaw
  190.  
  191.       Tccr1a = Set_output_mode       'set count up, reset count down
  192.       Tccr1b = Wartosc_dla_tccr1b       'ustaw prescaler i WGM13
  193.  
  194. Return
  195.  
  196. Calc_duty:
  197.  
  198.   Help_d = Value * Proc
  199.   Help_d = Help_d / 100
  200.   Wypelnienie = Help_d
  201.    Ocr1a = Wypelnienie
  202.     Locate 2 , 10 : Lcd Proc ; " % "
  203.  
  204. Return
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Prosty generator prostokąta

Post autor: niveasoft » 25 mar 2020, 20:29

Nie rozumiem co chcesz liczyć. Na co chcesz patrzeć. Co tam chcesz wiedzieć z tych impulsów.
Rozumiem jak byś miał Start/Stop jak w moim to przy starcie by zerował licznik a po zatrzymaniu pokazał ilość. A tu? Nie rozumiem.
ODPOWIEDZ