Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2
Εμφάνιση αποτελεσμάτων : 11 έως 12 από 12

Θέμα: Πρόταση για λογικό κύκλωμα

  1. #11
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    Άνω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Υπάρχουν νεότερα. Με τον ακόλουθο κώδικα πέτυχα 2 κύκλους οπότε πάμε στα 125nsec. Ποιο κάτω δεν πάει! Δεν υπάρχει εντολή που ταυτόχρονα να διαβάζει και να γράφει...

    Κώδικας:
    BOOL    RS485SerialBusCtrlHold()
    {
        asm (
            "cli                    \n"
            "ldi    r25, 0b00000100 \n" // load bit 2
            "in     r24, 0x03       \n" // read PORTB (1 cycle)
            "out    0x03, r25       \n" // set bus_ctrl high [D10 pin-16] (1 cycle)
            "sei                    \n"
            "andi   r24, 0b00000010 \n" // check bus_state [D9 pin-15]
            "brne   _bus_ok         \n"
            "out    0x03, r25       \n" // set bus_ctrl low
            "ldi    r24, 0x00       \n" // not take it the bus
            "ret                    \n"
            "_bus_ok:               \n"
            "ldi    r24, 0x01       \n" // take it the bus
        );
    }

    0 Not allowed! Not allowed!

  2. #12
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    Άνω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Τελικά η προηγούμενη ιδέα είναι τελείως λάθος. Τα errors αυξήθηκαν σημαντικά. Ο νέος κώδικας είναι μια μικρή παραλλαγή του πρώτου που δίνει καθυστέρηση από τους 4 στους 3 κύκλους.

    Κώδικας:
    BOOL    RS485SerialBusCtrlHold()
    {
        asm (
            "cli                    \n"
            "ldi    r24, 0b00000100 \n" //      preload pin 2
            "sbis   0x03, 1         \n" // 2c   read bus_state [D9 pin-15]
            "rjmp   _busy_bus       \n"
            "out    0x03, r24       \n" // 1c   write bus_ctrl high [D10 pin-16]
            "ldi    r24, 0x01       \n" //      take it the bus
            "sei                    \n"
            "ret                    \n"
            "_busy_bus:             \n"
            "ldi    r24, 0x00       \n" //      not take it the bus
            "sei                    \n"
        );
    }
    Τα collisions έχουν μειωθεί σημαντικά. Κατά μέσω όρο σε κάθε node είναι στα 4,3 ανά ώρα.

    Μιας και οι είσοδοι του Rigol δεν μου φτάνανε, ανέλυσα τα σήματα μέσω του Saleae Analyzer. Αν δείχνει σωστά και δεν δείχνει άλλα-αντί-άλλων, υπάρχει μια σημαντική καθυστέρηση περίπου στα 460 nsec ανάμεσα στην ενεργοποίηση του driver του RS485 tranceiver και στην αλλαγή κατάστασης του bus-ctrl. Μου είναι δύσκολο να πιστέψω ότι μία CMOS πύλη προκαλεί τόσο μεγάλη καθυστέρηση. Δυστυχώς στο θέμα καθυστέρησης τα TTL ολοκληρωμένα, υπερτερούν σημαντικά των CMOS. Αύριο θα κάνω αλλαγή στο κύκλωμα και αντί πυλών αντιστροφέων θα συνδέσω απλά transistors.

    006.png

    Τα 0-2ch είναι το σήμα στο DE του SN75176 από κάθε node, το 3ch είναι το bus-ctrl, στο 4ch είναι η συλλογή των timeout errors και των τριων nodes που είναι και το trigger, και τέλος 5-7ch είναι τα σήματα που λαμβάνουν τα nodes.

    005.png

    Εδώ είναι η χαρακτηριστική περίπτωση ενός collision ανάμεσα στο node 0 και 2. Η διαφορά χρόνου μόλις στα 125 nsec. Δηλαδή μόλις 2 κύκλοι του ATMEGA328.

    0 Not allowed! Not allowed!

Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2

Παρόμοια Θέματα

  1. Πρόταση για keypad...
    By lelek in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 31-05-15, 01:17
  2. πρόταση για συναγερμό!!!
    By jean in forum Συστήματα Ασφαλείας
    Απαντήσεις: 18
    Τελευταίο Μήνυμα: 03-02-15, 23:41
  3. Απαντήσεις: 0
    Τελευταίο Μήνυμα: 24-08-14, 18:40
  4. Πρόταση για καλώδιο
    By bobo1704 in forum Επίγεια & Δορυφορική Λήψη
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 08-06-13, 02:35
  5. Πρόταση για ip camera
    By gvatos in forum Συστήματα Ασφαλείας
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 04-06-13, 04:28

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας