Python Forum
raspberry pico second core ? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: raspberry pico second core ? (/thread-42355.html)



raspberry pico second core ? - trix - Jun-23-2024

hello,

why am I working on the 2nd core?
I am working with a stepper motor that makes a movement from left to right, which takes about 25,000 pulses, 1 pulse is about 1 millisecond.
for every 100 pulses I want to send a message over the UART, which takes about 75 milliseconds.
but the movement of the stepper motor must remain smooth.
so I think: I send a start veriable every 100 pulses to the 2nd core, and let the message be sent there.
I think that should just work.
I am testing that in the code below.
Now I actually have 2 questions:
1 - Does that work with the method I want to use?
2 - I get an error message in this code: where is the error comming from ? the global with test is working fine.
thank you in advance.
Traceback (most recent call last):
  File "<stdin>", line 33, in <module>
SyntaxError: identifier redefined as global
from machine import Pin
import machine
import utime
import time
import _thread

button=Pin(22, Pin.IN, Pin.PULL_DOWN)

led_15              = Pin(15, Pin.OUT)
led_15. value(0)
led_16              = Pin(16, Pin.OUT)
led_16. value(0)

test = False

def core1_task():
    global test
        
    while True:
        time.sleep_ms (5)
        if test == True:
            led_15. value(1)
            time.sleep_ms (1)
            led_15. value(0)
            print ("meassage frome core_1")
            test = False
        _thread.exit()
        
once = 0

while True:
    global once
    
    led_16. value(1)
    time.sleep_ms (1)
    led_16. value(0)
    time.sleep_ms (5)
    
    if button() == 0 and once == 0:
        once = 1
        test = True
        _thread.start_new_thread(core1_task, ())        
        
    print ("meassage frome core_0")



RE: raspberry pico second core ? - deanhystad - Jun-24-2024

global is only used inside functions. The purpose of global is to tell python that the variable(s) is in the global scope, and assignment to the variable should not create a local variable inside the function. The code where you use "once" is not inside a function. Any variables assigned in the while loop are global.

Interestingly, this is a syntax error:
once = 0
while True:
    global once
    if once == 0:
But this is not. It raises a NameError when run, but it is not a syntax error.
while True:
    global once
    if once == 0:



RE: raspberry pico second core ? - trix - Jun-24-2024

Thank you.


RE: raspberry pico second core ? - trix - Jun-24-2024

thank you