Arduino/ Wemos nie widzi fram - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Mikrokontrolery (https://forum.arduinopolska.pl/dzial-mikrokontrolery) +--- Wątek: Arduino/ Wemos nie widzi fram (/watek-arduino-wemos-nie-widzi-fram) |
Arduino/ Wemos nie widzi fram - brendy - 26-08-2022 Witam Szukam pomocy nie mam pojęcia dlaczego procki nie widzą framu. Używam fram mb85rs64 zasilanie 2.7-3.6V Poniże schmemat i przykład z biblioteki adafruit i ciągle mam błąd No SPI FRAM found ... check your connections Panowie co jest nie tak? Kod: #include <SPI.h> RE: Arduino/ Wemos nie widzi fram - kaczakat - 26-08-2022 Podczas uruchamiania sprawdzany jest producent, jeśli jest inny, nie ujęty w bibliotece to też jest taki komunikat: check_supported_device(manufID, prodID); (wewnątrz biblioteki w pliku .cpp). To jest przykład dla chipów, które oni sprzedają. Spróbuj inne biblioteki, albo zmodyfikuj tą od Adafruit. Mogą być też inne przyczyny, ale na pewno miałem nie halo, choć fram ostatecznie zadziałał. Edit: Sprawdziłem swoje szkice i u mnie chodziło o FRAM I2C, ale potem i tak skorzystałem z innej biblioteki. Niestety ta moja jest tylko do I2C, więc i tak Ci się nie przyda. Ale wierzę, że znajdziesz, do Arduino jest wszystkiego na pęczki. RE: Arduino/ Wemos nie widzi fram - brendy - 27-08-2022 Kurcze to faktycznie lipa. Pewnie to jest u mnie przyczyną spr połączenia wiele razy nie ma innej opcji. Zostaje kupić oryginał adafruit albo szukać biblioteki, a ja wczoraj się zastanawiałem cały dzień dlaczego sypie tym błędem... kaczakat bardzo ci dziękuję za konkretną odp. RE: Arduino/ Wemos nie widzi fram - Jarewa0606 - 27-08-2022 A weź zobacz czy zmiana pinu CS na inny wolny niż 15 (5/4 D1/D2), da coś bo ten pin jest podciągnięty do masy w związku z botowaniem ESP. I zamiast programowego SPI wykorzystaj sprzętowe SPI... RE: Arduino/ Wemos nie widzi fram - brendy - 27-08-2022 Oki jak wrócę jutro to spr spróbuję zmienić pin CS. Tylko nie bardzo wiem jak zmienić na sprzętowe SPI. RE: Arduino/ Wemos nie widzi fram - Jarewa0606 - 27-08-2022 masz przecież opisane Kod: /* Example code for the Adafruit SPI FRAM breakout */ Oczywiście jak zmienisz pin CS to i kabel tam zmień też.. 14,12,13 bez zmian bo sprzętowy ma tak samo.. RE: Arduino/ Wemos nie widzi fram - brendy - 28-08-2022 Jarewa0606 zrobiłem jak zaleciłeś. Zmieniłem pin CS w programie i przepiąłem kabel probowałem na programowym i sprzętowym ni cholery nie chce zagadać cały czas No SPI fram... Zaglądałem do bilioteki pliku cpp jak pisał kaczakat i są tam takie nazy Kod: } _supported_devices[] = { RE: Arduino/ Wemos nie widzi fram - kaczakat - 31-08-2022 Daj linka gdzie kupiłeś te pamięci. Znalazłem jakiegoś PDF takiej pamięci, gdzie jest wpisane max 20MHz. Na początek i tak trzeba sprawdzić czy ta pamięć w ogóle coś odpowiada. Na każdym etapie można grzebnąć w bibliotece i wyrzucić na UART pozyskane informacje, albo też da to informacje w którym momencie program się sypie. Tu się przydaje też analizator logiczny, który podsłucha komunikację na magistrali SPI. Są nawet takie teksty w bibliotece wystarczy odkomentować, np.: //Serial.print("Unexpected Manufacturer ID: 0x"); Serial.println(manufID, HEX); Te dane w supported devices to tak na prawdę adresy początku i końca pamięci do wykorzystania, można sobie dodać kolejne pozycje, ewentualnie można dodać kolejna z tym ID wyrzuconym przez bibliotekę. Można też użyć Arduino NANO 3.3V, są takie na 8MHz, SPI będzie działać tu oczywiście wolniej, max 4MHz, to testów bez znaczenia, może domyślne ustawienie w ESP8266 jest o tyle szybsze (procek jest x10), że pamięć faktycznie nic nie odpowiada. W przykładzie biblioteki są dzielniki dla SAM =9, to procek około 100MHz, ESP jest 160MHz. Można też przy kompilacji w menu ustawić zegar ESP na 80MHz, choć to wiele nie pomoże. Funkcje do ustawienia prędkości SPI też są inne w ESP, dla starszych płytek w przykładzie jest ten dzielnik, a dla ESP jest wprost podanie częstotliwości. Max prędkość dla UNO to 8MHz, dla ESP 80Mhz. Ten blok: SPI.begin(); #ifdef __SAM3X8E__ SPI.setClockDivider (9); // 9.3 MHz #elif defined(STM32F2XX) // Is seems the photon SPI0 clock runs at 60MHz, but SPI1 runs at // 30MHz, so the DIV will need to change if this is ever extended // to cover SPI1 SPI.setClockDivider (SPI_CLOCK_DIV4); // Particle Photon SPI @ 15MHz #else SPI.setClockDivider (SPI_CLOCK_DIV2); // 8 MHz #endif Sugeruje braku obsługi ESP, gdzie prędkość SPI to SPI.setFrequency(40000000); dla 40MHz Wszystko to tak na czuja sugeruje, że głównym problemem jest ESP. Można spróbować dodać przed ostatnim #else #elif defined ESP8266 SPI.setFrequency(10000000);//10MHz Choć znalazłem też przykłady, gdzie ESP gada jako Master do UNO SLAVE i nie ma w kodzie żadnych ustawień prędkości, a UNO nie dałoby rady odpowiadać na domyślnej prędkości ESP 40MHz. Więc i tak bym podłączył analizator by sprawdzić, co się faktycznie dzieje na linii zegara, IN i OUT, ale może to setFrequency zadziała. RE: Arduino/ Wemos nie widzi fram - brendy - 01-09-2022 28,59 zł 5%OFF | 1-10 sztuk MB85RS64 MB85RS64PNF-G-JNERE1 RS64 https://a.aliexpress.com/_vkSJyf Ten chip to jakaś lipa na pro mini 3.3V też nie ma komunikacji. Kupiłem oryginalny adafruit tam jest kość MB85RS64V a ja mam bez litery V i z adafruit odrazu działa podłączyłem go pod Esp32 z supla i ładnie pamięta stan przekaźnika po resecie. Może trzeba zamówić z alli sama kość MB85RS64V czyli taki jak jest w adafruit i pójdzie od strzała? RE: Arduino/ Wemos nie widzi fram - kaczakat - 01-09-2022 W między czasie zamówiłem takie kości, jak przyjdą, pewnie za 4-6 tygodni, to spróbuję je odpalić. Jak kupiłem je tu: https://www.aliexpress.com/item/1005001695290318.html?spm=a2g0o.order_list.0.0.6d971802zIgCii tańsze x3, ale oznaczenia te same. Do pamiętania stanu przekaźnika FRAM nie jest taki niezbędny, można emlować EEPROM we flash, jest też RAM w RTC który zachowuje dane przy resecie. FLASH ma jakoś 512B dla EEPROM, zapis 100k x, jak zapiszesz 0 lub 1, potem przy kolejnym obiegu 2 lub 3, itd., tak by prostym algorytmem oczytać/odgadnąć, która komórka zawiera ostatni zapis, to można je zapisać 51200000 x, tak co 1s = 38 lat. Tak samo wykorzystując pamięć FRAM 8kB dla zapisu stanu 1 przekaźnika wystarczy na połowę czasu istnienia układu słonecznego, a tyle Ziemia już nie przetrwa, bo Słońce zamieni się w czerwonego olbrzyma i spali wszystko. Zapisuj chociaż 2 komórki, to styknie "tylko" na 3mld lat. No ale w sumie to przecież nie klepiesz przekaźnikiem co 1s, a tylko jak się stan zmieni to zapisujesz, więc jednak wszystko się zdąży zamienić w czarne dziury i potem odparować w fotony, czas przestanie istnieć, a FRAM dalej będzie zapamiętywał ostatni stan przekaźnika. |