24FC1025 + ATMega128 = wymiękam :-|

Drugi dzień walki ... powoli mam dość.

w datasheecie od 24FC.. piszą, że STOP na i2c po zapisie "initiates the internal write cycle and during this time, the 24XX1025 will not generate Acknowledge signals". po to oczywiscie, zeby poczekac z zabawą aż pamięc zapisze to co ma. Fajnie. Jest więc taki kawałek kodu, zerżnięty z jakiejś noty aplikacyjnej:

[tu jest zapis do pamięci]

TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN); /* send stop condition */

// ACK poll ack_poll: TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); /* send start condition */ while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */

/* send SLA+W */ TWDR = sla | TW_WRITE; TWCR = _BV(TWINT) | _BV(TWEN); /* start transmission */ while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ switch ((twst = TW_STATUS)) { case TW_MT_SLA_ACK: break; case TW_MT_SLA_NACK: goto ack_poll; }

TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN); /* send stop condition */

klopot w tym, ze 24FC... zawsze generuje ACK pomimo, ze zapis do pamieci sie jeszcze nie skonczyl - po jednym zapisie następują następne zapisy lub odczyty, oczywiście przerywajac proces zapisu, wiec wciaz mam stare zawartosci komórek.

Kod zapisu jest poprawny, bo jak dam pętelkę wstrzymującą program po zapisie na kilkaset ms, to wszystko sie ładnie zapisuje. nie moge niestety zastosowac takiwgo czegos, bo program często pisze do pamięci a takie wstrzymywanie niefajnie na niego wpłynie ...

aha, na i2c jest tylko 24FC1025 i 2xPCF8574

help pliiiz ... bo strzele sobie w oko z gumy od gaci ... :-|

@
Reply to
Miller Artur
Loading thread data ...

Użytkownik "Adam Dybkowski" snipped-for-privacy@amwaw.edu.pl> napisał w wiadomości news:eedk6d$28q$ snipped-for-privacy@atlantis.news.tpi.pl...

obawiam sie, ze wyjdzie z tego armata do strzelania do wróbli ... ;-) chcialem sie dowiedziec co robie źle albo czy akurat te pamięci mają jakis feler, albo moze ATMega ma coś nie tegez z TWI. Jak nie pojdzie, to chyba tak bede musial zrobic, z ruszaniem glową klopotu nie mam ;-)

za pozno - nie ma czasu na tak dużą zmianę (za tydzień trzeba ustrojstwo odpalić a jest jeszcze qpa do zrobienia), moze którąś następną wersję softu wypuszczę na jakimś RTOSie ... tylko nie wiem czy sie zmieści do Flasha bo większość już zajęta :-|

enyłej, fęks ;-)

@
Reply to
Miller Artur

Miller Artur napisał(a):

Wręcz przeciwnie. Wyjdzie ładna biblioteka obsługi pamięci EEPROM, którą możesz opatrzyć np. licencją LGPL albo jeszcze lepiej BSD i podzielić się ze światem. I tobie się przyda, i dla innych też będzie pomocne.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.