Hallo, folgendes Problem: Ich habe einen Arduino Mega 2560, bei dem der Pin 52, also der SCK Pin der ICSP-Schnittstelle (http://images.wikia.com/qmast/images/d/df/8u2ISP.png), leider auf dauer ein ist (defekt durch Überspannung an diesem pin...). Meine Frage daraus ist, ob man diesen Pin auch durch einen anderen Austauschen kann also sprich einen anderen Pin als SCK definieren kann bzw. ob man den Serial Clock mit einen Programmschnipsel auf einem anderen I/O Pin erzeugen kann? Wenn ja wie bzw. wo? Welche Frequenz hat der Serial Clock üblicherweise oder ist das nicht sooo wichtig?
123 schrieb: > Meine Frage daraus ist, ob man diesen Pin auch durch einen anderen > Austauschen kann also sprich einen anderen Pin als SCK definieren kann Nein. > bzw. ob man den Serial Clock mit einen Programmschnipsel auf einem > anderen I/O Pin erzeugen kann? Ja, aber nicht mit Arduino-Scheiße, da muß Asm ran. Das ist das einzig Wahre. Im Sinne von: Das ist das einzige mit reproduzierbarem exakten Timing. Aber: der Mega2560 hat doch bestimmt auch schon SPI-Master-fähige USARTs. Nimmst du einfach diese?
c-hater schrieb: > Ja, aber nicht mit Arduino-Scheiße, da muß Asm ran. Das ist das einzig > Wahre. Im Sinne von: Das ist das einzige mit reproduzierbarem exakten > Timing. Da die Arduino-Scheiße einfach nur C++ und eine Library ist, kann man da ganz wunderbar asm ("...") schreiben für exaktes Timing in ASM. Und ansonsten hat Lothar natürlich recht...
tommy schrieb: > Im Titel schreibt er "SPI", im Text aber von "ICSP" ! Und? Einfach mal in den Schaltplan von dem Arduinoboard schauen, und du siehst das der SCK Pin (PB1) sowohl als Pin52 rausgeführt wird, aber ebenfalls auf den ICSP-Header geführt ist. Kein Grund ihm irgendwas vorzuwerfen. c-hater schrieb: >> bzw. ob man den Serial Clock mit einen Programmschnipsel auf einem >> anderen I/O Pin erzeugen kann? > > Ja, aber nicht mit Arduino-Scheiße, da muß Asm ran. Pins kann man natürlich nur in Asm auf High und Low setzen. Dieses Feature gibt es für C und/oder C++ leider nicht... echt schade. So ein Mist aber auch... c-hater schrieb: > Im Sinne von: Das ist das einzige mit reproduzierbarem exakten > Timing. Weil Arduino-User auch ständig solch super zeitkritische sachen machen, wo es auf jeden Takt ankommt... Ich bin mir in diesem Falle zu 100% sicher das keinerlei Notwendigkeit besteht Asm zu nutzen. 123 schrieb: > Meine Frage daraus ist, ob man diesen Pin auch durch einen anderen > Austauschen kann also sprich einen anderen Pin als SCK definieren kann definieren ist etwas ungeschickt ausgedrückt. Du kannst einen anderen Pin als SCK benutzen, klar. Ist dann allerdings nicht so schnell wie der Hardware-Clk es war. Einfach einen Pin aussuchen, auf ausgang schalten, und dann abwechselnd auf high und low schalten. Und schon hast du einen neuen SCK-Pin. Grüße
Kaj schrieb: > tommy schrieb: >> Im Titel schreibt er "SPI", im Text aber von "ICSP" ! > Und? Einfach mal in den Schaltplan von dem Arduinoboard schauen, und du > siehst das der SCK Pin (PB1) sowohl als Pin52 rausgeführt wird, aber > ebenfalls auf den ICSP-Header geführt ist. Kein Grund ihm irgendwas > vorzuwerfen. Ja, ist schon bisserl spät ;-) ICSP braucht er ja nicht, denn er hat ja den Bootloader. N8
c-hater schrieb: > da muß Asm ran. Das ist das einzig > Wahre. Im Sinne von: Das ist das einzige mit reproduzierbarem exakten > Timing. Absoluter Schwachsinn. Die Aussage passt nur wenn das der einzig ausgeführte Code ist. Sobald da noch etwas anderes läuft, und da ganz besonders Interrupts, kannst du das vergessen. Der vom Compiler aus C(++) erzeugte Code ist da aber ganz genauso reproduzierbar in seinem Timinig wie der handgeschrieben Assembler. Ob der handgeschrieben Assembler vielleicht ein paar Zyklen weniger braucht als der vom Compiler erzeugt ist ein anderes Thema.
c-hater schrieb: >> bzw. ob man den Serial Clock mit einen Programmschnipsel auf einem >> anderen I/O Pin erzeugen kann? > > Ja, aber nicht mit Arduino-Scheiße, da muß Asm ran. Wenn du das in C nicht gebacken kriegst, solltest du dich aus der Diskussion hier vielleicht einfach mal raus halten.
Wenn der Arduino keinen zweiten SPI hat wäre Soft SPI eine Lösung. Wenn der TO das Hardware SPI weiterbenutzen und nur den Clock in Software machen will halte ich das vor allem bei großen Geschwindigkeiten für unmöglich, wenn das Arduino zeug wie digitalwrite verwendet wird. Bei Soft SPI sollte es auch mit digitalwrite/read klappen, ist dann halt entsprechend langsam Soft SPI: http://www.iesensor.com/blog/2013/07/09/software-spi-library-for-arduino-tested-on-mega2560/ Mike schrieb: > Wenn du das in C nicht gebacken kriegst, solltest du dich aus der > Diskussion hier vielleicht einfach mal raus halten. Und wenn du nichts Sinnvolles beizutragen hast, solltest du dich auch raushalten.
Die 4 UARTs lassen sich bequem als SPI-Master benutzen. Ist sogar schneller, da gepuffert.
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.