Πίνακας περιεχομένων:

JDM Programmer Review: 9 Βήματα
JDM Programmer Review: 9 Βήματα

Βίντεο: JDM Programmer Review: 9 Βήματα

Βίντεο: JDM Programmer Review: 9 Βήματα
Βίντεο: # Драйвер принтера Canon Pixma | TS3340 / TS3140 | Принтер Canon 2024, Ιούλιος
Anonim
JDM Programmer Review
JDM Programmer Review

Το JDM είναι ένας δημοφιλής προγραμματιστής PIC επειδή χρησιμοποιεί σειριακή θύρα, ελάχιστο αριθμό εξαρτημάτων και δεν απαιτεί τροφοδοσία. Υπάρχει όμως σύγχυση εκεί έξω, με πολλές παραλλαγές προγραμματιστή στο δίκτυο, ποιες λειτουργούν με ποιους PIC; Σε αυτό το "διδακτικό" δοκιμάσαμε το JDM και σας δείχνω πώς να προσομοιώσετε το κύκλωμα χρησιμοποιώντας το Spice που θα απαντήσει σε όλες τις ερωτήσεις σας!

Προμήθειες

LTspice το οποίο μπορείτε να κατεβάσετε από τις Αναλογικές Συσκευές εδώ.

Χρειάζεστε επίσης τα αρχεία κυκλώματος JDM εδώ.

Βήμα 1: Απαιτήσεις σειριακής θύρας

Απαιτήσεις σειριακής θύρας
Απαιτήσεις σειριακής θύρας

Το JDM απαιτεί σειριακή θύρα που πληροί τις προδιαγραφές EIA232, ιδανικά με επίπεδα τάσης +12/-12.

Σύμφωνα με το φύλλο δεδομένων του Texas Instruments Line Driver MC1488 (Εικόνα 3)

Αντίσταση εξόδου = 4V/8mA = 500 ohm.

Όριο ρεύματος βραχυκυκλώματος = 12mV, χωρίς χρονικό περιορισμό - χωρίς ζημιά στο τσιπ.

Αντίσταση εισόδου του δέκτη γραμμής = 3k έως 7k ohm συνιστάται.

Οι σειριακές θύρες σε παλαιότερους επιτραπέζιους υπολογιστές χρησιμοποιούν +12v/-12V που πληρούν αυτήν την απαίτηση.

Οι σειριακές θύρες σε νεότερους φορητούς υπολογιστές χρησιμοποιούν χαμηλότερες τάσεις. Το JDM μπορεί να λειτουργεί ή όχι - η απάντηση είναι πιο περίπλοκη.

Βήμα 2: Απαιτήσεις προγραμματισμού PIC

Απαιτήσεις προγραμματισμού PIC
Απαιτήσεις προγραμματισμού PIC

Πληροφορίες σχετικά με τις απαιτήσεις προγραμματισμού PIC προέρχονται από το Microchip. Τα παραπάνω αφορούν μια τυπική συσκευή.

Βήμα 3: Προδιαγραφή JDM

Προδιαγραφή JDM
Προδιαγραφή JDM

Έχει χαθεί ο αρχικός ιστότοπος JDM μέσα στην ομίχλη του χρόνου; Αυτό μας αφήνει να μαντέψουμε τι σκόπευε αρχικά ο σχεδιαστής για τις προδιαγραφές.

  1. Παρέχετε VDD = 5V και έως και IDD = 2mA μέγιστο (για την έκδοση "σε πρίζα")
  2. Παρέχετε VHH = 13V και έως IHH = 0,2mA μέγιστο.
  3. MCLR Χρόνος ανόδου tVHHR = 1uS μέγ.
  4. Η έκδοση ICSP πρέπει να είναι σε θέση να τραβήξει το MCLR χαμηλά έναντι 22k pull-up στο στόχο.

Βήμα 4: Περιγραφή κυκλώματος

Περιγραφή κυκλώματος
Περιγραφή κυκλώματος

