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.
Czy Spi w atmega w trybie slave generuje zegar?
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.
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.
Poczytaj sobie: http://forum.atnel.pl/topic1183.html
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...
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...
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ń.
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. :)
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...
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...
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.
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.
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.
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.
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...
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, Posiadam dwa aplikację zaprogramowane na dwóch mikrokontrolerach Atmega 328p-pu: 1. Pierwsza to obsługa magnetometru na szynie TWI, działająca na zewnętrznym kwarcu 16 MHz, Baudrate:9600, TWI 40kHz 2. Druga to obsługa żyroskopu na szynie TWI, działająca na wewnętrznym rezonatorze 8MHz Baudrate:14400, TWI 40kHz Chciałbym scalić te dwa programy...
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...
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.
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...
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ć...
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...
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.
... 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...
Witaj, Ja też walczę z SPI od pewnego czasu, ale używam SPI w Atmega8515 jako Slave. Jeśli dobrze zrozumiałem, to masz problem z USI w Attiny26. Z tego co wyczytałem w pdf'ie i z tego co pamiętam jak się bawiłem tym prockiem, to USI można skonfigurować jako normalny SPI. Musisz tylko odpowiednio ustawić bity rejestru USICR. Nie wiem po co liczysz impulsy...
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...
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...
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...
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...
Witam Uruchomiłem kod z książki tmf`a do obsługi i2c w avr jako slave. Problem w tym, że o ile przesłanie pojedynczych danych działa doskonale. To jeżeli chcę przesłać dane na podstawie odebranej wartości to bit TWDR przyjmuje wartość adresu odbioru, a master zawiesza się. Przerwanie: [syntax=c]ISR(TWI_vect) { uint8_t status = TW_STATUS; switch(status)...
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...
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...
Witam Zobacz na pierwszą odpowiedz: https://stackoverflow.com/questions/3704...
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...
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ł...
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...
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.
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...
[syntax=csharp]#ifdef DOGLCD #ifdef U8GLIB_ST7920 //SPI GLCD 12864 ST7920 ( like [www.digole.com] ) For Melzi V2.0 #define LCD_PINS_RS 28//17//28 //CS chip select /SS chip slave select #define LCD_PINS_ENABLE 12//16//11 //SID (MOSI) #define LCD_PINS_D4 11//15 //SCK (CLK) clock #endif #endif[/syntax] JTAG wyłączony. Kombinowałem ze zmianą pinów ale to...
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...
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...
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....
Na stronie 16 datasheet jest opis, uproszczony przykład odczytu (żadne błędy nie są sprawdzane): [syntax=basic4gl]' przykładowa konfiguracja dla sprzętowego TWI Atmega 2561 $lib "i2c_twi.lbx" ' biblioteka obsługująca hardwarowe TWI Config Scl = Portd.0 ' konfiguracja SCL i SDA Config Sda = Portd.1 Config Twi = 100000 ' 100KHz 'Config Twi = 40000 ' 40KHz...
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.
(at)R-MIK A co ma emulacja urządzenia do realizacji protokołu 1-wire? Przy emulacji czegoś więcej niż numer seryjny, do wykonania dochodzą dodatkowe czynności co ma znaczenie w overdrive bo zajmuje cenny czas procesora. Kolega emulował 1-wire slave overdrive i nie napotkał takiego problemu? if (ovedrive ) .... if (rodzina==xx).... Tego nie ma w emulacji...
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....
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.
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 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?
Faktycznie jest napisane : "otóż do slave'a [atmega 32]", a ja jakoś to przeoczyłem i 5ms dałem z dataszitu 24c32. Mea culpa.
A w jakim celu tak okrutnie komplikujesz zupełnie prostą rzecz? Potrzebujesz tylko masy, RX i TX, wspólnych dla wszystkich slave. Resztę łatwiutko załatwi oprogramowanie - każdą wymianę informacji rozpoczyna Master wysyłając polecenie z numerem Slave, z którym chce pogadać. Typ użytego uC nie ma tu żadnego znaczenia. Z drugiej strony - jeśli odległość...
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ć,...
Witam, Mam problem i nie mogę znaleźć odpowiedzi, sam nie wiem co może być nie tak i w internecie na forach nie widziałem podobnego problemu. Mianowicie. Zaprojektowałem układ elektroniczny do sterowania zaworami, zawór działa na 24V i prąd około 63mA. Zawór załączany jest przez tranzystor 2N2222A. Sercem sterownika jest ATMega328P-PU, wszystkie podstawowe...
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ń...
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:...
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).
No to juz twoja glowa zeby wiedzial, kazdy uklad ma zbior instrukcji ktore okreslaja co ma w danej sytuacji zrobic, np jak dostaje 0x45 to odpowiedziec 0x35 a jak 0x25 to zapisac nastepny bajt jaki otrzyma itd itp... Jako ze kazdy uklad ma swoj zestaw instrukcji, a avr takowego nie ma by moc pracowac w dowolnej konfiguracji, to sam musisz taki zestaw...
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...
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...
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...
Zobacz na tą notę aplikacyjną, tam są opisane metody zarządzania linią nadawania i odbioru. [url=www.st.com/resource/en/application_... W sytuacji wykorzystywania przerwania pustego bufora i tak trzeba odliczyć czas do przełączenia. Specyfikacja standardu wymaga, żeby przełączenie nastąpiło w połowie czasu wysyłki jednego bitu po...
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,...
Nie zauważyłem kodu slave'a...
atmega master slave modbus slave atmega rs232 atmega slave
scenic ogrzewanie szyby czyszczenie tlenków zmiana wiersz kolumna
Kod błędu F134 w piekarniku Electrolux - przyczyny i naprawa Lokalizacja i diagnostyka magistrali CAN w Valtra 6850