Εμφάνιση αποτελεσμάτων : 1 έως 8 από 8

Θέμα: Τι είναι τελικά καλύτερο; Hardware ή Software Debouncing

  1. #1
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή Τι είναι τελικά καλύτερο; Hardware ή Software Debouncing

    Καλημέρα, σε παλιότερο θέμα έχω αναφερθεί σε ένα μικρό προτζεκτ που φτιάχνω για το σπίτι μου ώστε να μπορώ να ελέγχω τον θερμοστάτη με μΕ ωστε θεωρητικά να είναι πιο αποδοτικός ο έλεγχος της θερμοκρασίας. Για την ρύθμιση της θερμοκρασίας έχω έναν KY-040 Rotary Encoder και σε πρώτη φάση χρησιμοποιώ Ιντεραπτς και για το κουμπί και για την περιστροφή του αισθητήρα. Εδώ ξεκίνησε μιά κουβεντα και με συναδέλφους και στο Ιντερνετ για το τί είναι καλύτερο, οι περισσότεροι υποστηρίζουν οτι ενα software debouncing είναι καλύτερο γιατί ο ιντεραπτ είναι πολύ χρονοβόρος και επιβαρύνει το πρόγραμμα και επίσης γλιτώνεις απο πολλά εξαρτήματα. Απο εκεί και πέρα εγώ θέλω να βάλω πυκνωτή και αντίσταση με έναν σμιττ τρίγκερ και να έχω ιντεραπτς ωστε να μπορώ κατα την γνώμη μου να ανιχνευω και διπλό κλίκ για να ενεργοποιώ άλλες λειτουργίες.

    Τελικά τί είναι καλύτερο κατά την γνώμη σας;

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    δεν υπάρχει λόγος να βάλεις εξαρτήματα , κάντο με software, ειναι πολύ απλό, τι θα πάθει ο μΕ έτσι και αλλίώς ούτε το 5% των κύκλων χρησιμοποιείς.
    Μπορείς να με το Iint on change να ανεβάζεις ένα flag, και μετά στη main σου να έχεις έναν έλεγχο , εγώ το κάνω με ένα counter και ένα while, μόλις φτάσει ο counter εκεί που θέλω .....κτλ κτλ

    0 Not allowed! Not allowed!

  3. Ένα μέλος ευχαρίστησε τον picdev για αυτό το χρήσιμο μήνυμα:

    FILMAN (19-10-15)

  4. #3
    Μέλος Το avatar του χρήστη bchris
    Όνομα
    Χρηστος
    Εγγραφή
    Nov 2011
    Περιοχή
    Lugano
    Μηνύματα
    2.104

    Προεπιλογή

    Εγω παλι, προτιμω το hardware.
    Αλλα και με software, γινεται μια χαρα δουλεια.

    Ακη: Καλυτερα να χρησιμοποιεις timers και οχι while, για να μην καταναλωνεις τον μC στο while και να ειναι πιο responsive το συστημα.

    1 Not allowed! Not allowed!

  5. #4
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από picdev Εμφάνιση μηνυμάτων
    δεν υπάρχει λόγος να βάλεις εξαρτήματα , κάντο με software, ειναι πολύ απλό, τι θα πάθει ο μΕ έτσι και αλλίώς ούτε το 5% των κύκλων χρησιμοποιείς.
    Μπορείς να με το Iint on change να ανεβάζεις ένα flag, και μετά στη main σου να έχεις έναν έλεγχο , εγώ το κάνω με ένα counter και ένα while, μόλις φτάσει ο counter εκεί που θέλω .....κτλ κτλ
    Ναι αλλά έτσι δεν θα χάνω κάποια κλικς; Δοκίμασα πάντως χθες με αυτήν την βιβλιοθήκη https://code.google.com/p/clickbutton/ και ήταν για κλάματα, έπρεπε να πατήσω 2-3 φορές το κουμπί για να το διαβάσει και άρχισα να σκέφτομαι μήπως πρέπει να προσανατολιστώ σε ένα hardware debouncing.

    0 Not allowed! Not allowed!

  6. #5
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    δες μία συνάρτηση που έχω φτιάξει, εδώ το πληκτρολόγιο μου είναι matrix και το ελέγχω κάθε 100msec , οπότε release δεν το υλοποιώ με τη συνάρτηση αυτή αλλά το υλοποιώ στο επόμενο scan.
    αν το τροποποιήσεις γίνεται να βάλεις και release

    Κώδικας:
    u8 debounce(u8 *PORT,u8 bit1,u32 press_Counts){
    
            u8 read_Port;
            u32 counter=0;
    
            read_Port=*port;
            read_Port=(read_Port >> bit1);
            read_Port&=0x01;      //clear Port other bits
    
                while(read_Port == 0){
                read_Port=*port;
                read_Port=(read_Port >> bit1);
                read_Port&=0x01;  //clear Port other bits
    
                counter++;
                    if(counter > press_Counts){return 1;}
                }
            
            return 0;
    }

    0 Not allowed! Not allowed!

  7. #6
    Μέλος Το avatar του χρήστη xmaze
    Όνομα
    Νίκος
    Εγγραφή
    May 2010
    Περιοχή
    Μακεδονία
    Μηνύματα
    1.034

    Προεπιλογή

    Τώρα όμως βρήκα στο ίντερνετ οτι πολλοί AVR έχουν ήδη scmitt trigger στα πινς, οπότε μάλλον δεν υπάρχει νόημα για software debouncing. Ξέρει κανείς άν όντως ισχύει;

    0 Not allowed! Not allowed!

  8. #7
    Μέλος Το avatar του χρήστη tasosmos
    Όνομα
    Τάσος
    Εγγραφή
    Jul 2005
    Περιοχή
    Αθήνα
    Μηνύματα
    3.057

    Προεπιλογή

    Ναι, βλεπε πχ σελ 78: http://www.atmel.com/images/atmel-81..._datasheet.pdf

    Ομως και παλι καλο ειναι να μην βασιζεσαι σε αυτο, εστω μια απλη μορφη debouncing σε sw ειναι μαλλον απαραιτητη.

    0 Not allowed! Not allowed!

  9. #8
    Μέλος Το avatar του χρήστη SProg
    Όνομα
    Σάββας
    Εγγραφή
    Mar 2014
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.612

    Προεπιλογή

    Δεν υπαρχει σωστη ή λαθος απαντηση.


    Εχει να κανει με τι διαθεσιμους πορους εχεις ή τι project κανεις. Το καθενα εχει τα υπερ και τα κατα.

    - Hardware με R-C debounce
    - Hardware με πύλες S-R debounce
    - Hardware debounce με IC (MAX6816)
    - Software με timer
    - Software με διακοπες
    - Software με counter
    -... κτλ



    Εγω συνηθως με software το κανω, με οποιο τροπο βολευει.Για το λογο οτι βαριεμαι να βαζω επιπλεον εξαρτηματα,αλλα εαν χρειαστε..το S-R ειναι τερας..


    (εαν μπορεσεις και κανεις debounce , το διπλο κλικ δεν ειναι τιποτα παραπανω απο 2 'σωστα' κλικ σε ενα ορισμενο χρονο)

    1 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη SProg : 20-10-15 στις 12:40

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

  1. Τελικά αυτό τι είναι ?
    By Dr_Giwrgos in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 07-01-15, 18:08
  2. Software UART και Hardware UART σε AVR
    By The_Control_Theory in forum Μικροελεγκτές
    Απαντήσεις: 14
    Τελευταίο Μήνυμα: 14-07-14, 16:24
  3. inductor ποιό είναι καλύτερο ?
    By mtzag in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 10-03-13, 20:29
  4. Απαντήσεις: 6
    Τελευταίο Μήνυμα: 11-06-12, 03:19
  5. Απαντήσεις: 1
    Τελευταίο Μήνυμα: 21-01-11, 14:52

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

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