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 » 25 mar 2020, 20:41

Start / stop generatora jest w planie , jak i ustawianie ilości generowanych impulsów , ale właśnie trafił mi się ten problem z poprawnym zliczaniem impulsów .
Jeśli jest to jakiś większy kłopot , obejdę go drugim prockiem ;)
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:53

Wystarczyło napisać że będzie Start/Stop.

Liczenie to jedno, a odliczanie ilości impulsów to drugie.

Pierwsze jest bardzo łatwe. Mamy wolny Timer0. Podłączasz wyjście PWM do wejścia T0 (PD.4) i ustawiasz Timer na Counter. Odpalasz też przerwanie od przepełnienia Timer0. Kiedy następuje przepełnienie dodajesz zwykłą wartość bajtową... Po ręcznym zatrzymaniu te wartości bajtowe mnożymy x 256 bo tyle było liczników i na końcu dodajemy wartość Timer0. Mamy sprzetowo, bezproblemowo policzone impulsy.

Jeśli jednak chciałbyś by układ odliczał impulsy to lepiej podłączyć się do INT0 lub INT1 i odejmować zadaną wartość w przerwaniu. Kiedy osiągnie zero to PWM Stop.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Prosty generator prostokąta

Post autor: Henryk » 25 mar 2020, 21:05

Podziękowania za podpowiedzi :D myślę , że sobie teraz poradzę , czas pokaże ;)
Mam do sprawdzenia takie gów....e elektromechaniczne liczniki impulsów , aby paluchy nie bolały do klikania , Polak musi cosik wymyślić :lol:
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Prosty generator prostokąta

Post autor: Henryk » 26 mar 2020, 18:52

Witam :D

Na szybko wkleiłem w program timer0 , mało elegancko , ale działa ;)
  1. Config Timer0 = Counter , Edge = Rising
  2.  
  3. Dim Licznik As Single
  4.  
  5. Enable Interrupts
  6. Start Timer0
  7.  
  8.    If Timer0 = 100 Then
  9.   Licznik = Licznik + Timer0
  10.    Timer0 = 0
  11.       End If
  12. Locate 1 , 1 : Lcd "licznik -  " ; Licznik ; "  "
  13.  
  14.  
Do 10 Hz timer pracuje poprawnie nie gubi impulsów :) jest ok , licznik elektromechaniczny przy 10 Hz staje się brzęczykiem :lol:
Do testów wystarczy mi 4 Hz , zliczanie brutalnie rozpoczyna reset .
ODPOWIEDZ