Zastosuj bufory 74HCT125 na liniach SPI sterowane z Mastera i gdy Master je wyłączy to Slave nie będzie dostawał "dziwnego" zasilania po liniach SPI.
Pamiętaj, że rejestry SPI, w zależności czy to jest M/S, czy realizujesz przez USART, mają bufory. Jeśli więc coś nadajesz, a nie odczytasz SPDR, to ta wartość i tak tam jest, zostanie odczytana przy kolejnej okazji. Stąd możesz mieć opisane problemy z odczytem jakiś wcześniej przesłanych bajtów. Stąd też najlepiej albo jednocześnie zapisywać i odpisywać...
Jesli chcesz wykorzystac sprzetowe I2C (TWI) w ATmega8 to wszystko ustawiasz za pomoca odpowiednich rejestrow. Jesli ATmega bedzie pracowala w jako SLAVE to za pomoca odpowiedniego rejestru ustawiasz jej adres. Poczytaj w doumentacji od uC.
IMHO jeśli się krzaczy to wyraźnie jest problem z rzeczywistym baudrate. ATMega jest taktowana z zewnętrznego kwarcu? Przy synchronicznym USART normalnie ustawia się szybkość, przy czym slave jest taktowany z mastera, więc na slave szybkości ustawiać nie trzeba.
Witam, Niestety natrafiłeś na ogólnie znany problem :-) I2C w stm32f103 jest po prostu ... nie działa najlepiej. Jeżeli dobrze pamiętam przy próbie odczytu nie ustawia mu flagi IV5 i można tak czekać i czekać. Jeżeli masz nowe biblioteki to spróbuj zmienić prędkość transmisji na 50kB. Jeżeli to nie pomoże to zostaje ci bitbanging :)
ADS1256 pracuje w mod1- widać to z DS str6. Dlaczego ATMega slave źle pracuje w mod1 to jest dziwne.
Czy Spi w atmega w trybie slave generuje zegar?
Jeżeli stan nieaktywny na linii SS wymusza stan Hi-Z w ATMeganch pracujących jako Slave to tak. Każda Atmega SLAVE musi mieć osobny pin SS. Czyli musisz mieć 6 pinów SS.
Witam uruchomiłem połąłczenie między prockami na SPI MASTER I SLAVE. ATMEGA 8535 - Master ATMEGA 8 - Slave. Jeśli ktoś chce programy do obsługi to proszę o info. Teraz będę łączył trzeciego proca jak azdziała to podzielę się informacjami. Dziękuję wszystkin za pomoc i wymianę informacji w temacie komunikacji. Dodano po 41 Witam uruchomiłem połąłczenie...
Wystarczy, że jedna atmega będzie masterem a reszta to slave'y (lub w twoim wypadku 1). Master musi wysłać komendę i zacząć nasłuchiwać na odpowiedz [i tak w kółko] - a slave cały czas nasłuchiwać i nadać komunikat tylko po otrzymaniu komunikatu od mastera po czym znowu tylko nasłuchiwać. Można to zrealizować bez przerwań.
Poczytaj sobie: http://forum.atnel.pl/topic1183.html
Na tym moim schemacie jest niestety błąd, Rezystor R33 1K - zrobione podciąganie do GND (bez sensu niestety) powinno być podciąganie do VCC. Poza tym jest ok i działa to właśnie tak w rzeczywistym układzie - zarówno w modułach Slave jak i z układem FT232RL, który stanowi przejściówkę USB/RS485. Nie wiem co poza tym drobnym błędem może być niezrozumiałego?...
Witaj , wydaje mi się że rozwiązanie problemu leży w pkt 16.3.2 datasheet'u. Jeśli urządzenie jest w trybie master a na pinie SS czyli PB4 będzie stan niski to atmega interpretuje to jako istnienie innego urządzenia w trybie master i przełącza się w slave. Spróbuj utrzymać na pinie PB4 stan wysoki (podciągnij go) lub sprawdź czy nic w układzie nie wymusza...
Niestety nie ma prawa działać. Jeśli ATMega działa jako I2C slave to musisz nadać jej adres na magistrali I2C i obsługiwać zdarzenia START, RESTART, STOP i write o read na I2C.
Wariant C jest OK.
witam. poszukuje zrodel jak w temacie. wiem ze jest doc atmela ze zrodlami w asm ale niestety nie znam assemblera na avr i nie dok konca rozumiem te zrodla. sporo szukalem po sieci ale nie znalazlem wiele w temacie slave'a.
Witam, proszę o informację ( najlepiej praktyczną ) czy ATmega48 która będzie odbierać transmisję I2C (w trybie SLAVE) musi mieć kwarc aby transmisja przebiegała bez zakłóceń. Chciałbym zostawić ten procesorek tylko z wewnętrzym generatorem, ale nie wiem czy tak może zostać . Transmisja najwolniejsza z możliwych ( ATmega32 jako MASTER kwarc 16MHz, wychodzi...
Pewnie nie znajdziesz gotowego chipa na takie życzenie. Pozostaje chyba jednak µC. To nie musi ATMega, wystarczy PIC 16C5x albo AT1200 zaprogramowany jako I²C-slave. Programy znajdziesz w referencjach online. :)
Tzn. chyba w helpie Bascoma widziałem taki rysunek z wieloma układami SLAVE, tylko ( chyba odnosił ) się do SPI SOFT. Czyli zarówno w SPI SOFT jak i HARD nie ma ograniczenia układów SLAVE ? Tzn. jedynym ograniczeniem jest ilość pinów potrzebnych do identyfikacji układu, czyli CS ? A czy SPI SOFT i HARD mogą razem wykorzystywane ? Tzn. np w takiej sytuacji...
Autor wątku pytał o przykład dla Slave. Przykład jest u każdego kto ma pełną wersję w folderze Sampli/SERIAL. Niemniej nie wypada mi go umieścić skoro nie jest dołączany do Demo. To była wskazówka bo łatwo znaleźć "pełną wersję 2078" i tak Autor przykład znajdzie. Trzeba jednak zawsze wyważyć odpowiedź bo jeśli ktoś pyta o przykład, który normalnie...
Czy jeżeli ustawiłem długość słowa na 8bitów to bufor UDR przyjmie każda 8bitową liczbę? Każdą poprawną z bitem startu i stopu. Są symulatory MODBUS'a działające jako master lub slave.
No nie wiem jakie to procesory, ale można by je spiąć za pomocą drugiego sprzętowego SPI (UART in SPI mode - bo zwykły UART to trochę za wolno, a tymczasem tu mamy transmisję 1 bajta danych w kilku taktach uP) i robić komunikację, żeby master nakazywał slaveowi odczyt - to już moim zdaniem lepsze rozwiązanie, z tym, że slave będzie wtedy raczej zajęty...
Może przedstawisz kod programu?
Witam, Arbitraż na szynie I2C jest potrzebny tylko w przypadku implementacji układu MultiMaster. W przypadku gdy jest jeden Master i wiele układów Slave (najczęściej spotykany przypadek) arbitraż nie jest potrzebny. W układach ATMEGA szyna I2C (TWI) jest zaimplementowana sprzętowo ale tylko na najniższym poziomie (typu "wyślij START, wyślij STOP, odbierz...
Nie działa. Chyba pora wymienić kostkę. Nie działa, bo masz błędy w kodzie. Przeanalizuj jeszcze raz kolejność zmian stanu na poszczególnych liniach i2c_start() albo na początku procedury i2c_write() ). Dalej nie sprawdzałem. ...albo może jednak skorzystaj z kodu proponowanego przez kolegę mickpr : [url=http://www.elektroda.pl/rtvforum/vi...
Właśnie myślę nad takim rozwiązaniem, osiągami zajmę się później jak wszystko zacznie działać, nic tylko zostaje mi przystąpić do testów: Na początek, jedna atmega jako slave(SPI) + LCD, druga jako master(SPI) podlaczona po comie do PC't napisze proste softy do przesyłania i zobaczę co z tego wyjdzie czy transmisja będzie stabilna, także biorę się za...
Prezegladnalem kilka postow dotyczacych rs485 ale rozwiazania nie znalazlem. Moj uklad to PC z przejsciowka do rs485 i dwa atmega 32. Kiedy podlacze jeden slave uklad smiga bez problemow lecz kiedy podlacze drugi slave komunikacja siada ( nic nie gada w zadna strone). Dodam ze ramka zawiera numer slave i odpowiada tylko jeden ( sprawdzalem z jednym...
Sprawdz też czy w czasie wysyłania na końcówce ss (PB.2) jest stan wysoki. o ile się nie mylę to jeżeli w czasie pracy master pojawi się tam stan niski to układ przechodzi do pracy slave.
Oczywiście, że można. Jedena z ATMeg musi pracować jako slave I2C. Ściągnij sobie z Helionu przykłady do mojej książki, masz tam konfigurację w której połączone są dwa procesory przez I2C.
Bo jest SPI programowe. Tego się nie konfiguruje, tylko w programie odpowiednio steruje piami. W locie. I samo w locie wychodzi czy to MASTER czy SLAVE jest.
Co prawda Kolega pisał, że szuka czegoś co będzie działać na jednej linii, ale może warto by się zastanowić nad I2C (TWI)? Zajmie dwa piny, a nie będzie problemu ze slave'ami. Jedna ATmega będzie masterem, każdy slave będzie miał swój adres i po kłopocie. Komunikacja jest ładnie dopracowana sprzętowo, a program do obsługi tego wszystkiego nie powinien...
RS485 to tylko standard elektryczny. Zwykle po tym standardzie dane przekazuje się za pomocą transmisji szeregowej, z odpowiednią hierarchią master/slave. Po stronie komputera będzie więc to port COM/RS232 (może być wirtualny na bazie FT232RL) + odpowiedni interfejs sprzętowy.
Skoro to ma być odbiornik (układ slave) to polaryzacja nie jest potrzebna. A terminacja tylko w przypadku kiedy to jest ostatni moduł na magistrali RS485.
LCD. Myślę, że dobrze. ATmega zostaje zaadresowana w trybie odczytu SLA+R (Slave Transmitter Mode, bo bit-0 będzie ustawiony), wystąpi przerwanie TWI a w rejestrze TWSR będzie wartość 0xA8 (Own SLA+R has been received; ACK has been returned). Teraz aplikacja powinna wczytać bajt do TWDR i go wysłać, bo to sugeruje adres w trybie odczytu...a tutaj Master...
Układ 74LS07 zawiera bufory z wyjściem OC - które w tym schemacie jest podciągnięte do 3V3 (przez rezystory 4k7). Na tym polega to dopasowanie. Zauważ, że na schemacie który zamieściłeś - linię MISO (Master Input Slave Output) masz odłączoną, więc nie masz informacji z układu który podłączasz (nie odbierzesz nic od twojego RFM70 jeśli jej nie podłączysz...
Witam Zobacz na pierwszą odpowiedz: https://stackoverflow.com/questions/3704...
Po wysłaniu jednego bajtu (i sprawdzeniu SPIF) trzeba ręcznie wyzerować SPIF przed następną transmisją. Poza tym SS (ten od mikrokontrolera, nie od DAC) powinien być ustawiony jako wyjście przed włączeniem SPI (ustawieniem bitu SPE), bo jak nie to mikrokontroler będzie przechodził w tryb slave. Poza zaznaczonymi fragmentami pozmieniałem trochę rejestry...
https://code.google.com/p/robotcontrol/s... Diagnoza jest taka: w slave'ie w ogóle nie wykonują się polecenia pętli ciała głównego programu. W ogóle nie jest wykonywane drive_state[0] = 16; gdyż na ekranie LCD wciąż widzę wartość '49'. Transfer SPI działa gdyż po odpięciu jednego z kabli...
Sprawa jest prosta, odpalasz moduł BT w trybie Slave łączysz go z ATmaega przez port szeregowy i to w zasadzie tyle. Następnie parujesz BT z telefonem i w efekcie masz transparentny kanał komunikacyjny (tzn. nie interesuje Cię co się dzieje pomiędzy BT a telefonem). Dalej pozostaje pisanie aplikacji na Atmega i telefon.
Witam, Mam taki dylemat. W projekcie muszę wykorzystać Attiny2313 i Atmege32. Będą musiały ze sobą się komunikować. Wybrałem, że za pomocą SPI. Attiny jako slave i atmega jako master. Będzie jeszcze jeden slave - enc28j60. Połączyłem MOSI z MOSI, MISO z MISO, SCK z SCK no i dodatkowo dwie inne linie, INT w jedna, i INT w druga stronę - tak w razie czego...
ło matko ;) po opisie kolegi atom1477 i po tej informacji, że "Bascom coś kombinuje" można by uznać, że napisanie sotu do obsługi 1wire to rzecz prawie niemożliwa dla zwykłego śmiertelnika. Tymczasem to co robi Bascom to absoultnie nie żadna kombinacja tylko normalne zachowanie - ponieważ to podtrzymanie stanu wysokiego na pinie portu jest niejako przygotowaniem...
Makra dotyczące SlaveSelect, powinny wyglądać następująco: #define SS_NISKI() (PORTB &= ~0x04); //stan niski na SS #define SS_WYSOKI() (PORTB |= 0x04); //stan wysoki na SS 0x01 - odpowiadało by za PB0 0x02 - za PB1 0x04 - za PB2 - pełniący rolę SS 0x08 - za PB3 0x10 - za PB4 0x20 - za PB5 itd., itp.
Mam 2 czujniki I2C, które osobno działają na każdej z Atmeg. Mam jeden UART, którym wysyłam dane do PC. Chciałbym zmodyfikować kod do tego stopnia abym miał jedną atmegę obsługującą oba czujniki jednocześnie. Od razu jaśniej :) Czy jeżeli kompas działa jako slave i żyro jako slave to razem też mogą być jako slave a wówczas atmega jest masterem? Teraz...
A może linie od SPI, powinny być podciągnięte rezystorami ? Nie. Rezystory w szereg też nie, kondensatory tym bardziej... ;) Skupiając się na kodzie : - Dlaczego w ATtiny nie jest używane USI w trybie SPI ? Przykłady w C są w nocie katalogowej... (Three-wire Mode) - Gdzie jest ustawiany bitrate dla SPI mastera ? - Ustaw tryb slave w ATmega (I tak jest...
Kilka punktów, aby móc się skomunikować przez I2C: 1. trzeba dorzucić sterowniki do jądra jeśli w /dev nie ma i2c-0 2. jeśli mamy już widoczne urządzenie można się posłużyć przykładowym programem z dokumentacji jądra: [url=http://www.mjmwired.net/kernel/Docu... 3. skompilować program cross-kompilatorem i wrzucić...
A samo Buf też jest volatile? W TWDR mastera masz adres slave, bo po prostu master nic nie odebrał. Jesteś pewien, że slawe wchodzi w tryb slave transmit (ST) wielobajtowy? Masz sprzętowy debugger? Jakie są stany rejestru stanu na masterze i slave po kolejnych bajtach? Czysty kod przykładu, bez żadnych modyfikacji działa?
Program się nie wiesza. Nie odpowiada tylko na swój adres. Podstawiłem układ master na ATmega, zamiast urządzenia X, który odpytuje mój slave podobnie jak X i transmisja rusza bez problemu. Tak jak napisałem wcześniej, kod jest z noty, wiesz może którymi błędami w statusie powinienem się zainteresować? Na razie dodałem reset magistrali przy błędzie...
Z tego co wiem transmisja radiowa w przez moduły RFM01 i RFM02 odbywa się poprzez magistrale SPI. Takie może retoryczne pytanie, jeśli w Attiny2313 pod piny z SPI mam podpięty LCD, to będę miał zakłócenia? Zmienić lokalizacje LCD? Próbuje radiowo połączyć attiny2313 MASTER i atmega16 SLAVE. Na początku chcę połączyć przewodami żeby sprawdzić jak działa...
... Nie wiem gdzie błąd :( Bo i skąd możesz wiedzieć , skoro nie sprawdzasz co Ci mówi TWSR :( Np. i2c_send(0b10100000);//<- adres fizyczy 00, 1 bit adresu słowa 0 + Write A skąd wiadomo , że SLAVE odpowiedział ACK :?: Nie przypadkowo , wszystkie funkcje i2c (prócz i2c_init i i2c_stop) zwracają nam zawartość rejestru TWSR. Pozdrawiam Piotrek
Jedne ważne pytanie, czy ktoś wie kto w transmisji SPI ma być Master a kto slave? W przykładach jest niby że Enc pracuje jako Slave, a Atmega jako master // initialize SPI interface // master mode and Fosc/2 clock: SPCR = (1<<SPE)|(1<<MST... SPSR |= (1<<SPI2X); Czy nie powinno być czasami tak, że Masterem...
Musisz całkowicie zmienić obsługe slave. Po pierwsze musisz wprowadzić synchronizację, czyli machać linią SS. Po drugie odbiór w slave należałoby oprzeć na przerwania SPI - SPI nie ma wielostopniowego bufora, kolejne bity nadpisują poprzednie. W efekcie musisz mieć pewność, że zdążysz z odbiorem. To w miarę gwearantują ci przerwania, na pewno nie delaye...
Czy ustawiłeś jedną atmege jako master a drugą jako slave?
Tak też uczyniłem. Niestety nic z tego. Działa tylko pierwsze pole wyświetlacza (1,1) i zmieniają się na przemiennie dwa znaki - czarny kwadracik i spacja Wrzuciłem też ten programik do testowania lcd4busy który ma wyświetlić "TEST" - ale efekt ten sam. A próbowałem jeszcze zwyczajnie podłączyć LCD pod port D (bez tej biblioteki), i w ogóle nie chce...
Cały problem jest w tym żeby te dwie ATmegi się zsynchronizowały. Przerwanie od SPI występuje po zakończenia transmisji pierwszego bajtu. Zanim nastąpi obsługa przerwania to pierwszy bajt zostanie utracony. Nie mamy też gwarancji że dwie Atmegi "wystrzeliły" :) równocześnie i Slave nie czyta np. 4 bajtu nadanego przez Mastera. Jeżeli to by była np....
Ja bym to zrobił tak: PCF co 1s wysyła sygnał przerwania do ATMega8 i wtedy ATMega8 odczytuje czas. ATtiny2313 jest skonfigurowany jako slave. To da się zrobić w Bascomie- nie wiem jak teraz ale parę lat temu można było dokupić programik do zrobienia procesora jako slave. ATMega po odczycie czasu z PCF wysyła aktualny czas do ATtiny. Wtedy ATtiny nie...
W sumie sprawa prosta. Oba procesory łączysz magistralą I2C (SCK obu procesorów razem i SDA też razem połączone). Atmega 8 musi pracować jako MASTER natomiast ATmega16 jako SLAVE. Czyli procesor ATmega8 będzie wysyłał dane do ATmega16. Oczywiście można i odwrotnie to zrobić tzn. że ATMega16 jest MASTER i ATmega8 SLAVE. Wówczas to ATmega16 będzie zgłaszał...
No zobaczę. Właśnie próbuję sam napisać ten UART. O tym SPI też myślałem, ale jako np. atmega jako master i ileś attiny2313 jako slave'y, każdy slave odbiera swoim uartem, analizuje dane i daje przez spi.
Witam. ATmega ma sporą rezystancję wejściową, więc podejrzewam ,że w głównej mierze zależy to od długości przewodów.
Witam wszystkich! 1. Czy przy komunikacji dwóch procesorów poprzez UART można dopuścić sytuację, że jeden procesor (atmega 8 ) będzie pracował na wewnętrznym oscylatorze z tą samą częstotliwością co atmega 16 na rezonatorze kwarcowym ? Tak, ale możliwy transfer będzie zależał od dokładności tego oscylatora - wewnętrzny jest mniej dokładny. Config Com1...
poto max485 bo jest duża odległość i będzie docelowo więcej odbiorników 1 x master x x slave
tak tylko jeden i tylko oznajmia innym masterom że teraz mogą pracować. następnie czeka aż ten master któremu pozwolono działać zamelduje koniec działania. jeżeli nastąpi zwiecha mastera to jest zonk, lecz trzeba po prostu dobrze napisać soft. przy master'ze masterów jest sygnalizacja piszczykiem i lcd który pokazuje który master zdechł. w ciągu 3-ch...
tadzik85 dziękuję za błyskawiczna odpowiedź. Próbowałem tego rozwiązania i niestety gdy w przerwaniu od SPI umieszczę flagę i bez względu gdzie realizuję odbiór czy w przerwaniu od timera czy w pętli głównej drugi bajt wraca do mastera czyli wydaje mi się, że ATmega nie nadąża z odczytem.
Witam, przepraszam, że sie nie odzywałem - pochłonęły mnie świąteczne obowiązki. Dziękuję za Wasze podpowiedzi. Udało się zmusić wszystkie czujniki do współpracy i wypuścić to w LAN. Jedyny problem jaki pozostał to jedna szyna SPI na której pracuje moduł Ethernet i powinien pracować wyświetlacz matrycowy. Niby to działa ale gdy chce coś wypuścić na...
WItam, czy możliwe jest zrealizowanie komunikacji między procesorem atmega 8 pracującym z wew oscylatorem 8mhz Jak już ci napisano w przypadku ATMegi nie jest zalecana praca z generatorem RC, potrzebny jest kwarc. Chyba, że... zastosujesz synchroniczny interfejs USART. Wtedy oprócz Tx i Rx masz jeszcze linię CLK. ATMega to całkowicie wspiera, a USART...
MISO z MOSI nie powinno się zamieniać. Wynika to z nazwy - MOSI = master output slave input, miso = master input slave output.
Nie możesz znaleźć żadnych sensownych informacji na temat OpenGL na ATmega8A, ponieważ to taka sama sytuacja jak brak wyników dotyczących ilości pole position w wyścigach Formuły 1 dla Fiata 126p. Nie ta klasa, nie ta liga. Brak sprzętowego dzielenia, nie mówiąc o braku FPU, dyskwalifikuje te uC z takich aplikacji. Podziwiam sama ideę karkołomnych kombinacji...
Witam, Mam system modułów ZigBee, gdzie występuje jeden Master i wiele układów Slave. Master obsługiwany jest przez procek ATmega dzięki interfejsowi TWI (I2C). Układy Slave mogę wysyłać dane w dowolnej chwili do Mastera a ten informacje przesyła do mikrokontrolera-hosta, który albo aktualizuje sobie stan znanych mu układów Slave, albo pozwala użytkownikowi...
Ja proponował bym CI jakiegoś ATmega, ponieważ ma jedno i drugi co Ci ułatwi zadanie.
I2C albo 1-wire jest dobre do takich zastosowań - bezkonfliktowe. Jeśli mamy master-slave to wszystko jest bezkonfliktowe. W sieci peer-to-peer byłby kłopot i istotnie I2C miałoby przewagę (chociaż I2C w ATMEga chyba nie wspiera arbitrażu). 1-wire slave z kolei łamie licencję na 1-wire - protokół ten możesz wykorzystywać wyłącznie z produktami 1-wire...
Witam, Temat wszędzie wałkowany, a jednak nigdzie nie znalazłem rozwiązania mojego problemu. Mam funckję, która w domyśle ma odbierać dwa bajty ze slave'a. Robi to tak: SPDR = addr; while(!(SPSR&(1<<S... d=SPDR; SPDR = addr; while(!(SPSR&(1<<S... d+=SPDR<<8; addr jako...
Witam. Master to programator, a slave to uC, czyli MOSI to wyjście z programatora i wejście do uC i odwrotnie z MISO. !SS jest używany w przypadku komunikacji z większą ilością układów. Wtedy stan wejścia !SS decyduje czy odbierać dane, czy nie (Slave Select). Ciebie to narazie nie interesuje, więc niech wisi :). Teraz Cię wystraszę. Również próbowałem...
To będziesz musiał się trochę napocić. Po pierwsze jak używasz watchdoga w programie, to musisz w jakiś sposób sprawdzić czy reset aby na pewno służył do upgrade'u. Możesz to zrobić np przez zapis do eepromu jakiejś wartości, odczyt i odczyt jej bootloaderze (pamiętaj żeby bootloader ją resetował). Dobry by był też mechanizm który by pozwolił na zrezygnowanie...
2. RS232 to połączenie tylko dwóch urządzeń. Przynajmniej z założenia. A jeśli się uprę, i podepnę pod DTE (komputer) 16 urządzeń (DCE)? Na wysłaną daną oczywiście zareaguje tylko jedno DCE, które dokona programowej identyfikacji adresu, ukrytego, na 4 pierwszych bitach otrzymanej danej? Kierunek PC>>Odbiorniki OK pod warunkiem, że obciążalność RS232...
A ja zapytam czy masz jakiś kod do obsługi 1Wire slave na AVR? chętnie bym zobaczył bo szukam czegoś takiego właśnie.
Widzę że slave 1-wire pomimo przechwałek nie chodzi jak trzeba. Zdziwię ci bo działa . Przy 18MHz wzorcowo, przy 16 i 14,7 jeszcze nie sprawdzałem, ale prawdopodobnie pojawi się "piczek" przez upływem 2us, czyli przed pobraniem próbki przez mastera (według protokołu, sprawdzę w nocie DS248x kiedy to tak naprawdę robi). <ciach> 3.1.11. Nie wysyłaj...
Oddzielam temat od poprzedniego ze względu na inną naturę problemu. Master generuje przerwanie od Timera2 co 1.15ms. Transmisja SPI ustawiona jest na CLK/4 co przy ośmiu bitach daje czas transmisji równy 0.004ms. Co jedno tyknięcie timera wysyłany jest jeden bajt - zatem 0.004ms co 1.15ms. Działa to wszystko pięknie, bez lagów i przepełniania stosu....
Cześć, Ostatnio zainteresowałem się działaniem magistrali I2C/TWI w MCU Atmega328PB (Arduino Nano). Na razie tylko testuję jak to działa i do linii SCL/SDA podłączam się do analizatora stanów logicznych (podróbka SALEAE) przewodami typu Jump Wire. Gdy napisałem program do komunikacji po stronie mastera i wgrałem go do Atmegi to uzyskałem przebiegi na...
Namieszałeś :wink:. ...odpowiada poprawnie na zapytania Master-a ale po kilku minutach zaczyna krzaczyć. Ale co śmieszniejsze krzaczenie widać na LCD Mastera , ale kiedy jednocześnie podglądam w terminalu na PC co się dzieje w sieci to ów moduł odpowiada jednak poprawnie To co "krzaczy"? Master dostaje poprawną odpowiedź i "krzaczy"? Czy Slave wysyła...
Zapewne nie wczytałeś się zbyt dokładnie w dokumentację do SPI, mianowicie jeśli pin SS jest wejściem i panuje na nim stan niski, to SPI kasuje bit MSTR. Jeśli pin SS jest wyjściem, to bit MSTR nie jest nigdy modyfikowany. -- edit: 19.3.2 Master Mode When the SPI is configured as a Master (MSTR in SPCR is set), the user can determine the direction of...
Witam Mam dość irytujący problem z obsługą magistrali i2c, otóż do slave'a #include <avr/io.h> #include <util/delay.h> #include <usart.h> #include <twi-master.h> void write_char_i2c(unsigned char z) { twistart(); twiwrite(0x50); twiwrite(0x01); twiwrite(z); twistop(); _delay_ms(5);//...
Witam Chciałbym podłączyć do Atmega 8 wyświetlacz 4x led 7 seg. Ponieważ nie chciałem przez porty procesora multipleksowo sterować wyświetlaniem, żeby nie tracić portów wydumłem żeby wykożystać PCF8574AP (expander) przez złączae I2C. Niestety kość PCF kosztuje 3x Atmega8 :O W związku z tym taniej poświęcić inną Atmega8 i nią sterować LEdami chyba. Teraz...
Witam Z tego co zrozumiałem chcesz zrobić komunikację między dwoma AVR-ami na I2C. Czy masz już zrobiony SLAVE ? Czytając na forum o takim połączeniu dowiedziałem się że nikomu nie udało zrobić SLAVE na AVR.
TWDR = RTC_ADDR_R_0; TWCR = (1<<TWEN) | (1<<TWINT); while (!(TWCR & (1<<TWINT))) {} if ((TWSR & 0xF8) != TW_MR_SLA_ACK) {TWCR = (1<<TWSTO) | (1<<TWEN) | (1<<TWINT); return 0;} TWCR = (1<<TWEA)...
Mam pytanie dotyczące UART i RS485 jak można zrobić taki układ: dwie atmegi, dwie diody i dwa przyciski. przycisk zapala diodę w przeciwnym uC przez RS485. Jak rozwiązać problem zamiany pary slave-master na master-slave niejako dynamicznie?
Nie, poczytaj jak działa SPI - w skrócie każda transmisja to wymiana 8 bitów między urządzeniami. Wymianę kontroluje MASTER. Czyli, żeby coś odebrać musisz NADAĆ 8 bitów - w tym samym czasie SLAVE też prześle ci 8 bitów. Tu sytuacja jest nieco bardziej skomplikowana, bo układ współdzieli MISO z MOSI. Ogólnie ja bym rozwiązał to podpinając SIO do pinu...
Witam mam problem - usiluje zrealizowac na atmedze 8 odczyt danych z tablicy po spi do mastera .. tylko nie jestem w stanie odpalic spi na atemedze w trybie slave tj : chce aby atmega wysylala ciagle dane mastera < nie uzywam MOSI w masterze > poprostu atmega robi swoje i podczas podania stanu 0 na pinie SS powinem odczytaj sobie bajty... ale...
Ty czy Kardaś? No ta w zasadzie popodmieniałem nazwy komend w przypadku mastera, ale w tym przykładzie nie ma dużo więcej do roboty, jak uda się stworzyć własną apkę na kompa to trochę pozmieniam (dodam więcej case'ów xd). Dużym problemem było to, że nie zaznaczyłem zapisu eepromu w eclipse, ale nadal są błędy teraz już chyba tylko po stronie slave'a:...
Według mnie można spróbować bez jakichkolwiek translatorów. W I2C stan wysoki na liniach SDA i SCL wymuszany jest przez rezystor podciągający. Urządzenie, także master pracują w trybie otwarty kolektor. Wystarczy więc, że swoją linię SDA podciągniesz do 3V, ATmega już sobie poradzi z odczytywaniem stanów, a także ich wystawianiem.
W Slave wpisujesz bajt do SPDR dopiero, gdy wchodzisz do przerwania. Czyli w momencie, gdy transmisja została już zakończona! (Nastąpiła wymiana danych DO i Z) To jest trochę dziwne, ale w przypadku Slave, w momencie wejścia do przerwania od SPI dane z bufora SPDR już zostały wysłane. Oznacza to, że w pewnym sensie trzeba przewidzieć co chcesz wysłać,...
Tak, są podciągnięte. Problem się robi po dodaniu tej jednej linijki. Wydaje mi się że to będzie problem ze zmiennymi. Dodano po 10 Wystarczy że np. usunę całe menu ustawiania zegara i wtedy adc wyświetla - ale przecież jakoś ten zegar muszę ustawiać. Podobnie ma się sytuacja jak zostawię ustawianie zegara a usunę linijki odpowiadające za wpis do pamięci...
Powiem tak: symulator działa bardzo dokładnie (przed chwilą sprawdziłem). Odwzorowuje wszystkie detale SPI. W dokumentacji jest napisane, że jeśli pin SS jest wejściem o stanie niskim, to bit MSTR jest kasowany. Ponieważ DDRB konfigurujesz po SPCR, to nie udaje Ci się ustawić bitu MSTR (zostaje on natychmiast skasowany) i SPI pracuje jako slave. Przesuń...
Nie no, nie ironizujmy :) :). Jednak warto chyba od razu podejść do tego tak że wymiana informacji (przesył) wymagająca odbioru poprawnych danych powinien odbywać się co najmniej z sumą kontrolną. No jak chcemy zrobić niezawodne połączenie, to już musi być potwierdzenie otrzymania danych (np. w formie odpowiedzi slave-a z wysłaniem żądanych danych).
Temat SPI jest obszernie poruszony w dokumentacji do kazdej z ATMega, wiec proponuje poczytac. CS (Chip select) - wybor slave na szynie SPI, aktywny stan niski. CLK - sygnal zegarowy szyny SPI. Co do stabilizatora to trzeba sciganac dokumentacje i poczytac jaki ma "dropout" i wydajnosc pradowa. Ja wlasnie sciagnalem - wydajnosc pradowa 3A i dropout...
Dla poprawienia rodzielczości proponuje zastosować starą poczciwą metodę skalowania zgrubnego i dokładnego. Tzn. Przełacznik zakresu na jakiejś drabince stałorezystancyjnej lub przełączniku CMOS 4051 i na koniec finish na PWM. Tak jest bardziej kulturalnie. Chociaż z PWM do stabilizacji to troszkę bym polemizował , ale to tylko kwestia klasy urządzenia...
Rozumiem, że każde odwołanie do SPI powoduje automatyczne wystawienie na PB0 stanu niskiego Nie. W trybie Master pin SS nie jest wykorzystywany, może służyć jako dowolne wyprowadzenie, choć dla wygody (bo tak ładniej wygląda :] ) oczywiście wykorzystuje się go do sterowania linią /CS w urządzeniu Slave, ale nie ma takiego przymusu, inny pin też może...
Wysyłanie bajtów nie powoduje błędów... A skąd ta pewność. W żaden sposób nie sprawdzasz poprawności transmisji. To, że program się nie wiesza, nie oznacza wcale, że transmisja przebiega prawidłowo. Spróbuj chociaż sprawdzać bit potwierdzenia od układu slave (np. tak, jak było opisane w tym [url=http://www.elektroda.pl/rtvforum/to...
ale schemat rs czy 1wire ? RS moze byc "lancuksziem" a moze i byc gwiazda* schemat moge ci machnac wraz z kodem ..jakims ale wiadomo ze w towjej gestii bedzie go poprawic :) 2 mastery w sieci to powazne wyzwanie .. lepiej do tego celu zaprzadz 1 master w formie komputera <zwykla przejsciowka rs232<>rs485 dostepna w avt za grosze> a tu prosze...
Nie znam bascoma :) Jeżeli wysyłasz lub odbierasz bity po magistrali rs możesz komunikować sie z wieloma urządzeniami np za pomocą max485 napewno 32 urządzenia, jedno urządzenie pracuje jako master reszta jako slave. Master wysyła poszczególny adres do danego urządzenia (slave) i czeka na odpowiedź itd.
Pamiętaj, że zanim zaczniesz czytać przydałoby sie podać adres od jakiego chcesz zacząć odczyt. Inaczej przy każdym wywołaniu Twoja procedura będzie czytać dane z innego obszaru. Zwykle tak jest, ale chyba akurat tego układu to nie dotyczy ( tea_read_registers() po starcie powinieneś użyć TEA_READ_ADDRESS zamiast TEA_WRITE_ADDRESS. Jeśli chodzi o adresowanie,...
Fullduplex czy multimaster? Jak multimaster, to raczej szedłbym w kierunku CAN. Slave jest slavem, dlatego że nie pytany, nie gada, a skoro ma odpowiadać na pytania, to jest halfduplex. Arduino i Nucleo w większości przypadków są źle zaprojektowane, to nie są płytki referencyjne, nie ma żadnych badań. Tam nawet nie ma jak dobrze masę wyprowadzić. Kiedyś...
atmega master slave rs232 atmega slave modbus slave atmega
przetwornica asynchroniczna pompa kulka skrzynia automatyczna dodge
sharp lc46le824e falownik powmr
Zabezpieczenie do spawarki 250A: jak dobrać? Programowanie pamięci Flash MX29LV640: Poradnik