Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 sty 2026, o 12:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 9 cze 2013, o 20:41 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Przerabiam komunikacje I2C z niebieskiej ksiazki i nie dziala mi funkcja zapisu godziny do PCF8583
Kod:
TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor )
Na wyswietlaczu pojawia sie w pierwszej lini start... a w drugiej leci czas od 0:0:0. Korzystam z atmegi16 taktowanej 8 Mhz, przerwanie z rtc podlaczone do INT1, A0 podlaczone do GND stad
Kod:
#define PCF8583_ADDR 0xA0

Przeczytalem dwa razy rozdzial w ksiazce ale nie moge doszukac sie bledu. Zadnych modyfikacji w i2c_twi nie dokonywalem.
Czy ktos ma pomysl dlaczego po zaprogramowaniu czas nie startuje od 18:34:27 ?

Ponizej kod main'a
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:06 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

RTC nie może mieć zmienionego adresu (pozostań przy 0xA2) tylko EEPROM. Przejrzyj uważnie schemat http://www.atnel.pl/instrukcja-atb-rev-1-04.html

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:08 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

No tak a schemat ? jak masz to podłączone ? szczególnie linie SDA i SCL ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:13 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

mirekk36 napisał(a):
No tak a schemat ? jak masz to podłączone ? szczególnie linie SDA i SCL ?

Kolego, zapomnialem wspomniec, ze korzystam z wlasnego pcb i sprzetowej komunikacji i2c oraz nie mam podlaczonego EEPROMu.
Schemat w tym temacie
http://forum.atnel.pl/topic3116.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:15 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

A ja z rozpędu pomyślałem o ATB. Jak sam coś robisz to właśnie masz dobre odniesienie w postaci sprawdzonego schematu.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

gomes napisał(a):
Schemat w tym temacie


o jo joj, ;) no to nad schematem to musisz jeszcze troszkę popracować ;) ale ok ... coś tam widać - no rezystory SDA i SCL masz, ale jakiesik takie za małe 1K ? (daj 4,7K) minimum ... chociaż i z tymi co masz powinno działać

ale sprawdź przede wszystkim najpierw czy tyka ci RTC czyli podepnij do wyjścia INT diodę LED przez rezystor oczywiście do VCC

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:27 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

mirekk36 napisał(a):
gomes napisał(a):
Schemat w tym temacie


o jo joj, ;) no to nad schematem to musisz jeszcze troszkę popracować ;) ale ok ... coś tam widać - no rezystory SDA i SCL masz, ale jakiesik takie za małe 1K ? (daj 4,7K) minimum ... chociaż i z tymi co masz powinno działać

ale sprawdź przede wszystkim najpierw czy tyka ci RTC czyli podepnij do wyjścia INT diodę LED przez rezystor oczywiście do VCC


Kolega widze nie zrozumial problemu. Przerwanie dziala poprawnie tzn co 1sek wyswietlacz jest odswiezany, komunikacja odczytu z rtc przebiega poprawnie i na wyswietlaczu jest wywietlany aktualny czas z rtc (obecnie 04:09:20 bo tyle sie z tym bawie) i co sec jest incrementowany ;) .
Problem jak pisalem jest z ustawianiem godziny w pcf. Po wywolaniu tej
Kod:
TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor )

funkcji w main jak dobrze zrozumialem z ksiazki powina zostac zainicjalizowana godzina 18:34:27 (po zaprogramowaniu badz zrestartowaniu uc) a tak sie nie dzieje tylko czas leci 'dalej' taki jak byl bo jest podtrzymanie bateryjne.

W pliku i2c_twi.c posiadam funkcje i2cSetBitrate wiec errata zastosowana.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:37 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

No to rzeczywiście źle zrozumiałem - za szybko przeczytałem ;) przepraszam - tak to jest jak robię 190 rzeczy na raz ... sorki

hmmm skoro czas leci czyli wszystko ślicznie działa - odczyt , adres się zgadza - no miodzio ... a nie działa tylko zapis ? ... to bardzo dziwne

ale teraz żebym dobrze zrozumiał - czyli od jakiej godziny ci ten czas zlicza ? od 00:00:00 ? i cały czas płynie ? czy po każdym restarcie od zera ?