Το σχήμα JDM1 βασίζεται στο "τυπικό" κύκλωμα JDM που λαμβάνεται από τον ιστότοπο PICPgm. Αυτός είναι ο προγραμματιστής "PIC in Socket" όπου ο PIC παίρνει ενέργεια από τις ακίδες TX και RTS. Το αρχικό διάγραμμα ήταν δύσκολο να κατανοηθεί, οπότε το ξανασχεδιάζω χρησιμοποιώντας την κανονική σύμβαση της ροής ρεύματος από πάνω προς τα κάτω. Έχω προσθέσει δείκτες LED "RESET", "PROG" και "RTS" που είναι απαραίτητοι κατά την κατασκευή και τις δοκιμές. Ας ελπίσουμε ότι αυτά δεν θα έχουν καμία αρνητική επίδραση στη συμπεριφορά.

Η συνήθης σύμβαση του σχεδιασμού κυκλωμάτων είναι κοινή σε όλους τους τομείς, αλλά το βασικό χαρακτηριστικό του JDM είναι ότι η γειωμένη σειριακή θύρα (GND) συνδέεται με το VDD. Αυτό δημιουργεί σύγχυση καθώς τα σήματα σειριακής θύρας μετρούνται σε σχέση με τα σήματα GND, PIC σε σχέση με το λογικό έδαφος (VSS).

Όταν το TX ανεβαίνει ψηλά, το Q1 συμπεριφέρεται ως δύο μεροληπτικές διόδους προς τα εμπρός. (Ο συλλέκτης Q1 δεν είναι αντίστροφα προκατειλημμένος όπως με την κανονική λειτουργία τρανζίστορ). Ο συλλέκτης Q1 φορτίζει το C2, το οποίο σφίγγεται στο VDD+8V από το Zener (D3). Ο πομπός Q1 παραδίδει 13V στο MCLR για λειτουργία προγράμματος/επαλήθευση.

Όταν το TX μειώνεται, ο πυκνωτής C3 φορτίζεται μέσω D1 και ο VSS σφίγγεται στο VDD-5V με zener (D5). Επίσης το TX σφίγγεται στο (VSS-0,6) από το D1. Το Q1 είναι απενεργοποιημένο, το C1 κρατά τη φόρτιση για τον επόμενο παλμό προγραμματισμού. Το MCLR συσφίγγεται στα 0V με D2, οπότε ο PIC επαναφέρεται τώρα.

Όταν το RTS είναι υψηλό, το ρολόι μεταδίδεται στο PGC. Σφιγκτήρας D4 PGC σε λογική υψηλή VDD. Όταν το RTS είναι χαμηλό, ο πυκνωτής C3 φορτίζεται μέσω D6 και ο VSS σφίγγεται στο VDD-5V με zener (D5). Το D6 σφίγγει το PGC στο VSS ή το λογικό 0.

Κατά τη διάρκεια του προγραμματισμού, τα δεδομένα που αποστέλλονται στο DTR διαβάζονται στο PGD, το οποίο ο PIC ρυθμίζει ως είσοδο. Όταν το DTR είναι υψηλό, το Q2 λειτουργεί ως «ακόλουθος εκπομπών» και η τάση PGD είναι περίπου (VDD-0.6) ή λογική 1. Όταν το DTR είναι χαμηλό, το Q2 λειτουργεί ως κακό τρανζίστορ (οι ακίδες εκπομπής και συλλέκτη αντιστρέφονται). Το Q2 χαμηλώνει το PGD, το οποίο σφίγγεται από το D7 στο VSS ή στο λογικό 0.

Κατά τη διάρκεια της επαλήθευσης, ο PIC ρυθμίζει το PGD ως έξοδο για την αποστολή δεδομένων στη σειριακή θύρα. Το DTR πρέπει να είναι υψηλό και τα δεδομένα διαβάζονται στο CTS. Όταν η έξοδος PGD είναι υψηλή, το Q2 είναι απενεργοποιημένο, CTS = DTR = +12V. Όταν η έξοδος PGD είναι χαμηλή, το Q2 είναι ενεργοποιημένο. Ο συλλέκτης Q2 αντλεί ρεύμα (12V+5V)/(1k+1k5) = 7mA από το DTR και τραβάει το CTS χαμηλά, στο VSS.

