Path: ...!weretis.net!feeder8.news.weretis.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Samson Newsgroups: comp.sys.raspberry-pi Subject: Re: Calculate frequencey and pulse width? Date: Sat, 2 Nov 2024 07:53:23 +0100 Lines: 51 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net y7yIY7MtQqJOE/Z7L2uyjQGMj8hE3Mo3uroL5lfzg4jCRqWD74 Cancel-Lock: sha1:faHVOELDSuoRXnaXkwxfdboCfXo= sha256:y9NZ5vYnUtPxEzEfXoCxyG69ceKuKMOoSOsnb2Q6ENg= User-Agent: Mozilla Thunderbird Content-Language: da In-Reply-To: Bytes: 2201 Den 01-11-2024 kl. 22:03 skrev Lawrence D'Oliveiro: > On Fri, 1 Nov 2024 07:19:07 +0100, Samson wrote: > >> [how] do i calculate the frquency and pulse width? > > Let’s see, cycle duration = 1 ÷ frequency, so pulse width must be duty > cycle × cycle duration. > > What do I win? Sorry here are more info. The pico limits PWM 8 Hz and up pulse width 1 - 100 % . I have this program and i works i understand how it works. my problem was understanding >> dup[delay] ? ===== # Example using PIO to blink an LED and raise an IRQ at 1Hz. import time from machine import Pin import rp2 @rp2.asm_pio(set_init=rp2.PIO.OUT_LOW) def blink_1hz(): # Cycles: 1 + 1 + 6 + 32 * (30 + 1) = 1000 irq(rel(0)) set(pins, 1) set(x, 31) [5] label("delay_high") nop() [29] jmp(x_dec, "delay_high") # Cycles: 1 + 7 + 32 * (30 + 1) = 1000 set(pins, 0) set(x, 31) [6] label("delay_low") nop() [29] jmp(x_dec, "delay_low") # Create the StateMachine with the blink_1hz program, outputting on Pin(25). sm = rp2.StateMachine(0, blink_1hz, freq=2000, set_base=Pin(25)) # Set the IRQ handler to print the millisecond timestamp. sm.irq(lambda p: print(time.ticks_ms())) # Start the StateMachine. sm.active(1)