Hallo,
Ich habe hier eine Art Frankenstein-Board.
Bestehend aus Arduono Mega, RAMPS 1.4, RAMPSXB und, um 9 TMC2130
anzusteuern, ein Board mit 2 PCF8574 für das CS der TMC.
Leider ist das mit den Pin definitionen für Marlin nicht ganz einfach.
Aus diesem Grund suche ich ein einfaches Programm, wrlches für jeden
Arduono Pin die 'Funktion' (also z.B. 'D3 odrr A8) per Software-Seriell
ausgibt.
Klar, könnte ich auch selbst schreiben, aber warum das Rad neu erfinden?
Dahet die Frage, ob evtl. schon jemand sowas geschrieben, oder gefunden
hat?
Wow.
Das Progtamm soll für jeden Pin die ID, welche im Programm hinterlegt
ist, am entsprechenden Pin seriell ausgeben.
Durch kann ich im Platinengewusel ,it einem CH340 o.ä. und einem PC mit
Terminalprg rausfinden, wrlchet pin mot fem ensprrchrnden Kontakt
vetbundrn ist.
Aber ich merke schon, mit Hilfe ists schwer... ;) <- das ist ein Smiley!
Hallo,
ich habe noch nicht verstanden was du von wo nach wo übersetzen
möchtest?
> Aus diesem Grund suche ich ein einfaches Programm, welches für jeden> Arduono Pin die 'Funktion' (also z.B. 'D3 oder A8) per Software-Seriell> ausgibt.
Wenn du "auf" Arduino laut Arduinopinnummerierung sagst Pin 5, dann ist
das D5, wobei man das 'D' weglässt. Also was möchtest du wirklich
wissen?
Veit D. schrieb:> Also was möchtest du wirklich> wissen?
Er möchte den C/C++ Bezeicher des Pin, so wie ich es verstanden habe.
Also bei Angabe der 13 möchte er LED_BUILTIN ausgegeben sehen.
Oder auch SCLK.
Aua, Mehrdeutigkeiten drohen!
Jürgen schrieb:> Aus diesem Grund suche ich ein einfaches Programm,> wrlches für jeden Arduono Pin die 'Funktion' (also> z.B. 'D3 odrr A8) per Software-Seriell ausgibt.
Das ist schwierig, weil die meisten Pins unterschiedliche Funktionen
haben können. Teilweise sogar mehrere davon zu unterschiedlichen Zeiten.
Die AVRs haben keine Mapping-Register, die man einfach auslesen könnte;
die Peripherie greift sich ihre Pins, wenn man sie einschaltet.
Verschiedene AVRs haben dann noch unterschiedliche Mappings (bei manchen
AVRs liegt z.B. CKOUT auf PB0, bei anderen auf PB1).
Und: Wie soll die Software rauskriegen, ob ein beliebiger Pin als GPIO
benutzt wird, oder mit einer Software-Funktion (z.B. Soft-Serial)?
Um einfach den Pin-Namen auf seine Arduino-Nummer zu mappen, kannst du
eine Excel-Tabelle nehmen und das alles da eintragen (mit einer
zusätzlichen Spalte pro AVR-Typ). Das ist sinnvoller, als es den uC
machen zu lassen.
Jürgen schrieb:> Bestehend aus Arduono Mega, ...
Meinst du vielleicht einen gewöhnlichen Arduino Mega?
Falls ja, könnte ein Mod vielleicht wenigstens den Titel des Threads
korrigieren, damit die Forumgssuchfunktion nicht ins Leere läuft.
Ich suche einfach ein Programm, welches an jedem Pin z.B. seriell dessen
Bezeichnung ausgibt. Ob das jetzt Arduino like beispielsweise 'D6', '6'
oder 'A4' ist, ist zweitrangig. Kann ein beliebiger String sein.
Die serielle Ausgabe soll von einem externem Gerät (PC,
Terminalprogramm) angezeigt werden und ich kann die Info
weiterberwenden.
Ist meine Erklärung jetzt verständlicher?
Jürgen, nochmal, diese Informationen findest Du in den Defines. Diese
Shields sind genormt.
Wir haben Dein Anliegen alle langsam verstanden. Aber es hilft Dir
nichts. Vorallem wenn Du jetzt noch Eingänge als Ausgang definierst, und
dort Sachen ausgibst, geht sicher was kaputt.
Und falls es wider aller Erwartungen sowas gibt, was Du suchst, geht das
sicher nicht für irgendwelche I2C Expander.
Gruss Chregu
Jürgen schrieb:> Das Progtamm soll für jeden Pin die ID, welche im Programm hinterlegt> ist, am entsprechenden Pin seriell ausgeben.
kannst ja deinen Bootloader erweitern der das für für dich erledigt, die
Pin Config In/Out oder ADC MUSS in deinem Hauptprogramm ins EEPROM
geschrieben werden.
Das klappt aber nur wenn nichts an den Ports angeschlossen ist.
Sonst würde dein
Jürgen schrieb:> Software-Seriell
ja gegen andere ICs arbeiten.
Irgendwie logisch das das nicht funktioniert wenn pulldowns oder pullups
angeschlossen sind oder ein anderes IC ein high ausgibt, soll dein
Jürgen schrieb:> Software-Seriell
das überrennen? (wer wird gewinnen?)
Jaja. Shields sind genormt. War mir wohl entfallen...
Ich würde es aber eher als 'Quasi-Standard' bezeichnen. Zumindest für
den 'Bus' und einem Teil det Abmasse.
Dann habe ich ja zum Glück immer noch die Möglichkeit, aus 4
verschiedenen, mehr oder wemiger guten Dokus, eine zu machen, oder ich
programmier es halt selbst.
Joachim B. schrieb:> kannst ja deinen Bootloader erweitern der das für für dich erledigt, die> Pin Config In/Out oder ADC MUSS in deinem Hauptprogramm ins EEPROM> geschrieben werden.
Woher weiss der Pin denn, wohin er geroutet ist? Genau darum geht es mir
nämlich und nicht um die (interne) Funktipn im μC!
Das kann ich auf den Boards nachschauen, durchpiepsen, oder eben so
machen, dsd z.B. auf DigitalOut 14 immer 'D14', evtl. abwechselng
invertiert/nicht invettiert, sowie der Rehie nach entsprechend auf allen
anderen Pins, und dann mit einem USB Seriell Wandler die mögöichen Ziele
abtaste und schaue, was das Terminalprogramm an dem der USB/Seriell
Wandler (und nicht der Arduino) hängt, an Text ausspuckt.
Jürgen schrieb:> Woher weiss der Pin denn, wohin er geroutet ist?
schrieb ich doch:
Joachim B. schrieb:> die> Pin Config In/Out oder ADC MUSS in deinem Hauptprogramm ins EEPROM> geschrieben werden.
das kann auch der Bootloader auslesen und senden, sowie den Namen das
Programms, nutzt aber nichts wenn dein Arduino ohne Trennung an dem
Programmer/USB2seriell hängt, die Pins können oft nur gegen den USB Chip
auf low gezogen werden, wer gewinnt da?
Du wolltest ja jeden PIN als SOFT seriell aus nutzen, was nur geht wenn,
wenn sie eben frei sind und auf einem Arduino ist das nur beim mini pro
so
Jürgen schrieb:> Ich suche einfach ein Programm, welches an jedem Pin> z.B. seriell dessen Bezeichnung ausgibt.
Achso, du willst auf einem 40pinner einfach 36 Soft-UARTs laufen lassen,
die einfach die Nummer rausblasen.
Das kannst du dir schnell schreiben (mit Templates oder Makros).
Allerdings solltest du aufpassen, dass du das nicht mit Pins machst, an
denen Ausgänge von irgendwelchen Chips angeschlossen sind. Denn das gibt
Kurzschlüsse.
Ich empfehle dir trotzdem, das einfach einmalig pro Board
durchzuklingeln und dann auf einen Zettel (oder in eine Tabelle) zu
schreiben.
Joachim B. schrieb:> die Pins können oft nur gegen den USB Chip> auf low gezogen werden, wer gewinnt da?
In der Regel befindet sich ein Widerstand in den Tx und Rx Leitungen
zwischen µC und USB-UART Wandler.
Dieser sollte den Rauch vermeiden, das ist sein Zweck.
Ob das auch bei allen Clonen und Nachbauten so ist?
KA!
Bei den mir bekannten, ja, aber das heißt nicht viel.
Arduino Fanboy D. schrieb:> In der Regel befindet sich ein Widerstand in den Tx und Rx Leitungen> zwischen µC und USB-UART Wandler.> Dieser sollte den Rauch vermeiden, das ist sein Zweck.
wie du schriebst i.d.R.
> Ob das auch bei allen Clonen und Nachbauten so ist?> KA!
ich habe welche ohne R, keine Chance da was sinnvolles anzuschliessen,
ich versuchte es ja wollte einen Rx vom AVR als Ausgangspin nutzen nach
der Programmierung, der Tx Ausgangspin vom USB Wandler hielt den aber
fest auf high!
Endlich wurde ich verstanden. :D
Glücklicherweise gibt es in meinem Setup keine Möglichkeit, das 2
Ausgänge gegeneinander arbeiten.
Analogeingängr und Endschalter bleiben frei, Stepsticks werden nicht
gesteckt, genauso alle anderen Sachen, wie z.B. LCD.
Ausserden gibts ja auch die entgegengesetzte Möglichkeit, alles als
Eingang zu schalten und evtl. Pegeländerungen am Arduino über dessen
serielle Schnittstelle mitzuteilen.
Das wäre evtl bei den Analogeingängen notwendig, da diese fest
beschaltet sind und eine serielle Ausgabe einfach 'wegfiltern' könnten.
Das kommt abet dann erst später...
Jürgen schrieb:> Endlich wurde ich verstanden. :D
wie denn?
Jürgen schrieb:> Glücklicherweise gibt es in meinem Setup keine Möglichkeit, das 2> Ausgänge gegeneinander arbeiten.
doch JEDER übliche Arduino hat einen USB Wandler, somit fällt Rx am µC
schon mal unter nicht frei!
Jürgen schrieb:> Arduono Mega
sorry, welcher Arduino Mega wird nicht über einen USB zu ser Umsetzer
angesprochen ausser der Mini pro 328p?
Glücklicherweise sind das auch dir einzigen beiden Pins, dessen Belegung
bekannt ist und somit nicht ins Schema 'unbekanmte Belegung
herausfinden' reinpassen.
Jürgen schrieb:> Glücklicherweise sind das auch dir einzigen beiden Pins
ich mein ja nur, das war in deiner Fragestellung nicht vorgesehen!
Selbst die LED_buildin ist da nicht frei!
Hallo,
wenn du zum Schaltvorgang den Namen ausgeben möchtest, dann könnte ich
mir sowas vorstellen. Die Tabelle und das Array füttern ist deine
Fleißarbeit. Danach mußte nur noch im Code digitalWrite(...) durch
digitalWriteName(...) ersetzen. Ggf. noch Serial durch dein
SoftwareSerial.
Veit D. schrieb:> wenn du zum Schaltvorgang den Namen ausgeben möchtest, dann könnte ich> mir sowas vorstellen.
das verstehe ich nicht,
1. er will doch wissen ob dieser Name in oder out gesetzt ist!
Jürgen schrieb:> Aus diesem Grund suche ich ein einfaches Programm, wrlches für jeden> Arduono Pin die 'Funktion' (also z.B. 'D3 odrr A8) per Software-Seriell> ausgibt.
Funktion wäre In oder Out oder ADC
Nicht alle sind frei und deswegen geht auch nicht immer:
Jürgen schrieb:> Ich suche einfach ein Programm, welches an jedem Pin z.B. seriell dessen> Bezeichnung ausgibt
Hallo,
ah menno, jetzt ist mir alles klar. :-)
Er müßte eine Tabelle erstellen und für jeden Pin das zugehörige
Directionregister eintragen. Dann kann er das entsprechende Bit
abfragen. Nur erschließt sich mir der Sinn nicht komplett. Im Programm
ist doch festgelegt welcher Pin welche Funktion hat, damit sehe ich das
im setup, welcher Pin was macht.
Veit D. schrieb:> Nur erschließt sich mir der Sinn nicht komplett
mir ja auch nicht, ich schaue auf den Controller und ins Datenblatt und
weiss welche Pins das sind und was sie können, ADC oder digital, Reset
oder Rx Tx oder PWM.
Die Funktion legt ja auch da fast nur das Programm fest und die
Beschaltung.
Da es ja wohl so einfach ist, hier ein paar Bilder. Die Pinbelegungrn
haben dann Zeit bis morgen (ist ja nicht kompliziert...).
Aber den vorgestellten Code werde ich mir mal in einer ruhigen Stunde
ansrhen.
Übrigens: Von wem stammt das mit dem Namen zum Schaltvorgang?
Mir geht es einfach mur darum, das 'Dn' in gewissen Zeitabständen den
String 'Dn' ausgibt.
Habe eventuell eine Möglichkeit gefunden, den onboard USB-seriell
Wandler zu nutzen. Da ich ja nur TX brauche, könnte ich an RX, sofern
der R verbaut ist, einen Takt ausgebrn und die anderen, als Eingänge
geschalteten, Pins, nutzen und auf Pegeländerungen achten.
Dadurch kann ich an RX (mit entsprechend anderer Pin Konfiguration) eine
Strippe (mit Schutz-R) pappen und die Eingänge entsprechend antasten.
Über den, in seiner Funktion beibehaltenrn TX bekomme ich dann eine
Ausgabe und weiss wie ich die eigentliche Software (Marlin) zu
konfigurieren habe.
Jürgen schrieb:> Da es ja wohl so einfach ist
Du ironisch, ich auch ironisch
Jürgen schrieb:> hier ein paar Bilder
Naja, eher Verschmierungen...
Ich versteh echt Dein Problem nicht. Diese "Shields" und der "Arduono"
ist dokumentiert! Da muss man echt nichts auspiepsen!
Gruss Chregu
Also ich finde, die Quaöität der Bildet entspricht voll dem der
meisten Antworten.
Ich habe mehrfach versucht zu etklären, worum es geht. Keiner hat
irgendwas nachgefragt, aber alle haben fleissig reininterpretiert.
Zeigt mir wieder aufs neue, das die Profis in zu hohen Regionen denken
und man als (fortgeschrittener) Anfänger besser sein eigenes Ding macht
oder woanders....
Trotzdem werde ich bei weiteren <problemen auch hier wiedet posten, da,
wenn man eine passende Lösung, mit Hilfe der Profis, findet, die
Qualität derselben doch recht hoch ist.
Christian M. schrieb:> Diese "Shields" und der "Arduono" ist dokumentiert
Schaltplan RAMPSXB (das ist ein Shield für RAMPS, mit Eagle Dazeien,
aber sonst mässiger Doku), ohne Eagle installieren zu müssen. Der Import
in KiCAD ist für mich nicht zufriedenstellend.
Jürgen schrieb:> Keiner hat irgendwas nachgefragt,> aber alle haben fleissig reininterpretiert.
Hast du meinen Ansatz wenigstens ausprobiert?
Ich sehe keine Antwort deinerseits dazu.
Jürgen schrieb:> Trotzdem werde ich bei weiteren <problemen auch hier wiedet posten, da,> wenn man eine passende Lösung, mit Hilfe der Profis, findet, die> Qualität derselben doch recht hoch ist.
Das ist natürlich voll Scheisse, diese hohe Qualität!
Gruss Chregu
S. R. schrieb:> Hast du meinen Ansatz wenigstens ausprobiert?> Ich sehe keine Antwort deinerseits dazu.
Nein. Aber das ist mir auch egal, weil ich glaube das du mir nicht die
Antwort gibst die ich will.
Jürgen schrieb:> das du mir nicht die Antwort gibst die ich will.
Du hast Dich in eine Sackgasse verrannt. Das ist ein häufiger Fehler bei
Anfängern, aber auch bei Profis.
Noch schlimmer ist aber noch Deine Forderung, genau die Antwort zu
hören, die Du willst. So wirst Du nie weiterkommen.
Man kann Dir nicht helfen!
PLONK!
Gruss Chregu
Jürgen schrieb:> Nein. Aber das ist mir auch egal, weil ich glaube das du mir nicht die> Antwort gibst die ich will.
Das ist allerdings unterste Schublade, wenn man unter falschen Namen,
irgendwrlchen Durchfall postet.
Jürgen schrieb:> Ich habe mehrfach versucht zu etklären, worum es geht. Keiner hat> irgendwas nachgefragt, aber alle haben fleissig reininterpretiert.
Um nachzufragen, müßte man wenigstens im Ansatz eine Idee haben, was
Dein eigentliches Problem ist. Das ist mir bisher bei keinem Post von
Dir gelungen. Ich weiß ja nichtmal, was dieses "Marlin" oder ein
"Frankenstein-Board" sein soll.
Hallo,
> Übrigens: Von wem stammt das mit dem Namen zum Schaltvorgang?
Hier komme ich mir ehrlich gesagt verarscht vor.
> Mir geht es einfach mur darum, das 'Dn' in gewissen Zeitabständen den> String 'Dn' ausgibt.
Hier fehlt mir der Sinn dafür. Wenn eine Ausgabe ohne jeden Grund aller
x [Zeit] erfolgt, was hilft dir das? Wenn du das wirklich so haben
möchtest, dann programmiere es. Aller paar ms wird irgendwas auf die
Serielle geschrieben. Ohne jeden Bezug aber sinnfrei.
> Ich habe mehrfach versucht zu etklären, worum es geht. Keiner hat> irgendwas nachgefragt, aber alle haben fleissig reininterpretiert.
Nachfragen gibt es, nur leider keine brauchbare Erklärung für das
eigentliche Problem. Das heißt, wir wollen nicht wissen wie du machen
möchtest, wir wollen wissen was dein eigentliches Problem ist. Letzteres
ist bis heute absolut unklar. Ansonsten kommen falsche Ideen und
Antworten bei raus.
Jürgen schrieb:>> Hast du meinen Ansatz wenigstens ausprobiert?>> Ich sehe keine Antwort deinerseits dazu.>> Nein. Aber das ist mir auch egal, weil ich glaube> das du mir nicht die Antwort gibst die ich will.
Du willst auf jedem Pin eine SoftSerial, die den Pin-Namen rausbläst.
Hab ich skizziert. Wenn du was anderes hören wolltest, dann drücke dich
deutlicher aus.
Seufz. Undankbarkeit ist der Welten lohn.