Βήμα 5: Προετοιμαστείτε για προσομοίωση

Προετοιμαστείτε για προσομοίωση
Προετοιμαστείτε για προσομοίωση

Κατεβάστε το μπαχαρικό LT, αποθηκεύστε και ανοίξτε τα αρχεία κυκλώματος (*.asc) που παρέχονται εδώ. Για να προσομοιώσουμε το κύκλωμα, πρέπει να του δώσουμε κάποιες εισόδους και μετά να «εντοπίσουμε» τις εξόδους. V1, V2 V3 προσομοιώνουν τη σειριακή θύρα 12V με σύνθετη αντίσταση εξόδου R11, R12, R13.

  • Το V1 δημιουργεί 2 παλμούς προγράμματος σε TX από 0,5ms έως 4,5ms
  • Το V2 δημιουργεί έκρηξη παλμών δεδομένων στο DTR από 1,5 έως 4,5ms
  • Το V3 δημιουργεί εκρήξεις παλμών ρολογιού στο RTS από 0,5 έως 3,5ms

Τα συστατικά V4, X1, R15 και R16 είναι όλα μέρος της προσομοίωσης.

  • Το V4 παράγει 2 παλμούς από 2,5 έως 4,5 ms για επαλήθευση δεδομένων.
  • Το Jumper X1 προσομοιώνει το OUTPUT στο PGD.
  • Τα R15, R16 προσομοιώνουν τη "φόρτωση" του PIC σε VDD και MCLR.

Βήμα 6: Τροποποιήσεις για το ICSP

Τροποποιήσεις για το ICSP
Τροποποιήσεις για το ICSP
Τροποποιήσεις για το ICSP
Τροποποιήσεις για το ICSP

Το σχήμα JDM3 δείχνει την έκδοση για προγραμματισμό "in circuit". Οι τροποποιήσεις από το αρχικό είναι

  1. Αντικαταστήστε την υποδοχή ZIF με υποδοχή ICSP.
  2. Ο PIC τροφοδοτείται τώρα από κύκλωμα τροφοδοσίας -στόχου (V5).
  3. Αφαιρέστε 5V zener (D5).
  4. Ο μικρός πυκνωτής 100pF (C4) μετακινείται δίπλα στο PIC στο κύκλωμα στόχου.
  5. Οι λυχνίες LED παίρνουν ενέργεια από την πλακέτα κυκλώματος όπου είναι δυνατόν.
  6. Η αντίσταση έλξης MCLR (R10) και η δίοδος (D10) απαιτούνται στο κύκλωμα στόχου.
  7. ΠΡΟΕΙΔΟΠΟΙΗΣΗ. Ο πίνακας προορισμού πρέπει να έχει μια "πλωτή" παροχή, ιδανικά μια μπαταρία.
  8. Μην συνδέετε γείωση στόχου (VSS) με γείωση υπολογιστή/υπολογιστή συνδέοντας άλλες θύρες υπολογιστή ταυτόχρονα με το JDM.

Μετά την προσομοίωση του JDM1, το πρόβλημα του μεγάλου χρόνου φόρτισης στο C2 έγινε εμφανές. Στη συνέχεια, μετά την ανάγνωση του Fruttenboel φαίνεται ότι τα C2 και Q1 προστέθηκαν ως τροποποίηση στο πρωτότυπο. Δεν μπορώ να σκεφτώ τι προορίζονται να κάνουν τα C2 και Q1 εκτός από τη δημιουργία προβλημάτων. Έτσι, για το JDM4, επιστρέφουμε στον παλαιότερο σχεδιασμό του Fruttenboel, ο οποίος είναι απλός και κατανοητός. Σφιγκτήρας D1 και D3/LED2 MCLR μεταξύ VSS και VDD+8V. Η τιμή του R1 μειώνεται στα 3k3, αρκεί για να φωτίσει το LED2 στα 12V.

