Hallo, ich bin gerade dabei meine Eingänge mit zwei 74HC165 von meinem Arduino Uno zu erweitern und komme trotz stundenlangem googlen nicht weiter :( ich verwende diesen Code: http://www.arduino.cc/playground/Code/ShiftRegSN74HC165N wenn ich ein Schieberegister dranhänge funktioniert alles einwandfrei wenn ich dann ein 2.dranhänge reagiert kein Taster mehr meine Anschlüsse sind wie in dem Code beschrieben wenn ich dann mein 2.dranhänge ist die Belegung so: (1)Pl wird parallel mit dem 2.Register verbunden (2)CP wird parallel mit dem 2.Register verbunden (15)CE wird parallel mit dem 2.Register verbunden (siehe unten) Am 1.Register hängt auf Platz 9 (Q7) das Kabel für den Arduino auf Platz 10 (DS) vom 1.Register geht es in den ausgang vom 2.Register (Platz 9)Q7 1.Fehler Die Taster die an dem ersten Register angeschlossen sind reagiert keiner mehr bis auf den letzten Taster. Wenn ich den drücke gibt er seriell aus dass alle Taster gedrückt sind 2.Fehler Wenn ich jetzt das Kabel von Platz 15(CE) das mit dem 2. Register parallel verbunden ist entferne gehen alle Taster vom 1.Register einwandfrei Von dem 2. Register sind alle Taster tot bis auf den letzten. Wenn ich den drücke gehen alle eingänge vom 2.Register auf High 3.Fehler Dann hab ich an anderen Schaltplänen gesehen dass man den Platz 15(CE) bei allen Registern auf den Ground legen kann (ist ja eigentlich auch von der Logig richtig) also hab ich es auch vesucht erst beim ersten Register dann noch einmal alles getestet und keine veränderung festgestellt und dann beim 2 sind beim Arduino die Lichter ausgegangen (ich schätz mal das war ein Kurzschluss) zum Glück hat der PC den Saft abgeriegelt denn sonst währe glaub ich mein Arduino nur noch Schall und Rauch zur schicherheit hab ich die Register mal gewechselt nicht dass die einen Schaden abbekommen haben aber die Fehler sind immer noch da Ich hoffe das ich es verständlich geschrieben habe wenn nicht dann bitte nachfragen! Kann mir da bitte bitte einer helfen ich verzweifel hier gerade fast :( Gruß Puma321
:
Bearbeitet durch User
Statt langatmiger Texte solltest du besser einen Schaltplan (Skizze) deines Aufbaus einstellen. Gruss
ich hab schnell eine Skizze gemacht ist im Anhang und die Seite hab ich schon gesehen (ich habe schon gegoogelt hab ich ja schon oben erwähnt) Danke schon mal im Vorraus
Probier mal...
1 | // ---- 2x 74HC165 kaskadiert ----
|
2 | uint32_t SerialDataRead (void) |
3 | {
|
4 | uint16_t data = 0; |
5 | uint8_t BitCount = 16; |
6 | |
7 | Clock = 1; // Pin 2 74HC165 |
8 | |
9 | // positive Taktflanke an der PL Leitung. 74HC165
|
10 | // übernimmt die Pegel an den Eingängen in das SR.
|
11 | ParaLoad = 0; |
12 | ParaLoad = 1; // Pin 1 74HC165 |
13 | |
14 | while ( BitCount -- ) |
15 | {
|
16 | data <<= 1; |
17 | if ( SerialDataIn ) // Pin 9 (Q7) 74HC165 |
18 | data |= 0x01; |
19 | // nächstes BIT heraustakten
|
20 | Clock = 0; |
21 | Clock = 1; // positive Taktflanke |
22 | };
|
23 | return data; |
24 | }
|
Bernd N schrieb: > while ( BitCount -- ) > { > data <<= 1; > if ( SerialDataIn ) > // Pin 9 (Q7) 74HC165 > data |= 0x01; > // nächstes BIT heraustakten > Clock = 0; > Clock = 1; > // positive Taktflanke > }; > return data; > } > > [/c] Was soll das if(SerialDataIn) machen?
Das ist der Pin am MC, jaja, ich weiß, 1<<PIN aber ich verwende ein Makro und damit kann man direkt den Pin ansprechen. Also in AVR manier if( PINx & ( 1 << Pxx ) ) Logik sollte klar sein. Wenn der PIN 1 ist dann wird auch ne 1 in das Datenwort geschrieben.
ist das so richtig wie ich es für mich interpretiert habe?
1 | while ( BitCount -- ) |
2 | {
|
3 | data <<= 1; |
4 | if( dataPin & ( 1 << dataPin ) ) // Pin 9 (Q7) 74HC165 |
5 | data |= 0x01; |
6 | // nächstes BIT heraustakten
|
7 | clockPin = 0; |
8 | clockPin = 1; // positive Taktflanke |
9 | };
|
wenn das richtig ist dann funktioniert es leider nicht :( was mach ich nur falsch sind die Anschlüsse alle richtig angeschlossen(Skizze)? Danke für deine Bemühungen Bernd N Er setzt mir alle Eingänge von Register 1 und 2 auf HIGH
:
Bearbeitet durch User
Hast du schon richtig verstanden aber du mußt auch deine entsprechenden PINs 0 und 1 setzen, also in AVR.. PORTx &= ~(1<<Pxx); PORTx |= (1<<Pxx); Du wirst kein Macro haben also verstehe es als Pseudocode und setze es um. Wie gut sind deine C Kenntnisse ?
also ich hab es noch einmal probiert und auch den Code den ich vorher verwendet hatte noch einmal durchgeschaut der passt eigentlich schon ich glaube eher das an meiner Schaltung was nicht passt denn das erste Register funktioniert ja nur das 2. halt nicht meine C Kenntnisse sind einigermasen so voll in die Materie bin ich jetzt noch nicht eingestiegen aber davor hab ich C# programmiert aber auch nur als Hobby weis sonst noch irgendjemand rat das haben doch schon viele ausprobiert oder nicht da wird doch einer dabei sein der es auch mal mit einem Arduino Uno versucht hat und dann auch das problem hatte
Bernd N schrieb: > http://www.mikrocontroller.net/articles/AVR-Tutori... da ist genau das was ich nicht verstehe und zwar sind da die Anschlüsse 15(CE) auf den GND gelegt und wenn ich es mache gibt es einen Kurzen!!! kann das jemand erklären
Das kann man nicht mehr nachvollziehen. Der PIN gehört an GND. Du kannst den auch gerne an deinem MC lassen und den PIN nach GND ziehen. Ein Kurzschluss darf da nicht vorkommen.
Bernd N schrieb: > Das kann man nicht mehr nachvollziehen. Der PIN gehört an GND. Du > kannst > den auch gerne an deinem MC lassen und den PIN nach GND ziehen. Ein > Kurzschluss darf da nicht vorkommen. stimmt ich hab jetzt noch einmal alles kontrolliert und festgestellt dass bei meinem Steckbord 2 übereinandergelegene Steckbuchsen verbunden sind (vom Werk aus) so was hab ich noch nie erlebt somit waren zufälligerweise die 5Volt und der Clock enable verbunden bei diesem Steckboard http://www.reichelt.de/Laborkarten/STECKBOARD-4K7V/3/index.html?&ACTION=3&LA=5000&GROUP=C94&GROUPID=3374&ARTICLE=67683&START=0&SORT=-rank&OFFSET=500 kann die 2Pins bitte mal jemand an seinem Steckbord kontrollieren ob sie auch verbunden sind? bzw kann ich die irgendwie selber reparieren? Danke schon mal im Vorraus Gruß Puma321
:
Bearbeitet durch User
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.