Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'python'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino, ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 3 wyniki

  1. Dzień Dobry Forumowicze! Problem dotyczy zarówno mikrokontrolera, jak i RPi, więc mam nadzieje że nie będzie problemu związanego z nieodpowiednim działem. Od kilku dni borykam się bezskutecznie z pewnym problemem, a prezentuje się on następująco: Potrzebuję wymienić dane poprzez SPI między Raspberry Pi Zero W (Master), a Atmegą64(Slave). Atmega zasilana przez 5V na własnoręcznie zaprojektowanej płytce (z konwerterem poziomów logicznych 3,3V-5V na MOSFET'ach). Generalnie elektrycznie wszystko jest sprawne i sprawdzone kilkukrotnie, więc to odpada. Jestem w stanie zaprogramować AVR'a przez RPi za pośrednictwem SPI właśnie (na RPi Rasbian w wersji 9), z wykorzystaniem AVRDUDE. Problem jaki się pojawia, to przy próbie wymiany danych między nimi. AVR'a programuje w C, natomiast RPi w Pythonie (kody programów niżej). Polega on na tym, że biblioteka Python'a SpiDev, jako sygnał ChipSelect podaje stan wysoki, podczas gdy ATMEGA wymaga podczas tej komunikacji stanu niskiego. Atmega nie posiada możliwości zmiany trybu na taki, aby czytała stan wysoki, a biblioteka SpiDev z kolei, nie ma funkcjonalności podania stanu niskiego. Chciałem to obejść poprzez podpięcie nóżki Atmegi pod zupełnie inną nóżkę RPi i ręcznego wysterowywania tej nóżki przed nadaniem paczki danych, jednak to nie działa - nie wiem jednak dlaczego. Nie używałem nigdy wcześniej SPI, więc finalnie nie jestem nawet pewien gdzie leży problem - czy w kodzie Slav'a, Mastera czy zupełnie gdzie indziej. Slave (C, Amtega64): #define F_CPU 1000000UL #include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> #define ustaw(bajt, nr_bitu) (bajt |=(1<<nr_bitu)) #define skasuj(bajt, nr_bitu) (bajt &=~(1<<nr_bitu)) #define sprawdz(bajt, nr_bitu) ((bajt &(1<<nr_bitu))&&1) #define sleep(czas) for (int i=0; i<(czas); i++) _delay_ms(1) int data=500; void init_spi(void) { DDRB=(1<<PB3); //MISO - output SPCR=(1<<SPE)|(1<<SPIE); //SPI_ON & Interrupt SPDR=0; } uint8_t rec_spi(void) { while (!(SPSR & (1<<SPIF))) ; return SPDR; //return data register } int main(void) { sei(); init_spi(); DDRC |=1<<PC3; //LED'y DDRC |=1<<PC4; DDRC |=1<<PC5; while (1) { ustaw(PORTC, PC4); sleep(data); skasuj(PORTC, PC4); sleep(data); } } ISR (SPI_STC_vect) { data = rec_spi(); ustaw(PORTC,PC5); } Master (Python, RPi): import RPi.GPIO as GPIO import spidev import time GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.OUT) GPIO.output(7, GPIO.HIGH) spi = spidev.SpiDev() spi.open(0, 0) print('Open SPI') #GPIO.output(7, GPIO.LOW) data = 0xAA try: while True: print('Sending..') GPIO.output(7, GPIO.LOW) spi.xfer([data], 50000, 100, 8) # spi.writebytes([250]) GPIO.output(7, GPIO.HIGH) print('complete') time.sleep(2) #end while except KeyboardInterrupt: # sleep(0.1) spi.close() GPIO.cleanup() Na masterze (RPi) próbowałem ustawiać różne tryby (spi.mode), różne prędkości, próbowałem z spi.writebytes oraz z spi.xfer. Wszystko bez skutku. Na Atmedze, mrugam diodą co pół sekundy. Próbowałem osiągnąć taki efekt, by wysłać liczbę 250 i ustawić ją jako czas mrugania, co zauważyłbym jako szybsze mruganie diody. Próbowałem też zapalić inną diodę w przerwaniu od SPI - wszystko bezskutecznie. SPI w FuseBitach jest aktywne. Połączenia elektryczne są poprawne, przy czym Atmegowski SS jest podłączony do 7 pinu RPi. Byłbym bardzo wdzięczny za wszelką pomoc i sugestie. Pozdrawiam.
  2. Cześć wszystkim, Chciałbym przetestować pewien program który znalazłem na internecie, niestety pojawia się problem przy instalacji biblioteki na Raspberry Pi , czy ktoś jest w stanie pomóc?
  3. Cześć! Na początek powiem, że nie wiem czy wybrałem odpowiedni dział, za co przepraszam. Do rzeczy: napisałem sterownik pod pasek led WS2811 (KLIK). Potrzebowałem by raspberry podłączone do paska led i przekaźnika mogło włączać lub wyłączać pasek oraz zapalać na wybrany kolor za pomocą requestów http. Można też otrzymać stan czy pasek jest włączony i jaki kolor mamy zapalony. Jeśli ktoś by chciał użyć wystarczy uzupełnić w kodzie parametry opisane w README. Działa też pluginem dla pasków led z homebridge. Wszelki feedback, nawet ten negatywny - mile widziany https://github.com/damianchoc/led_api
×
×
  • Utwórz nowe...