Hallo Leute
Ich habe folgendes Problem in C++
Ich will einen Kabeltester mit einem Atemel 128 bauen.
Es sollen 16 Adern eines Kabels auf Ducrchgang und Kurzschluß zu
benachbarten Pins getestet werde.
Mit Hilfe des Atmels soll eine Bitkombination 0101010101010101 und
anschliessend anders rum 1010101010101010.
Somit denke ich sind alle nötigen Tests vorhanden.
Meine Frage ist, wie heisst bzw. wie nennt sich die Funktion die in C++
diesen Befehl ausführt und mir dann nur die Leitung anzeigt, die defekt
ist? Ich weiß einfach nicht wie ich das in c++ schreiben soll!!!??
Kann mir da jemand helfen ?!?!?
Danke
111
Hi
Ich würd deine Kombination nicht anwenden. Wenn du herausfinden
möchtest, welche Pins kurzgeschlossen sind, solltest du immer nur an
einen Ausgangspin die Spannung anlegen, und dann für die Inputpins
abfragen. Sollte dann wo, außer beim selben Eingangs- wie Ausgangspin,
eine Spannung anliegen, weißt du, dass er an jenem Pin eine Spannung
bekommt, die nicht dem Eingang entspricht - kurz ein Kurzschluss.
Bei deiner Idee könntest du dir dann quasi aussuchen, welchen Outputpin
du als Fehlerquelle nimmst - wenn ich das alles richtig verstanden habe.
z.B
Ausgang
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| | | | | | |_| | | | | | | | |
| | | | | | | | | | | | | | | |
| | | | | |_| | | | |__| | |__|
| | | | | | | | | | | | | | | |
|_| | | | | | | | | | |__| | | |
| | | | | | | | |_| | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
Eingang0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Zuerst hoffe ich mal, dass keines deiner Kabel mal so aussehen würde.
Pins 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Wenn Vcc bei Pin1 -> Eingangsport: 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wenn Vcc bei Pin12-> Eingangsport: 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
Zum Beispiel halt. Solch eine Abfrage müsstest du Pin für Pin machen
Du könntest dich spielen, und die Kombinationen auslassen, die du
bereits ausgemessen hast.
Wenn du also alle Kombinationen von Ausgangspin 2 z.B. durch hast,
kannst du bei der Messung aller I-Pins bei Vcc->O-Pin3 die I-Pins0 bis 2
auslassen, da du sie ja schon ausgemessen hast. Sollte aber bei 16Pins
nicht den Aufwand Wert sein.
Ich hoffe, du verstehst jetzt, weshalb ich deine 1010101 Kombination
nicht empfehle.
"Meine Frage ist, wie heisst bzw. wie nennt sich die Funktion die in C++
diesen Befehl ausführt und mir dann nur die Leitung anzeigt, die defekt
ist?"
Wenn ihr den gefunden habt, dann sagt mir bitte den Befehl, der einen
beliebigen hex-record auf die page size eines AVR umbiegt. Das müßte
eigentlich ein Standardbefehl sein aber ich komm im Moment nicht drauf
;)
@Horst
Ich glaub Du hast meinen Smily übersehen.
Also für den Parser habe ich heute schon den ganzen Tag investiert. Wenn
Du 3xmal so schnell bist, warum hast Du dann heute morgen nicht gleich
die Ärmel aufgekrempelt. Dann hätte ich den fertigen Code ja schon vor 8
Stunden kriegen können. Ich glaube für Dich brauche ich keinen Smily
setzen. Der wird eh wieder übersehen.
Gruß Matthias
>Meine Frage ist, wie heisst bzw. wie nennt sich die Funktion die in C++>diesen Befehl ausführt und mir dann nur die Leitung anzeigt, die defekt>ist?
Das kann C nicht, darür würde ich Bascom nehmen ;-)
Hallo Patrick
Danke für deine Infos, klingt supi!
Ich habe ein 100 adriges Flachbandkabel, die Abfrage wäre "denke ich "
in C++ sehr lang oder ?!?
Ich bin ein absoluter C++ Neuling! Kannst du mir ein Tip geben, wie die
Abfrage für die ersten 8 Pins lautet?!?!?!
Danke schon mal!!!!
Bastler wrote:
> Da reichen zwei verschachtelte Schleifen!>> Ausgangspin> Eingangspin lesen
Hallo das fertige Ergebniss, sollte mir dann schon über C++ mitteilen,
welcher Pin defekt ist.
Gruß und Danke
> Meine Frage ist, wie heisst bzw. wie nennt sich die Funktion die> in C++ diesen Befehl ausführt und mir dann nur die Leitung anzeigt,> die defekt ist?
Das ist einfach. Die Funktion lautet:
1
externintueberpruefe_kabel();
Rückgabewert "0" bedeutet, alles in Ordnung. Ansonsten welche Ader
defekt ist.
> Hallo das fertige Ergebniss, sollte mir dann schon über> C++ mitteilen, welcher Pin defekt ist.
Ach so, da habe ich Dich falsch verstanden. Diese Funktion heisst:
Hallo klingt supi! Danke
aber wie schreibe ich das dann in C++ für zum Beispiel die ersten 8
Pins???
Denn ich schalte über Chipselect jeweils 8 Pins von 100 zu?!?
Wäre über Hilfe in C++ Schreiben sehr dankbar.
Danke
>LOL>Sorry aber ich habe keine Ahnung von C++ ! :o)
Da fällt mir ein, dass ich meinen Akkuschrauber wegen unserer Gartentür
und der fehlenden Latten am Zaun laden muß. Die Zaunpfähle sind alle
noch in Ordnung.
Übrigens vergisst der Unbekannte immer, die richtige Include-Datei zu
nennen.
Die bekommt man nur per NDA von Bill Gates (Windows-Version) oder Linus
Torwalds (Linux) persönlich. Für andere Betriebssystem gibt es die
natürlich nicht. Auch ihr Name ist so geheim, dass weder Google noch die
CIA ihn wissen.
> Kannst du mir vielleicht über email weiter helfen ?
Ja gerne.
Schreib einfach Deine Email-Adresse und vollen Namen hier in den Thread
und ich werde mich bei Dir melden.
Unbekannter wrote:
>> Kannst du mir vielleicht über email weiter helfen ?>> Ja gerne.>> Schreib einfach Deine Email-Adresse und vollen Namen hier in den Thread> und ich werde mich bei Dir melden.
Meine email routername12@aol.com ich bin der Kay
Danke :o)
@Kay: Lass dich hier mal nicht verschaukeln! Zugegeben, die Frage nach
einer C++ Funktion "Kabeltest" ist etwas unglücklich...
Lies dier mal das (sehr gute) GCC Tutorial hier durch.
Du kannst ja einfach dein Kabel direkt an den AVR anklemmen und jeweils
einen Pin auf 5V setzen. Dann gehst du mit einer Schleife alle
Eingangs-Pins, an denen das andere Ende vom Kabel hängt, durch und
prüfst, ob nur der Pin, der zu dem Ausgangs-Pin gehört, 5V führt.
Wenn das nicht so ist, hast du irgendwo einen Fehler (logischerweise)
Du bräuchtest dann halt 16 Ausgänge und 16 Eingänge, wenn der AVR das
nicht hat (kenne den Mega128 nicht auswendig), müsstest du dir mit
Schieberegistern o.ä. weiterhelfen.
Guest wrote:
> @Kay: Lass dich hier mal nicht verschaukeln! Zugegeben, die Frage nach> einer C++ Funktion "Kabeltest" ist etwas unglücklich...>> Lies dier mal das (sehr gute) GCC Tutorial hier durch.> Du kannst ja einfach dein Kabel direkt an den AVR anklemmen und jeweils> einen Pin auf 5V setzen. Dann gehst du mit einer Schleife alle> Eingangs-Pins, an denen das andere Ende vom Kabel hängt, durch und> prüfst, ob nur der Pin, der zu dem Ausgangs-Pin gehört, 5V führt.>> Wenn das nicht so ist, hast du irgendwo einen Fehler (logischerweise)>> Du bräuchtest dann halt 16 Ausgänge und 16 Eingänge, wenn der AVR das> nicht hat (kenne den Mega128 nicht auswendig), müsstest du dir mit> Schieberegistern o.ä. weiterhelfen.
Hallo
ja aber ich habe 100 pins . das was mir patrick und auch du geschildert
haben, klingt sehr logisch nur leider fehlen mir die kenntnisse in c++
:o)
Tu Schieberegister verketten. Die Adern der einen Seite des Kabelbündels
klemmst du dann an die Schieberegister, die Adern der anderen über 100
Dioden alle parallel und dann auf einen Eingang des Mikroprozessors.
Dann schubste vorne eine '1' rein und guckst, was am Eingang ankommt.
Dann die Schieberegister eins weiter schubsen und wieder gucken usw.
>die Adern der anderen über 100 Dioden alle parallel
da sollte man auch wieder Schieberegister nehmen, die parallel geladen
werden können.
Dann kann man auch gleich feststellen, ob hinten das gleiche Kabel
ankommt, wie vorne ausgewählt wurde und ob es vielleicht auch
Kurzschlüsse gibt.
STK500-Besitzer wrote:
>>die Adern der anderen über 100 Dioden alle parallel>> da sollte man auch wieder Schieberegister nehmen, die parallel geladen> werden können.> Dann kann man auch gleich feststellen, ob hinten das gleiche Kabel> ankommt, wie vorne ausgewählt wurde und ob es vielleicht auch> Kurzschlüsse gibt.
Stimmt, da hast du absolut Recht. Punkt.^^