Hmmmm... Spróbujmy. Załóżmy, że masz 200kHz fSCL i za każdym adresowaniem będzie odczytywany jeden bajt. Trzeba wykonać:
1. START - 1 bit
2. SLAVE ADR+WRITE - 9 bitów
3. R-START - 1 bit
4. SLAVE ADR+READ - 9 bitów
5. READ+NACK - 9 bitów
6. STOP - 1 bit
Czyli mamy 30 bitów w ramce transmisyjnej. 200kHz/30 czyli uzyskasz wtedy ok. 6kHz.
Pytanie-zagadka o TWI w Atmega8[bascom]
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
-
Szukampomocy
- -
- Posty: 10
- Rejestracja: 14 sie 2008, 12:28
- Lokalizacja: Londyn
Masz racje moje niedopatrzenie.. Ale skoro przy kwarcu 8Mhz bedzie 6khz, to tak na prosty rozum przy kwarcu 16Mhz bedzie 2 razy szybciej czyli 12khz zgadza się?ZbeeGin pisze:2. Przy I2C nie dzieli się przez 8 tylko przez 10 a nawet 11 dla bezpieczeństwa. Zapominacie o tym, że protokół wymaga jeszcze bitów startu, stopu, potwierdzenia ACK. A i przesyłanie, i ustawianie rejestrów się do tego też zalicza.
-
Szukampomocy
- -
- Posty: 10
- Rejestracja: 14 sie 2008, 12:28
- Lokalizacja: Londyn
Dwa pytania:
a) Czy rzeczywiście p[rzy szybszym kwarcu będę mogła szybciej odczytywać te dane?
b) Czy mogłabym zastosować niewielką kartę SD o pojemnosci 16 MB? Słyszałam, że one komunikują się przez SPI. Czy mozliwy byłby szybszy odczyt? I jak to oprogramować w bascomu, oraz co ze stroną sprzętową?
a) Czy rzeczywiście p[rzy szybszym kwarcu będę mogła szybciej odczytywać te dane?
b) Czy mogłabym zastosować niewielką kartę SD o pojemnosci 16 MB? Słyszałam, że one komunikują się przez SPI. Czy mozliwy byłby szybszy odczyt? I jak to oprogramować w bascomu, oraz co ze stroną sprzętową?
-
ZbeeGin
Tak. Gdyż prescaler ustawia się względem częstotliwości pracy procesora. Przy 16MHz uzyskasz max. 444kHz czyli 444kbps, a będzie to nieco ponad 14kB/s.Szukampomocy pisze:a) Czy rzeczywiście p[rzy szybszym kwarcu będę mogła szybciej odczytywać te dane?
Jeśli chcesz jeszcze szybciej to musiałabyś użyć ATMega88 a nie Mega8 - wyprowadzenia są takie same, a możliwości nieco większe. Ten układ może pracować do 20MHz.
SPI jest szybszy od I2C gdyż nie ma takich narzutów, a poza tym można jednocześnie czytać i zapisywać (patrz SPIMOVE). Do spraw sprzętowych trzeba zastosować konwerter poziomów gdyż karta jest zasilana 3.3V.Szukampomocy pisze:b) Czy mogłabym zastosować niewielką kartę SD o pojemnosci 16 MB? Słyszałam, że one komunikują się przez SPI. Czy mozliwy byłby szybszy odczyt?
Na forum MCS Electronics były przykłady użycia.
-
Szukampomocy
- -
- Posty: 10
- Rejestracja: 14 sie 2008, 12:28
- Lokalizacja: Londyn