witam A gdzie masz inicjacje magistrali TWI. Brakuje mi w twoim programie Witam, postanowiłem "ugryźć" najpierw EEPROM. czegoś np. takiego [syntax=c]void TWI_inicjacja(void) { // Czestotliwosc TWI(i2c) = 100kHz (max 100kHz) -> atmega8 taktowana wewnetrznie 8MHz // ----------------------------------------... /* TWSR = TWS7 TWS6 TWS5 TWS4 TWS3 -...
TWPS to nazwy bitów TWPS1, TWPS2, a TWBR to rejestr
Nawet to nic nie daje, cały czas bez zmian: [syntax=c_loadrunner]#define F_CPU1 16000000L void I2C_SetBusSpeed(uint16_t speed)// czestotliwosc taktowania magistrali { speed = (F_CPU1/speed/100-16)/2; uint8_t prescaler = 0; while(speed>255) { prescaler ++; speed = speed/4; }; TWSR=(TWSR & (_BV(TWPS1)|_BV(TWPS0))) | prescaler; TWBR = speed; }[/syntax]
Mam takie[syntax=c]// Set TWI boud rate TWBR = 0; // 0 - bardzo szybki, 255 = 14 kHz [/syntax] Chyba zaczynałem od 255 i doszedłem do 0. Zawsze możesz zwolnić tą magistralę. Ja mam kwarc 7,38MHz a EEPROM przy procesorze i oporniki 4k7 do VCC
Witam, Przyczyną problemów może być brak skonfigurowania prędkości portu I2C. Prędkość portu jest określana wzorem: SCL frequency = CPU Clock frequency/(16 + 2(TWBR) ⋅ 4^TWPS) Jeżeli rejestry TWBR i TWSR nie są inicjowane, to po resecie TWBR i TWPS mają wartości =00h. Czyli dla oscylatora 8MHz otrzymamy częstotliwość szyny 8Mhz/16=500kHz a maksymalna...
C nie znam ale: TWCR = (1<<TWINT) | (1<<TWEN); powoduje odczyt z PCFa bez ACK. Czyli PCF powinien zerwać transmisję. Aby odczytywać z ACK to ustaw jeszcze bit TWEA. No ale widzę że czytasz 1 bajt więc robisz to jako NACK bo bajt jest ostatni, czyli jest ok. Jednak aby wyświetlić na lcd E3 to czekasz w pętli na ACK które przecież nie przyjdzie...
witam Na początek sprawdź Fuse Bits (taktowanie procesora) na jaką częstotliwość zegara jest ustawiony procesor. Potem już w programie zainicjuj magistrale TWI. Jak to zrobić, ano tak: void TWI_inicjacja(void) { // Czestotliwosc TWI(i2c) = 100kHz (max 100kHz) // ----------------------------------------... /* TWSR =...
Jest usttawiona w funkcji twi_init() na 10kHz. void twi_init(void) { TWSR = 0; TWBR = ((16000000/100000)-16)/2... }
Jeżeli ATMEGA pracuje z F=8MHz to źle jest ustawiona częstotliwość szyny I2C. 8MHz/(16+2*2)=400kHz a PCF8583 pracuje do 100kHz. Kolega korzysta z procedur I2C i RTC mojego autorstwa, lecz w oryginalnym kodzie prędkość szyny była ustawiona na 95kHz (TWBR=0x22 dla FCPU =8 MHz). JarekC
Witam Spójrz na mój artykuł o I2C czyli TWI na procesorze Atmega8 jest tam też sposób wykorzystania - kodowania układu PCF8583 i układu PCF8574AP (układ PCF8574AP to to samo co PCF8574A). Pisałem ten artykuł z myślą o początkujących kolegach zobacz może coś wybierzesz z mojego kodu a jest to zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583...
Rezystory podciągające 4k7 na SCL i SDA. Pin 2 i 6 układu MAX232 jest źle podłączony(zerknij do dokumentacji). Q1 = 32,768kHz. W szeregu z Q1 daj trymer do kalibracji dokładności. Kwarc dla ATmega8 źle podłączony! Częstotliwość dla kwarcu ATmega8 dowolna z zakresu stabilnych określonych przez producenta(Atmel). Rezystor R1 = 22k lub specjalistyczny...
ldi r16,(1<<TWPS0) sts TWSR,r16 ldi r16,18 sts TWBR,r16 ret z tego wychodzi preskaler 160 czyli przy 1Mhz sygnał clk ma czestotliwość 6250Hz. niby nic nie szkodzi że tak wolno ale sprubuj dać wiecej. dodał bym jeszcze ldi r16,(1<<TWEN) sts TWCR,r16 w procedurze inicjalizacji i jakieś jakieś małe opuźnienie. jak bede w domu...
[syntax=c]inline void rtc_init () { TWSR |= (0<<TWPS0)| (0<<TWPS1); TWBR = (8000000/10000-16)/2; TWI_start(); TWI_write(RTC_ADRESS); TWI_write(0x00); TWI_write(0x00); TWI_stop(); }[/syntax]
Witam, Piszę od nowa program dla DS1307. Mój problem polega na tym, że dziwne wychodzą mi wartości podczas wyliczania jaką wartość powinien mieć rejestr TWBR. Dane: częstotliwość Atmega8l = 1000000 | 1Mhz TWPS = 1 (preskaler 1) SCL= 100khz (DS1307) Podstawiając to do wzoru z dok. technicznej Atmega8l [url=http://www.atmel.com/images/atmel-2...
Z tym adresem, to zależy czy masz PCF8574, czy PCF8574A - s. 9 pdf-a ... No i jaką wartość przybiera u ciebie TWBR ? Powinna być wieksza od 10 w/g noty katalogowej ATmega8, s. 167, powtórzone jest to w każdym AVR z TWI.
Witam. W C programuję od niedawna i mam problem w uruchomieniem PCF8583 po sprzętowym TWI. Przestudiowałem noty, popodglądałem rozwiązania innych...no i nie działa. Linie danych podciągnięte do Vcc rezystorami 2kOhm. Wartość, którą odczytuje, to adres PCF'a. Gdzie może być błąd? Może jest to spowodowane porą, ale ja już nie mam pomysłu. Pozdrawiam,...
Używam atmege8 i korzystam ze sprzetowego TWI. Czyli gdybym zasilił logikę i LCD z 5V nic złego nie powinno się stać? Ale jak sądze wtedy te kondensatory byłyby nie potrzebne, a do VLCD należałoby podać również 5V? edit: Podłączyłem zwykły wyświetlacz na HD44780 i wyświetlam zawartość rejestru TWSR. Po wysłaniu adresu mam kod 0x20- wysłano adres, nie...
To znaczy program zawiesza się po wysłaniu pierwszej komendy na magistralę. Program się kompiluje ale nie działa w Proteusu ...to znaczy próbowałeś go na sprzęcie, czy w symulatorze tylko? Nie ustawiłeś TWBR ani bitów TWPS w TWSR. Ich wartość jest inicjowana podczas startu jako 0, a to daje przy 8MHz zegarze częstotliwość magistrali ponad 444kHz. Jesteś...
Użyj sprawdzonych bibliotek do zegara. Pamiętaj o rezystorach podciągających. [syntax=c] void TWI_inicjacja(void) { // Czestotliwosc TWI(i2c) = 100kHz (max 100kHz) -> atmega8 taktowana wewnetrznie 8MHz (RC=8MHz) // ----------------------------------------... /* TWSR = TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 */ TWSR =0b00000000; // Preskaler =...
Witam Siedzę nad tym już jakiś czas.... Gdy ustawiam fuse bity na rezonator wew. od 1-8Mhz wszystko działa jak trzeba, procek startuje odczytuje TWI bez błędów, nie zawiesza się. Natomiast, gdy zmienię ustawienia i odpalę go na zew. Kwarcu, 8Mhz - procek startuje, ale zawiesza się po 1-2 odczytach, odczytuje bzdury. Kombinowałem już z TWBR TWSR aktualnie...
Witam, W jaki sposób w Bascomie uruchomić TWI bez korzystania z dodatkowych bibliotek - Atmega8 jako Slave Receiver? Próbowałem (piszę z pamięci tak w skrócie, korzystałem z PDF'a): Enable Interrupts Enable TWI ' lub ustawiałem odpowiedni bit w rejestrze TWCR 'TWBR i bity preskalera ustawiałem na "0" i na 400kHz On TWI Sprawdzaj Do if Flaga=1...
z dokumentacji Rate Controlled by I2C Master 400 kHz A czy autor pracuje na zbyt dużej predkości? Błagam o pomoc bo już nie mam na to dziadostwo siły. Ja zrobiłem sobie timeout przy czekaniu na koniec operacji. Zrób to i wyświetl zawartość TW_STATUS. Będzie wiadomo coś więcej. Czemu nie użyjesz Atmega88? Jest tańszy i ma DebugWire, można bez problemu...
Już śpieszę z wyjaśnieniami. Wróżenia z fusów nie oczekuję, lecz w pełni zadowoliłby mnie fragment działającego kodu do usypiania i budzenia atmegi. Schematu niestety nie ma. Puki co, układ jest zmontowany na połączeniu pająka z płytkami uniwersalnymi. Nie mam niestety nawyku pisania komentarzy. Może to nieco utrudniać interpretację. Oto cały kod: [syntax=c]/*...
Witam Mój ATMEGA8 śmiga na kwarcu 24 MHz :D i działa stabilnie. Program może nie wymagajcy, ale pracuje w nim zapis i odczyt z zewnętrznej pamięci EEPROM 256kb (TWI) - 100kHz, na bitrate 32, i wyświetlanie na LCD 2x24 4-ro bitowo dynamicznego tekstu (taki który sie przewija po LCD). Czy można dać szybszy kwarc ?? ;D Pytam tak z ciekawości :). A tak...
Wydaje mi sie, ze zgodnie ze standardem IIC układy powinny móc pracowac do częstotliwości 100 lub 400kHz, i faktycznie PCF8583 ma max częstotliwość SCL = 100 kHz, natomiast przy fzeg megi = 1MHz i TWBR = TWPS0 = TWPS1 = 0, wychodzi dopiero 62.5kHz. Ale wyszedł fakt, ze PCF wymaga 4.7us wolnego miedzy jedną transmisją a drugą i tu może leżec problem....
Jestem na etapie pisania programu obsługi czujnika TSL2561 w assemblerze na atmedze8 w związku z czym mam parę pytań. Póki co jestem na etapie inicjacji komunikacji poprzez TWI. Atmega8 pracuje na wewnętrznym oscylatorze 1MHz -> ustawiłem TWBR=1 oraz TWPS 00 (wartość 1). wyliczyłem że Fscl=41,6 kHZ. Czy to jest zrobione prawidłowo i czy ma prawo działać?;)...
Ja probuje wyslac tylko jeden bajt z jednego uC do drugiego i mimo wielu przeczytanych postow dalej nie wiem co jest nie tak i nie moge sobie poradzic z komunikacja miedzy dwoma uC po i2c. Gdyby ktos byl tak uprzejmy i powiedzial co jest nie tak w moim programie :) a oto i on: MASTER: main() { TWBR=0b00001110; // cbi(TWSR,0);...
OK, napiszę swoją, ale nadal nie wiem czy mam 3,6 czy 5V układ czy schemat jest ok itd. (pytania powyżej)? Dodano po 2 Czekając na odpowiedzi piszę pierwszą funkcję swojej biblioteki I2C: TWI_Init() Zakładam na razie transmisję z zegarem 100kHz. #define F_CPU 12000000UL void TWI_Init(void){ //Ustawiam prędkość transmisji 100kHz ze wzoru:...
void i2c_init(void) { TWBR = 0xff;//0x04; } unsigned char i2c_start(void) { TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); while (!(TWCR & _BV(TWINT))); return TWSR; } unsigned char i2c_write( unsigned char data ) { TWDR = data; TWCR = (1<<TWINT)...
Znalazłem podobny temat https://www.elektroda.pl/rtvforum/topic8... ale za bardzo nie mogę zrozumieć odpowiedzi (późna godzina może). Jaki adres ukłądu w końcu powinienem użyć? Poniżej daję kod, który nie działa (funkcja zwraca false). Prośba o spojrzenie, co robię źle. Z pamięciami eeprom pierwszy raz się spotykam. Od razu pytanie odnośnie...
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Więc może wkleję trochę kodu. I2C_ini: ldi R16, (1<<TWEN)|(1<<TW... out TWCR, R16 ldi R16, 50 sbr R16, TWGCE out TWAR, R16 ldi R16, 32 ; FOSC 16+2*32*4^(TWPS10)= 100KHz out TWBR, R16 ldi R16, 0b11111010 out TWSR, R16 ret (...) in R16, TWCR sbr R16, TWSTA sbr R16, TWINT out TWCR, R16 rt: in R16, TWSR...
Doszedłem to tego że to napewno nie wina PCF'a, bo podlaczajac go do Portu Com w PC sprawdziłem ze działa dobrze i się nie zawiesza. Procedura PCF8574_set_oputputs() też jest dobra, też nie zawiesza nic, mimo zmiany wyjścia 7 z 1 na 0 i odwrotnie. Wina zatem musi leżeć w procedurze PCF8574_get_inputs(). #include <avr/io.h> #include <avr/rs232.h>...
Witam, Chcę połączyć ze sobą dwie atmegi po TWI korzystam ze standardowej biblioteki do obsługi sprzętowego TWi tak jak w datasheetach. Jak podłączę jednego AVR do np Ds1307 to obsługa jest ok w dwie strony. Problem mam gdy połączę Atmega32 (master) z Atmega8 (slave) tzn gdy z Atmegi32 wysyłam coś np literkę 'q' to jest ona wrzucana do buf2 i ma się...
Zegar SCK już zmniejszałem. Najlepiej działał przy 10 kHz, tak jak pokazywałem. Przy wyższych niemal od razu staje. Chciałbym zauważyć, że sposób obliczania wartości TWBR przedstawiony w pierwszym poście jest nieprawidłowy, w związku z czym nie uzyskasz zakładanej częstotliwości 100kHz na magistrali, tylko dużo niższą. W ogóle przy taktowaniu F_CPU=1MHz...
Witam Jako, że od niedawna uczę się języka C postanowiłem zająć się obsługą RTC DS1307. Jeśli komunikacja odbywa się wg noty katalogowej, czyli bez użycia przerwań to wszystko działa. Ja natomiast chciałbym skorzystać z ISR(TWI_vect). twi.c TWI START i dalej cisza...
Właśnie doszedłem do tego... W nocie EEPROM-u jest to nawet napisane. Dokładnie że zapis będzie trwał max 5ms... Tutaj gotowe, działające procedury jakby ktoś chciał: ;***************************************... ;Ustawienie zegara Fscl = 100kHz ;Wzór na stronie 167 noty aplikacyjnej Atmega8 sbi DDRC, 4 sbi DDRC, 5 ;piny TWI jako...
co robią w środku te funkcje? niestety nie uzywam bascoma - tu masz takie proste funkcje w C [syntax=c] #define SCL_CLOCK 100000L void I2Cinit(void) { TWSR = 0; TWBR = ((F_CPU/SCL_CLOCK)-16)/2; } uint8_t I2Cstart(uint8_t addr) { uint8_t tw; TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); tw = TW_STATUS...
Mam problem z uruchomieniem tda7315. Mianowicie napisałem program do obsługi szyny I2C no i wszystko wydaje się wysyłać poprawnie (mam podłączony lcd i wszystkie instrukcje się wykonują), a na wyjściu cisza. Wysyłam najpierw adres tda7315, który jest 0x80, a później 0x20, który według noty to -40dB [syntax=c]#include <avr/interrupt.h> #include...
A oto fragment kodu odpowiedzialny za obsluge TWI: //I2C void I2C_init( unsigned int adres) { TWBR=0x20; TWAR = adres ; // rejestr z adresem slave TWCR=0x45; TWSR=0x00; } //************* //********************** SIGNAL (SIG_2WIRE_SERIAL) { Status_I2C = TWSR&0xFC; switch(Status_I2C) { //TRANSMITTER case 0xA8://odebrano bit startu i bajt adresu do odczytu...
Zaczynam naukę TWI i zamierzam połączyć tą magistralą dwa procesory atmega8, poniżej kody dla master i slave, połączenie 2 razy sprawdzone linie SDA i SCL podciagniete rezystorami do +, wszystko wydaje się być ok ale jednak brak reakcji na odebrane dane które mają być wysyłane na wyświetlacz led. Wyswietlanie na led też sprawdzone (wysyłane dane przez...
SIGNAL(SIG_INTERRUPT0) { short int a; lcd_xy(0,0); write_text("Temp:")... GIFR = 0x40; a = odczytaj_temp(); write_temp(a); zapis_twi(0x00,0x04); //reset flagi wyst przerwania w pcf GIFR|=_BV(INTF0); lcd_xy(1,0); zapis_twi(0x07,0x80); //ustawienie wart poczatkowej...
Chciałbym odczytać bajt ze wskazanego miejsca w eepromie 24c16 za pomoca nastepujacego kodu: odczytbajtu: SER W OUT TWBR, W CLR W OUT TWSR, W LDI W, (1<<TWINT)|(1<<T... OUT TWCR, W RCALL wait IN W, TWSR CPI W, 0X08 BRNE error LDI W, 0XAA OUT TWDR, W LDI W, (1<<TWINT)|(1<<T...
Witam Od kilku dni męczę się z magistralą i2c(twi) w atmega8 ,chcę podpiąć expander PCF8574a. Znalazłem bibliotekę i2c.h do obsługi pcfa,działa na niej zadawanie stanów, problem jest z odczytem gdy zmienie stan fizycznie przyciskiem np.(z niskiego na wysoki) on i tak odczyta to co miał wpisane poleceniem. Mam wrażenie, że coś jest nie tak z tą biblioteką...
Witam, Czy masz zainicjowany interfejs TWI - szybkość transmisji (rejestry TWBR i bity PWPS1 i TWPS2 w rejestrze TWSR? Pozdrawiam JarekC
Jesli plik def88... zawiera cos podobnego to jest to plik z rejestrami dla asemblera [syntax=avrasm] 40#ifndef _M88DEF_INC_ 41#define _M88DEF_INC_ 42 43 44#pragma partinc 0 45 46; ***** SPECIFY DEVICE ****************************************... 47.device ATmega88 48#pragma AVRPART ADMIN PART_NAME ATmega88 49.equSIGNATURE_000= 0x1e 50.equSIGNATURE_001=...
Witam. Od kilku dni walczę z kodem do obsługi RTC DS1307 z atmega88. Niestety bezskutecznie - nic nie działa. Wszystko jest połączone dobrze bo z arduino wszystko działa. Mój kod jest zlepkiem kodów z tych stron: https://exploreembedded.com/wiki/Real_Ti... https://github.com/jarzebski/Arduino-DS1... Kod "rtc.c": [syntax=c] #include...
Dzięki, link pomógł. Jednak rejestrom GYRO_CONFIG i ACCEL_CONFIG trzeba przypisać wartości, początkowe nic nie dają. Teraz wartości na wyjściu się zmieniają, tylko problem jest taki że odczyt jest pojedynczy, za drugim razem jest pustka, tak jakby się zawieszał. A przecież wgląd w nie powinien być bez ograniczeń. Próbowałem dać lekkie opóźnienia pomiędzy...
Witam, Tworzę projekt, który zawiera w sobie odczytywanie wartości akcelerometru (MPU 6050), który komunikuje się z atmega8, a ten z kolei wyświetla informacje na wyświetlaczu. Całość opiera się o I2C. Korzystam z tej inicjalizacji I2C: [syntax=cpp]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h>...
Witam, Od niedawna mam mały problem z zapisem do eepromu typu 24c64. Odczyt działa mi elegancko, ale z zapisem mam już mały kłopot. Próbowałem różnych podejść do sprawy, ale wszystko poszło na marne. Najlepiej zobrazuje to kod programu: Proszę o pomoc, bo już nie mam co wymyślić. O co tak na prawdę mi chodzi. Po wysłaniu porcji danych (jednego bajtu)...
http://obrazki.elektroda.pl/3014732000_1... witam, Proszę o pilną pomoc w uruchomieniu komunikacji między dwoma atmegami. Sklejam projekt inzynierski (quadrocopter)i prace staneły na module komunikacji radia z plytą główną po i2c. W skrócie ; -odbiornik rc 2,4GHz daje na wyjsciu 8 PWM -konwertuje PWM na PPM -atmega8 analizuje PPM i...
Witam. Próbuję podłączyć układ PCF8574 do Atmeg'i8. Korzystam z opublikowanej na tym forum biblioteki TWI. Prosiłbym aby ktoś wytknął mi błędy w komunikacji z tym układem. Próbuję ustawić na wszystkich wyjściach stan wysoki. Z noty katalogowej wyczytałem że ma to wyglądać tak: Start -> wysłać bajt zawierający adres tj. ( 0100 A2 A1 A0 0/1 ) 0 lub...
Witam, Męczę się z kawałkiem kodu, który wbrew (mojej) logice, działa nie tak jak powinien. Chcę wyświetlić element tablicy stringów z pamięci PGMEM, a w niektórych wypadkach otrzymuję śmieci. 05, Piątek 05, ŔGŔFŔEŔDŔCŔBŔAŔ(at)Ŕ?Ŕ>Ŕ=Ŕ<Ŕ;Ŕ:... 05, ŔGŔFŔEŔDŔCŔBŔAŔ(at)Ŕ?Ŕ>Ŕ=Ŕ<Ŕ;Ŕ:... Zmienne idx i d.WeekDay zawierają tą samą wartość,...
Witam, dzięki za pomoc ;) faktycznie adres był zły ... i czujnik spalony. 2w1;) został jeszcze problem z zapisem współczynnika emisyjności. odczytuje chyba dobrze. chyba bo zawsze jak coś było nie tak to wysyłał 255 w low byte i high byte a współczynnik jest ustawiony fabrycznie na 1. współczynnik jest odczytywany jako 1, nawet po zmianie highbyte=255...
Witam, Próbuję od 0 zacząć przygodę z DS1307 dla Atmega8L ale jakoś mi nie wychodzi. Wzoruję się i przepisuje kod z http://obrazki.elektroda.pl/4411854700_1... Przyznam, że na pierwsze wojaże wydaje się to dosyć trudne, obsłużyć DS1307... [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
Stary temat ale podepnę się bo mam podobny problem. Próbuję skomunikować STM32F429 (płytka discovery disco) z Atmegą8 (nie 88). STM Master Reviever <<>> Atmega Slave Transmiter. Wzorowałem sie trochę na kodzie kolegi i trochę na tym tutorialu: http://eliaselectronics.com/stm32f4-tuto... Problem kolegi kolegi...
Witam Mam problem z obsługą enkodera(EC16-2-F-L20). Opierałem się kodach które znalazłem w internecie i nie wiem czemu enkoder w poniższym kodzie działa tak jak mu się podoba, przełącza stacje radiowe przypadkowo. Bardzo prosił bym o pomoc, z góry dziękuje. ; // Zapis tablicy TWCR = (1<<TWINT) | (1<<TWEN); // Wysłanie dnaych while (!(TWCR...
Witam! Na forum zawsze znajdowałem odpowiedzi i drążyłem każdy temat samodzielnie w myśl zasady jednego z moich wykładowców "świat dzieli się na samouków i nieuków"... lecz tym razem rozłożyłem ręce po 3-dniowej walce z TWI/i2c (w między czasie wypiłem tylko 2 bro) i postanowiłem nieśmiało założyć temat (chyba mój inauguracyjny...). Przeczytałem regulamin...
Witam, ostatnio próbuje doprowadzić do komunikacji między dwoma atmegami 8 ( pierwsza jako master transmiter druga jako slave receiver) slave receiver ma podłączoną diode do PB0 obie atmegi taktowane są 8Mhz , rezystory pull-up : 1kΩ Posługując się dokumentacją atmela stworzyłem oto taki kod który niestety nie działa (dioda się nie zapala) Prosiłbym...
Mam problem z połączeniem dwóch ATmeg8 za pomocą sprzętowego TWI. Otóż chciałbym połączyć dwie ATmegi, z których pierwsza - SLAVE TRANSMITTER - obsługuje akcelerometr poprzez ADC i przekazuje dane drugiej - MASTER RECEIVER - która to z kolei wyświetla dane na wyświetlaczu LCD. Przewertowałem elektrodę, google, datasheeta ATmegi i znalazłem wydawałoby...
Witam, od kilku dni próbuję uporać się z problemem odczytu danych z akcelerometru ADXL345 przez standard TWI/I2C. W nocie katalogowej jest napisane, że jeżeli SDO podłączone jest do GND, akcelerometr przyjmuje adresy 0xA6 read i 0XA7 write. Tak też zrobiłem. Pin CS podłączony do +5V. Do ATmegi8 podłączony mam rezonator kwarcowy 16 MHz. Prędkość TWI...
Witam, Czytalem wiele postow na ten temat, skorzystalem z wielu kodow i dalej nie moge uruchomic komunikacji pomiedzy dwoma atmega8. Siedze nad tym od dobrych paru dni i nie wiem czy to wina sprzetu czy programu?? (miedzy innymi bazowalem na kodzie z postu #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include...
Witam Was. Tym razem mam problem z TWI. Po kilku nieudanych próbach usunąłem cały swój kod do obsługi TWI, i napisałem wszystko od nowa - inspirując się kodami TMF'a i Mirkka36 oraz Datasheetem Atmela. Otóż mam zegar PCF8563 i na początku chciałem się z nim skomunikować, tak aby generował mi sygnał z prędkością 1Hz na wyjściu CLKOUT. Przerwanie w ATmega8...
Witam Mam problem z wysłaniem bajta danych przez TWI, procesor ATMEGA8. Funkcje obsługi TWI TWI pisałem samodzielnie na podstawie informacji w internecie. Zawarte są w pliku I2C http://obrazki.elektroda.pl/1723049600_1... Wydaje mi się że po bajcie zawierającym SLA+W brak potwierdzenia ACK. Może ktoś podpowiedzieć co jest przyczyną braku...
Witam, postanowilem rozlozyc sobie twi na czesci pierwsze jako ze to dosc skomplikowany interfejs, no i odrazu pojawil sie problem... Ustawiam sobie mega128 w MASTER RECEIVER oraz mega88 w tryb SLAVE TRANSMITTER. To co do tej pory udalo mi sie zrobic to to ze dostaje odpowiedz na start bit, tzn. TWSR=0xA8 dla SLAVE, a po stronie MASTER TWSR=0x40, czyli...
Witam. Niedawno rozpocząłem swoją przygodę z Atmegą8. Chciałem sprawdzić jak działa interfejs TWI. Na podstawie książki pana Cezarego Klimasza zakupiłem układ 24c16wp i napisałem program. Niestety program zamiast wyświetlać mi w terminalu liczby od 255 do 0 wyświetla bliżej nieokreślone sekwencje znaków. Czy mógłby mi ktoś pomóc znaleźć błąd w moim...
Witam Nie wiem jak podłączyć wyprowadzenia pamięci I2C EEPROM ST24C08 (chodzi o piny 1,2,3 oraz 7) by jednorazowo załadować 760 bajtów wykorzystując ATmega8A. Na magistrali jest tylko jedna taka pamięć. Ponadto nie wiem jaki adres ma ta pamięć. Pozdrawiam Dodano po 18 Próbowałem wgrać przy pomocy tego kodu: [syntax=c]#define EE_ADDR 0xA0 const uint8_t...
Witam próbuje skomunikować ze sobą dwie atmegi za pomocą twi. Napisałem skrypt oparty o datasheet jednak mam pare watpliwosci.poszukalem po elektrodzie i nie znalazlem tematu ktory by odp na moje ptyania. Komunikacja wyglada nastepujaco. Jeden z kontrolerow bedzie Master Reciver a drugi slave transmitter. po inicjalizacji polaczenia slave ma przeslac...
Witam, pisałem kiedyś soft do obsługi TDA7439 na ATmega8, nie chce mi sie sprawdzać, czy adresy rejestrów 7449 są takie same, ale nawet jesli nie są, to żaden problem pozmieniać je w definicjach zgodnie z kartą katalogową. Poniżej kawałek kodu, którym do sterowania: // TWI - Two Wire Interface #define SLA_W 0x88 // Adres urządzenia slave (TDA7439)...
Pojawił się kolejny problem. Tym razem procesor się po prostu zawiesza przy próbie zapisania lub odebrania wartości do/z ds1307. http://obrazki.elektroda.pl/1806808200_1... Cały plik main.c [syntax=c]#define F_CPU 16000000UL #include <util/delay.h> #include <util/twi.h> #include <avr/io.h> #include <avr/interrupt.h>...
Cześć, Złożyłem układ według schematu http://obrazki.elektroda.pl/5126052200_1... Za nic jednak nie mogę zmusić ich do poprawnej komunikacji. Kod Atmega8 (TWI Master): [syntax=c] #define F_CPU 12000000UL #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include <util/delay.h> #include <inttypes.h>...
Witam, Mam następujące kłopoty (błedy przy kompilacji). Zastanawiam się, czemu niektore rzeczy nie są opisane w ksiażce :/ Np. jak powinna wyglądać definicja I2C_Error? Jaka jest potrzebna biblioteka avr zeby niktore funkcje I2C były "rozumiane" przez kompilator? W programie głównym dodałem #include <util/twi.h> ale zostało kilka błędów. Proszę...
malenstwo przylutowane, pomogl mi w tym serdeczny kolega za co mu dziekuje bo sam bym sobie z tym nie poradzil ;) niestety nadal nie moge uruchomic czujnika, posiłkowałem sie artykułem zamieszonym w EP 8/2011 niestety bez rezulatatu (wgrywająć pliki zamieszczone na plycie CD niestety tez nie mogę nawiązać komunikacji z czujnikiem) Oto mój program: obsługa...
Witam. Chciałem się pobawić eepromem i zaserwowałem sobie taką zabawę, że hej. Mam problem z odczytem. Najlepiej wkleję troszkę kodu. clr r16 ldi r16, (1 << TWPS0) out TWSR, r16 ldi r16, 12 out TWBR, R16 sbi PORTC, PC5 sbi PORTC, PC4 rcall twi_start rcall twi_set_write ldi TWI_REGISTER, 0x50 rcall twi_send_device_address ldi r17, 0x00...
Witam! Chciałem zasięgnąć rady bardziej doświadczonych kolegów. Sprawa wygląda następująco - skonstruowałem dość proste urządzenie, które jest licznikiem impulsów (z licznika energii elektrycznej). Oczywiście w dalszej perspektywie będzie miało nieco więcej funkcji niż zliczanie impulsów. Problem tkwi w tym co zrobić ze zmienną przechowującą liczbę...
Dzięki Mick ale jakoś nie mogę załapać , w c pisze od niedawna. To co znalazłem w sieci trochę bardziej rozumiem tylko nie wiem w jakiej kojejnosci to ma być wykonywane wzorowałem sie bascomem... Jakby ktoś mógł to proszę o wyjaśnienie co ma byc pierwsze Pozdrawiam /***************************************... * Title:...
Witam. Artykuł ten pisałem z myślą o wszystkich, którzy dopiero zaczynają swoja przygodę z magistralą TWI (czyli magistralą I2C) w procesorze Atmega8. Jest to program-szkielet, w który trzeba wpisać własne funkcje i procedury i wykorzystać gotowe procedury do komunikacji w magistrali TWI. A na praktyczne zastosowanie magistrali TWI zapraszam na: http://www.elektroda.pl/rtvforum/topic13...
Witam forumowiczów, zacząłem realizować projekt zegarka, kalendarza i termometrów z owego linku: http://obrazki.elektroda.pl/6128170300_1... Proszę o porady i sugestie jak można rozwiązać ten problem :P
Witam, Problem, z którym się do Was zwracam jest troszkę zagmatwany ale będę się starał opisać wszystko jasno i klarownie, bo sam nie mam już sił. Jest procesor, atmega88, na etapie budowania poszczególnych modułów docelowego programu. Uruchomiłem całkiem ładnie obsługę RC5 (może nie do końca super ale działa). Później uruchomiłem sprzętowe TWI (M88...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Witam. Napisałem prosty program do odbioru danych z akcelerometru MMA7455L. W zasadzie chcę odebrać tylko 8 bits output value X adres: $06. Jednak na wyjściu funkcji read_czujnik() dostaje wartość 9C która zapewne nie jest przypadkowo wartością wpisywaną w TWI_write(0x9C); na chwilę przed odbiorem. main.c [syntax=c]#define F_CPU 8000000UL #include <avr/io.h>...
Mam problem z odczytem danych z jednego z czujników na mojej płytce a mianowicie z HMC5883L. Podłączony tam jest również MMA7455L który działa poprawnie. Chodzi dokładniej o to, że po odebraniu wartości spod adresu 0x03 (MSB z x) wartość którą odbieram jest równa 0,1 lub 255 (podczas obrotu dookoła). Przez co po złożeniu dwóch bajtów MSB i LSB dostaje...
Witam Posiadam mikrokontroler Atmega8 podłączony do RTC MCP7940M. Komunikacja poprzez TWI [syntax=c] #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include <hd44780.c> #include <stdlib.h> #include <avr/interrupt.h> #define F_CPU 1000000L void inicjalizacja(void); void start(void); void stop(void);...
Witam wszystkich, mam duże trudności z nawiązaniem komunikacja z kompasem cyfrowym HMC5843 przez protokół I2C. Wszystko ma działać na atmega8 (master) 3,3v (at) 4MHz, bezpośrednio połączona z układem (slave). Pull-up'y na liniach SDA i SCL przez rezystory 4k7 są obecne. Komunikacja z prędkości 100kHz (sprawdzałem też dla 40 i 50kHz, efekt ten sam)....
Zmontowałem układ jak w załączniku. Jest to czujnik odległości. W zależności od odległości powinien zapalać odpowiednią ilość diód. Porogramu jeszcze nie napisałem ponieważ zatrzymał mnie poważny problem. Problem polega na tym, że i2c_start(Device+I2C_READ) zwraca 1, czyli (jak można przeczytać tutaj: #include <avr/io.h> #include <util/delay.h>...
Witam Z braku weny poprzeglądałem forum i znalazłem następujący kod: #include "lib/t6963c.c" #include <compat/twi.h> #include "lib/change_numbers.c" #include <avr/interrupt.h> #include <avr/signal.h> #define AVR_addr_R 0x18 volatile unsigned char buf_TWI[9]; unsigned char *pbuf_TWI; unsigned char temp_kotla,...
Witam. Usiłuje uzyskac transmisje danych miedzy dwoma mikrokontrolerami : Atmega8 programowana w asemblerze i Atmega32 programowana w C. Do lini twi podpiete sa rezystory podciagajace 4,7K. Napisalem dwa proste programy, jeden w asemblerze dla Mastera a drugi w C dla Slave. Jednak komunikacja nie wystepuje.... (sprwdzanie kodow bladow TWSR po rs232)......
Zaprogramowałem sobie pamięć 24c512 w programatorze. Podłączyłem właściwie do atmegi (atmega pracuje z zegarem wewnętrznym 1mhz) i probuje go odczytać. To fragment programu: ldi r16,(1<<TWPS0);inicjalizacja out TWSR, r16 ldi r16,18 out TWBR, r16 ldi r16,(1<<TWEN)|(1<<TWSTA)|(1&... out TWCR,r16 czekaj_na_start: in r16,TWCR...
Witam, Zmagam sie z termometrem... TMP75 - moze ktos obeznany z tematem twi (zeby nie pisac i2c - bo czesto sie to kojarzy z software'owym rozwiazaniem i2c) zerknie przychylnym okiem.... w czym tkwi problem ? - wartosci jakie mi zwraca to 255 i 255 :( ponizej czesc kodu odpowiedzialnego za TWI i TMP75: void i2c_init(void) { // kwarc 11059200...
Czy jeśli chce użyć TWI to czy musze jakoś bezpośrednio ustawiać rejestr DDR odpowiednich pinów czy może ich ustawienie kontroluje uC? Czy ten kod jest wystarczający do wysłania danych do procesora audio TDA7318? Komendy w funkcji send_to_I2C() przepisałem z noty katalogowej Atmega8. Zastanawiam się tylko czy moja funkcja i2C_init() jest wystarczająca...
fusebits atmega8 atmega8 nestor manual atmega8
samsung pryzmat choinkowe lampki amica kuchenka
Szybkie miganie kierunkowskazów w Peugeot Partner Tepee - przyczyny i rozwiązania Zasilacz do Ferguson D-880: parametry i wybór