logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bascom - jak wygenerować 3 impulsy ...

marmat 21 Lut 2010 19:10 1656 6
  • #1 7729910
    marmat
    Poziom 20  
    Jak najprościej wygenerować na tiny13 3 impulsy w ciągu 1 sekundy , ale bez użycia WAIT .
  • #2 7730249
    Konto nie istnieje
    Poziom 1  
  • #3 7730332
    marmat
    Poziom 20  
    Tak myślałem ale nie bardzo mi to wychodzi bo raczkuję dopiero w tej dziedzinie .
  • #5 7732108
    marmat
    Poziom 20  
    Tak ale impulsy mają być sygnalizowane i widoczne na diodzie LED , a w ten sposób chyba nie zobaczę .
    Może by to zrobić przez PULSEOUT tylko między nimi musi być WAIT ?

    Dodano po 3 [godziny] 8 [minuty]:

    Zrobiłem coś takiego ale proszę o sprawdzenie i poprawki , Nie wiem też jak zrobic podprogram Generator aby zrobił 3 razy taki impuls jak w programie Odmierz .
    Ma to sens ?
    
    $regfile = "attiny13.dat"
    $crystal = 4800000
    
      Config Pinb.0 = Output
      Led Alias Portb.0      'Wyjście LED
      Config Pinb.5 = Input
      Sw Alias Portb.5       'Switch Start
      Config Timer0 = Timer , Prescale = 256
      Enable Interrupts
      On Timer0 Odmierz
      Dim Licz_8ms As Byte
    
      Enable Timer0
      Load Timer0 = 250
    
    
      Led = 1
      Sw = 0
    
    Do
      Debounce Sw , 1 , Sub Generator
    End                      'end program
    
    
    
    
    
    Odmierz :
    Load Timer0 = 250
    Incr Licz_8ms
    If Licz_8ms = 125 Then
    Licz_8ms = 0
    Toggle Led
    
    End If
    
    
    Generator :
    


    Dodano po 27 [minuty]:

    może tak lepiej ?
    $regfile = "attiny13.dat"
    $crystal = 4800000
    
      Config Pinb.0 = Output
      Led Alias Portb.0      'Wyjście LED
      Config Pinb.5 = Input
      Sw Alias Portb.5       'Switch Start
       Dim Licze As Byte At &H62
      Config Timer0 = Timer , Prescale = 256
      Enable Interrupts
      On Timer0 Odmierz
      Enable Timer0
      Load Timer0 = 250
    
    
      Led = 1
      Sw = 0
    
    Do
      Debounce Sw , 1 , Generator
    Loop
    End
    
    Generator:
     Gosub Odmierz
     Gosub Odmierz
     Gosub Odmierz
     Return
    
    
    Odmierz:
    Load Timer0 = 250
    Incr Licze
    If Licze = 125 Then
    Licze = 0
    Toggle Led
     End If
     Return
    
  • #6 7733027
    PiotrPitucha
    Poziom 34  
    Witam
    Nie bardzo rozumiem czy to mają być trzy impulsy i koniec, czy trzy impulsy na sekundę bez ograniczenia czasowego.
    Myślę że najprościej użyć SOUND , cyganiąc kompilator że mamy do czynienia z zegarem 16MHz a popędzając procesor z 1MHz pewnie dałoby się uzyskać to co chcesz.
    Jedna linijka i programu i po sprawie :)
    Piotr
  • #7 7733837
    marmat
    Poziom 20  
    To ma być wycinek programu i oszukiwanie kompilatora złą częstotliwością nie wchodzi w grę .
    Ma to działać tak ,że jak pojawi się zdarzenie to na jednym pinie polecą trzy impulsy czas dobiorę dokładnie potem ale ok 3 w ciągu sekundy .
    Czyli trzy i koniec .

    Dodano po 1 [godziny] 16 [minuty]:

    Zrobiłem coś takiego ale nie działa jak potrzeba naciśnięcie przycisku nic nie robi tzn. nie widać a LED miga w takcie ok 5 s .
    Idea po naciśnięciu sw led mignie 3 razy co 320 ms - to powinno chyba widać .
    Proszę o pomoc bo już nie mam pomysłu na to .
    
    'Przerwanie od przepełnienia TIMER0 jest generowane co
     ' 4000000Hz / 256 /125 =125 a 1/125= 8ms
     ' 40 * 8ms = 320ms
    $regfile = "attiny13.dat"
    $crystal = 4000000
    
      Config Pinb.0 = Output
      Led Alias Portb.0      'Wyjście LED
      Config Pinb.5 = Input
      Sw Alias Portb.5       'Switch Start
       Dim Licze As Byte At &H64
      Config Timer0 = Timer , Prescale = 256
      Enable Interrupts
      On Timer0 Odmierz
      Enable Timer0
      Load Timer0 = 125      '
    
    
      Led = 0
      Sw = 0
    
    Do
     Debounce Sw , 0 , Generator , Sub
    
      Loop
    End
    
    Generator:
     Gosub Odmierz
     Gosub Odmierz
     Gosub Odmierz
    
     Return
    
    
    Odmierz:
    'Load Timer0 = 125
    Incr Licze
    If Licze = 40 Then
    Licze = 0
     Toggle Led
     End If
     Return
    
REKLAMA