Το JDM4 έχει επίσης σχεδιαστεί για να λειτουργεί με ασθενέστερες σειριακές θύρες. Όταν το TX ανεβαίνει υψηλά (+9V), πηγή ρεύματος TX = (9-8)/(1k +3k3) = 0.2ma, ίσα ίσα για να τραβήξει το MCLR ψηλά, αν και ανεπαρκές για να φωτίσει το LED2. Όταν το TX μειώνεται (περίπου -7V), ο νεροχύτης του TX = (9-7)/1k = 2mA. Ρεύμα LED1 ((7-2 για led)/(2k7) = 1,8mA. MCLR έλξης προς τα κάτω ρεύμα = 7-5.5/3k3 = 0.5mA.

Αυτό το κύκλωμα έχει επίσης δοκιμαστεί (προσομοίωση JDM5) για να δει τι συμβαίνει με τις σειριακές θύρες +/- 7V ελάχιστο, όπου δεν υπάρχει επαρκής τάση για να διατηρηθεί VHH = 13V. Ο σκοπός του C1 τώρα γίνεται προφανής, το C1 δημιουργεί μια σύντομη +ve ώθηση στο MCLR, μια αύξηση 33us στην ανερχόμενη άκρη του TX, αρκετά μεγάλη για να μπορέσει ο PIC να εισέλθει σε λειτουργία προγραμματισμού, ίσως; Αλλά αφαιρέστε το βραχυκυκλωτήρα X2 (απενεργοποιήστε το LED1) καθώς δεν υπάρχει αρκετό ρεύμα για να χαμηλώσει το MCLR και να φωτίσει το LED1 μαζί. Όταν το TX πέφτει χαμηλά, ο νεροχύτης TX = (7V-5.5V)/(1k+3k3) = 0.3mA, αρκεί μόνο για να τραβήξει χαμηλά το MCLR έναντι του ανασυρόμενου R10.

Βήμα 7: Αποτελέσματα προσομοίωσης

Αποτελέσματα προσομοίωσης
Αποτελέσματα προσομοίωσης
Αποτελέσματα προσομοίωσης
Αποτελέσματα προσομοίωσης
Αποτελέσματα προσομοίωσης
Αποτελέσματα προσομοίωσης

Για να δείτε τα γραφικά αρχεία, είναι προτιμότερο να κάνετε δεξί κλικ στους παρακάτω συνδέσμους και μετά να επιλέξετε "Άνοιγμα συνδέσμου στη νέα καρτέλα"

Προσομοίωση 1: ίχνος MCLR, VSS και RTS για το αρχικό JDM1. Αμέσως παρατηρούνται οι παρατηρήσεις 1, 2 και 3.

Προσομοίωση 2: ίχνος MCLR και VSS και RTS για τροποποιημένο JDM2, το οποίο διορθώνει προηγούμενα προβλήματα.

Προσομοίωση 3: ίχνος PGD, VSS και PGC για αποστολή δεδομένων JDM2 σε λειτουργία προγράμματος. Παρατήρηση 4 στα 3,5 mS.

Προσομοίωση 4: ίχνος PGD, VSS και CTS για JDM2 σε λειτουργία επαλήθευσης (έχει τοποθετηθεί ο βραχυκυκλωτήρας X1). Εντάξει

Προσομοίωση 5: ίχνος MCLR, VSS, PGD και PGC για JDM3. Το ICSP που χρησιμοποιεί ισχύ από το κύκλωμα επιλύει πολλά προβλήματα.

Προσομοίωση 6: ίχνος MCLR, VSS, PGD και PGC για JDM4 με σειριακή θύρα +/- 9V. Το MCLR ανεβαίνει αμέσως, λειτουργεί πλήρως.

Προσομοίωση 7: ίχνος MCLR, VSS και TX για JDM5 με σειριακή θύρα +/- 7V και jumper X2 που έχουν αφαιρεθεί. Το C1 δημιουργεί μια αύξηση +ve (άνοδο) στην ανερχόμενη άκρη του MCLR, σχεδόν επαρκής για να ωθήσει το MCLR πάνω από το TX στα 13V.

Βήμα 8: Συμπεράσματα

Το Spice είναι πολύ καλό στην αποκάλυψη των «κρυφών μυστικών» της λειτουργίας του κυκλώματος. Προφανώς το κύκλωμα JDM λειτουργεί και είναι συμβατό με πολλά τσιπ PIC, αλλά οι ακόλουθες παρατηρήσεις αποκαλύπτουν πιθανούς περιορισμούς/ζητήματα συμβατότητας/βλάβες;

  1. Χρόνος μεγάλης ανόδου του MCLR ενώ το C2 χρεώνεται στο VPP στον πρώτο παλμό του TX. Αποτυγχάνει η προδιαγραφή 3.
  2. Η σειριακή θύρα χρεώνει το C2 όταν το TX ανεβαίνει ψηλά και το RTS χαμηλώνει. Αλλά το RTS έχει επίσης τη δουλειά της φόρτισης του C3. Όταν συμβαίνουν και τα δύο ταυτόχρονα, αυτό δημιουργεί περισσότερο φορτίο στο RTS, συνεπώς το C3 χάνει το φορτίο (το VSS αυξάνεται) στα 2ms κατά την προσομοίωση. Αποτυγχάνει η προδιαγραφή 1.
  3. Το C3 χάνει τη φόρτιση (το VSS αρχίζει να ανεβαίνει) αφού οι παλμοί του ρολογιού σταματήσουν στα 3,5ms.
  4. Ποιος είναι ο σκοπός του C2, χρειάζεται καθόλου;

Λύσεις

  1. Πιθανότατα το PICPgm χρησιμοποιεί ένα λογισμικό "round-round". Πρέπει να εφαρμόσει έναν μακρύ παλμό TX για να προφορτίσει στο C2, και μετά να εισέλθει στη λειτουργία προγραμματισμού μόνο μετά τον δεύτερο παλμό TX; Για προσομοίωση μείωσα την τιμή του C2 σε 1uF για να δώσω χρόνο ανόδου 1ms. Δεν είναι ιδανική λύση.
  2. Διαχωρίστε τα C2 και C3 ώστε να φορτίζονται ανεξάρτητα. Μια μικρή τροποποίηση στο JDM2, το C2 αναφέρεται στο GND αντί του VSS.
  3. Λύθηκε με JDM3. Το ICSP είναι πολύ πιο αξιόπιστο καθώς το PIC τροφοδοτείται από κύκλωμα στόχου.
  4. Το JDM4 λύνει το πρόβλημα 1. Αυτός είναι ένας απλός σχεδιασμός που εξαλείφει εντελώς το C2.

Βήμα 9: Και τέλος

Και τελικά
Και τελικά

Η απόδειξη της πουτίγκας είναι στο φαγητό. Αυτό το JDM λειτουργεί οπότε συνεχίστε να το χρησιμοποιείτε.

Και οι προτάσεις μου είναι:

  • χρησιμοποιήστε το JDM2 για προγραμματισμό υποδοχών και σειριακές θύρες 12V,
  • χρήση JDM4 για προγραμματιστή ICSP και σειριακές θύρες πάνω από +/- 9V,
  • χρησιμοποιήστε JDM4 με το jumper X2 που έχει αφαιρεθεί για σειριακές θύρες άνω των +/- 7V.

Βιβλιογραφικές αναφορές:

Αναλογικές συσκευές μπαχαρικό LT

picpgm

Fruttenboel

Ακολουθήστε περισσότερα έργα PIC στο sly-corner

Συνιστάται: