Hallo Der betreff verräscht schon einiges... Was ist das schnellstmögliche BitBanging bei einem AVR? (Attiny2313) Und wie erreicht man es? Ich denke mal mit Assembler oder irre ich da? Danke schonmal
@ Claudio Hediger (hedie)
>Was ist das schnellstmögliche BitBanging bei einem AVR? (Attiny2313)
Guggst du Assembler Dokumentation, siehst du 1 Takt für OUT Befehl bzw.
2 Takte für sbi/cbi Befehle.
MfG
Falk
bei 3 asm (2xout + rjmp) befehlen pro zyklus, mit 16 mhz quarz -> thereotisch 5,3 mhz möglich.
der Tiny2313 kann auch "Toggling"
1 | Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of |
2 | DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port. |
avr
Wenn der Timer den Pin toggelt, schafft man es bis zur halben Grundfrequenz.
avr schrieb:
> der Tiny2313 kann auch "Toggling"
Ist aber netto auch nicht schneller.
Max ist 10MHz wenn unrolled.
Ob Assembler oder C, es zählt was hinten rauskommt. Wenn man da ein Auge
drauf hat kanns aufs Gleiche rauslaufen.
Hmmm Danke für die antworten... Ich werds wohl so machen, das ich ne PLL hinten dran hänge... :) Wenn die ja mal eingeschwungen ist, gibts ja keine verzögerungen mehr oder? (74HCT4046)
Hi! Es gibt nicht das "schnellstmögliche BitBanging bei einem AVR? (Attiny2313)" Es ist immer eine Frage der Randbedingungen. Die schnellste Art "einen" Pin zu wechseln ist über einen Timer in CTC-Mode, wobei das Compareregister auf 0 gesetzt wird. Dann hast du CKL/2. Du bist dabei allerdins an feste Pins gebunden. In Software: Wenn Tastverhältnis gleich sein soll:
1 | . |
2 | . |
3 | neu: sbi Port, Bit |
4 | nop |
5 | cbi Port, Bit |
6 | rjmp neu |
7 | |
8 | oder: |
9 | |
10 | ldi R16,1 |
11 | ldi R17,1 |
12 | neu: eor R16,R17 |
13 | out Port,R16 ;set/reset Bit0 des jeweiligen Ports |
14 | rjmp neu |
Tastverhältnis 1/4:
1 | . |
2 | . |
3 | neu: sbi Port, Bit |
4 | cbi Port, Bit |
5 | rjmp neu |
Du siehst viele Wege führen zum toggeln. Viel Erfolg, Uwe
@A.K. Hab auch nicht geschrieben, daß es schneller ist. Ist nur wirklich sinnvoll beim toggln, kein wenn gesetzt dann löschen etc. nötig. avr
Claudio Hediger schrieb:
> Ich werds wohl so machen, das ich ne PLL hinten dran hänge... :)
Wenn jemand nach der maximalen Toggle-Geschwindigkeit fragt macht eine
PLL keinen Sinn, für was auch immer.
Uwe schrieb: > Es gibt nicht das > "schnellstmögliche BitBanging bei einem AVR? (Attiny2313)" Eine Untergrenze für den Abstand von zwei Flankenwechseln eines Portpins bei Einhaltung der zulässigen Arbeitsfrequenz gibt es sehr wohl. Ob die Antwort etwas nützt ist eine andere Frage.
Wenn's nur darum geht, eine möglichst hohe Frequenz an einem Pin zu haben, die synchron mit dem Systemtakt ist, kann man sich doch den Systemtakt auf einen Portpin legen.
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.