a może nie zapisujesz projektu przed kompilacją ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:45 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Po kazdej kompilacji czas leci dalej (obecnie 04:28:00) bo mam podlaczona dodatkowa baterje do podtrzymania czasu. Pewnie jak bym ja wylutowal to po kazdym zaniku zasilania badz kolejnym programowaniu czas startowalby od 0:0:0.

Projekt oczywiscie zapisuje, eclipse tez byl restartowany.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:50 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

no no rozumiem - generalnie to dobrze ;) jest ładnie podtrzymywany i widać że komunikacja działa dobrze - w takim razie nie mam pomysłu na gorąco co jest nie tak - na pewno jakiś czeski błąd ....

na ile kHz ustawiłeś prędkość I2C ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 21:52 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jaką częstotliwością taktujesz mikrokontroler i jaką wartość wybrałeś jako MCU Clock Frequency. Jest to ważne bo na podstawie tej wybranej liczy obliczana jest prędkość I2C.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 22:01 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Krauser napisał(a):
Jaką częstotliwością taktujesz mikrokontroler i jaką wartość wybrałeś jako MCU Clock Frequency. Jest to ważne bo na podstawie tej wybranej liczy obliczana jest prędkość I2C.

Tak jak pisalem w pierwszym poscie 8 MHz i tak jest kompilowany.
Predkosc i2c jest automatycznie przeliczana w fukcji ?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tak wyglada kompilacja
Kod:
**** Build of configuration Release for project 08_TWI ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=8000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c"
Finished building: ../main.c
 
Building target: 08_TWI.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,08_TWI.map -mmcu=atmega16 -o"08_TWI.elf"  ./main.o  ./LCD/lcd44780.o  ./I2C_TWI/i2c_twi.o   
Finished building target: 08_TWI.elf
 
Invoking: Print Size
avr-size --format=avr --mcu=atmega16 08_TWI.elf
AVR Memory Usage
----------------
Device: atmega16

Program:    1676 bytes (10.2% Full)
(.text + .data + .bootloader)

Data:          6 bytes (0.6% Full)
(.data + .bss + .noinit)


Finished building: sizedummy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 22:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

gomes napisał(a):
Predkosc i2c jest automatycznie przeliczana w fukcji ?


ale co to wg ciebie znaczy automatycznie ? toż trzeba podać jej argument

i2cSetBitrate( 100 );

podajesz tak czy nie ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 22:24 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Tak, w main zaraz po zainicjalizowaniu lcd i przed wlaczeniem przerwan jest i2cSetBitrate(100).
W ksiazce nie znalazlem opisu tej funkcji - czy wartosc 100 dla bitrateKHz jest zalezna od taktowania (np jak bede chcial uc pognoc zewnetrznym kwarcem 16 Mhz to jaka wartosc bedzie mial bitrateKHz )?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 22:41 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27446
Lokalizacja: Szczecin
Pomógł: 1045

gomes napisał(a):
W ksiazce nie znalazlem opisu tej funkcji - czy wartosc 100 dla bitrateKHz jest zalezna od taktowania (np jak bede chcial uc pognoc zewnetrznym kwarcem 16 Mhz to jaka wartosc bedzie mial bitrateKHz )?


w książce nie ma bo po prostu z rozpędu nie wiem jak ale całkowicie o niej zapomniałem.

Prędkość w kHz jest zależna od urządzenia I2C a nie od tzw "widzi-mi-się" programisty ;) czyli trzeba zajrzeć do noty PDF i sprawdzić z jaką prędkością pracuje. Standardowa prędkość I2C to właśnie 100kHz i w zasadzie każdy scalak na niej będzie działać. Ale zdarzają się scalaki, które mają możliwość pracy np na 400kHz albo i szybciej - jak mówię trzeba zaglądać do PDF bo to podstawowa informacja przy scalakach I2C

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2013, o 23:00 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Teraz wszystko jasne. Co do komunikacji udalo sie 'wpisac' godzine > zaczelem debugowac na lcd i dodawanie w main i w petli nie dawalo rezultatu. Restartowalem uc, eclipse oczywiscie z zapisem i kolejne programowanie tego projektu nie pokazywalo zmian. Wtedy zaprogramowalem pownownie inny projekt z udp po czym wrocilem do tego w ktorym robilem zmiany i ruszylo od kopa (przestawila sie godzina na prawidlowa oraz byly widoczne flagi do debugowania).
Dziekuje ponownie za pomoc!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO