Hi Leute, bei meinem Projekt möchte ich die I²C Schnittstelle des Tiny nutzen und das ganze über ISP programmieren. Nun liegt aber der I²C Bus mit auf den ISP Pins (alles auf den USI Pins). Dadurch habe ich beim proggen 4,7k PullUps auf MOSI und SCK und natürlich das EEPROM am Bus. Kann das überhaupt funktionieren und wie groß ist das Risiko das ich Proc und/oder EEPROM verbrate, wenn ich es einfach mal probiere? Da ich auch einen seriellen ADC einsetze, könnte ich auch den an die Hardware USI hängen und das I²C in Software realisieren, ob das besser wäre? Danke Dirk
Falls es für jemanden von Interesse ist: Das ISP wird durch die PullUps und das EEPROM nicht gestört. Ob das EEPROM vom ISP beschädigt wird kann ich noch nicht sagen, weil es nicht so recht mit dem USI klappen will...
Update 2: Von der Verdrahtung her gibt es keine Probleme die Teile so zusammen zu löten. Alles was passiert ist, dass der I2C Bus nicht funktioniert, solange ein Programmiergerät angeschlossen ist. I²C funktioniert jetzt auch, aber nicht per USI! Die Hardware-Schnittstelle habe ich nicht zum laufen bekommen und bin auf die Lib von P. Fleury ausgewichen. Also bleibt eine Frage: Wer hat einen funktionierenden Code für TWI über das USI des Tiny2313!? Grüße Dirk
Wenn das USI das gleiche, wie beim Tiny26 ist: Es ist quasi zu nichts richtig zu gebrauchen, weder als I2C noch als SPI. Single-Master I2C ist in Software viel einfacher. Für Multi-Master oder Slave I2C nimmt man den Mega8. Peter
Das USI wird im Tiny26, Tiny2313 und mega169 verwendet. Ich hatte halt gehofft dadurch Platz im Flash zu sparen...
@peter: Was stört dich am SPI via USI? Ich benutze es für ein Nokia 3310 Display am Tiny2313, ohne Probleme.
@A.K. es bringt keinerlei Nutzen. Der Code ist genauso groß, als wenn man es komplett in Software macht. Peter
Grösse ja, aber Tempo? Ich möchte mal sehen, wie Du SPI per Software mit Bitrate Clk/2 realisierst. Bei I2C kein Thema, bei SPI bisweilen schon.
Ich kenne das Beispiel. Aber 16 mal "out USICR,r16" hintereinander zu schreiben, ist irgendwie nicht mein Verständnis von effizienter Programmierung. Ich wüßte jetzt auch keine Anwendung, wo die SPI-Geschwindigkeit sich merkbar auf die Gesamtgeschwindigkeit auswirkt. Wenn man etwas optimieren will, muß man zuerst ermitteln, wieviel der CPU-Zeit es überhaupt verbraucht. Es macht z.B. keinen Sinn eine Routine in der Geshwindigkeit zu verdoppeln, wenn das nur eine Änderung von 1% auf 0,5% CPU-Zeit bewirkt. Die frei werdenden 0,5% kann man dann höchstens in der Pfeife rauchen. Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.