Witajcie!
Stanąłem przed problemem stworzenia obsługi dla pamięci EEPROM 24C128. Nie chodzi mi tutaj o zapis i odczyt jednej komórki pamięci. Problem tkwi w tym, że potrzebuje zapisać przykładowo tablicę 2000 bajtów. Wiem, że zapis blokowy w tych pamięciach możliwy jest dzięki buforowi 64bajtowemu i na takie paczki należy podzielić wysyłane dane. Napisałem to co zamieszczam poniżej ale zawisało na odczycie. Więc wróciłam do podstaw i używam czystych bibliotek z naszej ulubionej książki. Niestety program zawisa na odczycie. (źródeł nie podaje bo to biblioteka z książki).
Proszę o jakieś ciekawe sugestie, bo czuje, że pomijam jakiś szczegół..
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ok, ale kody źródłowe dajemy w znacznikach [ syntax = c ] tak na przyszłość ok? (na górze można wybrać format z pola "Listing kodu"Za kod przepraszam, mój pierwszy taki post.
Już tłumaczę moje roztargnienie. Kod zamieszczony wyżej zawisał na oczekiwaniu w TWI_read na spełnienie while ( !(TWCR & (1<<TWINT)));. To samo działo się w bibliotece z książki ale to już moje wina
, bo dla ułatwienia wsadziłem pamięć 24C02 i nie poprawiłem właściwie adresu scalaka.
Szanowni koledzy, sprawa rozwiązana. Wszystko działa. Ale postaram się opisać dlaczego nie działało.
Związane jest to z tym co widzicie na zdjęciu poniżej.
Jak widać urywek noty katalogowej 24C128. Jakbym nie liczył to wychodził mi adres mojego układu równy 164 (A1=1,A0=0). Niestety okazało się, że adres układu to 172 czyli policzony zgodnie z notą aplikacyjną układu 24C02 (A2=1,A1=1,A0=0); W sumie nie wiem jak to wyjaśnić ale aplikacja działa.
POZDRAWIAM