Σελίδα 1 από 4 1 2 3 ... ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 38

Θέμα: Πως μπορεί ένας pic να κάνει ταυτόχρονα δύο ή και περισσότερες λειτουργίες

  1. #1
    Μέλος
    Όνομα
    Βασίλης
    Εγγραφή
    Jan 2008
    Περιοχή
    Αιγάλεω
    Μηνύματα
    526

    Προεπιλογή Πως μπορεί ένας pic να κάνει ταυτόχρονα δύο ή και περισσότερες λειτουργίες

    Καλησπέρα σας.

    Μάθαινω Picbasic και θέλω μια βοήθεια σχετικά με το πως μπορεί να κάνει ο pic πράγματα "ταυτόχρονα".

    Θα ήθελα λοιπόν να μάθω, πως σε Picbasic μπορώ να κάνω τα εξής:

    Ο pic θα έχει συνδεμένα 2 leds και 2 buttons σε αντίστοιχες εξόδους και εισόδους.

    Η απορία μου είναι πως μπορώ πατώντας το Α κουμπί να τρέχει στο Α led το παρακάτω

    Loop1 :

    PORTC.0 = 0
    pause 1000
    PORTC.0 = 1
    pause 1000

    να συνεχίζει μέχρι να ξαναπατήσω το Α κουμπί,


    και ενώ τρέχει το παραπάνω, (χωρίς να σταματήσει η παραπάνω ρουτίνα) πατώντας το κουμπί Β να τρέχει στο Β led το παρακάτω

    Loop2 :

    PORTC.1 = 0
    pause 500
    PORTC.1 = 1
    pause 500

    και να συνεχίζει μέχρι να ξαναπατήσω το Β κουμπί.

    Επειδή δεν ξέρω από που να το αρχίσω κάθε βοήθεια ευπρόσδεκτη.

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Προεπιλογή

    Θα πρέπει να κοιτάξεις στα interrupt του pic από την portb για να ελέγχεις τις καταστάσεις στα κουμπιά.
    Και με μια πρόχειρη σκέψη, θα χρειαστείς timers για να αναβοσβήνουν ξεχωριστά τα leds, αλλιώς θα μένεις κολλημένος για κάποιο χρόνο σε delay.
    Δεν έχω ιδέα από Picbasic. Συνήθως τον CCS χρησιμοποιώ.

    0 Not allowed! Not allowed!
    ...'Θα σε ξεχνάω κάθε μέρα'...

  3. #3
    Μέλος Το avatar του χρήστη nikosp
    Όνομα
    Νίκος
    Εγγραφή
    Apr 2009
    Περιοχή
    Κυψέλη
    Μηνύματα
    963

    Προεπιλογή

    Και μία ερώτησηΣτα plc ύπάρχει το multitasking ?

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη SRF
    Όνομα
    Γεώργιος
    Εγγραφή
    Mar 2009
    Περιοχή
    ΑΘΗΝΑΙ
    Μηνύματα
    3.558

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από nikosp Εμφάνιση μηνυμάτων
    Και μία ερώτησηΣτα plc ύπάρχει το multitasking ?
    PLC? 'Η στα PIC?

    0 Not allowed! Not allowed!
    2010 Τα πάντα εν σοφία ποιήσαντες! "...μείνετε στα ηλεκτρονικά σας και όλα καλά! Ο κόσμος κυλάει καλύτερα χωρίς τις υπόλοιπες συζητήσεις" - 2016 Η ΕΛΛΑΣ ΕΑΛΩ
    "Το Λακωνίζειν εστί φιλοσοφείν" Τάδε έφη εις "Β'Λάκων φιλόσοφος"
    IEEE member since 1988 -ΕΙΜΑΙ ΤΡΟΜΕΡΑ ΑΠΑΣΧΟΛΗΜΕΝΟΣ

  5. #5
    ΥπερΣυντονιστής Το avatar του χρήστη gsmaster
    Όνομα
    Γιάννης
    Εγγραφή
    Aug 2003
    Περιοχή
    Γιάννενα
    Μηνύματα
    4.444

    Προεπιλογή

    Ναι στα PLC υπάρχει Multitasking. Έτσι είναι η λειτουργία τους έτσι ώστε να επιτρέπει πολλές διαδικασίες να εκτελούνται ταυτόχρονα. Το μειονέκτημα είναι ότι δεν είναι απόλυτος ο χρόνος εκτέλεσης μιας εντολής, αλλά μπορεί να διαφέρει, ανάλογα με το πότε δίνεται η εντολή της εκτέλεσής της.
    Πως δουλεύει το PLC? Διαβάζει όλες τις εισόδους, και μετά ξεκινάει το πρόγραμμα απο την αρχή, εκτελόντας το ανάλογα με τις αλλαγές στις εισόδους και μετά ενημερώνει τις εξόδους, και φτού κι απ την αρχή.

    Στους μικροελεκτές κάνεις μια δουλειά την φορά, και ότι delay βαλεις μετράει. Υπάρχει τρόπος να κάνεις και 2-3 δουλειές μαζί, ανάλογα τη δουλεια, αλλά πρέπει να το έχεις προβλέψει κατα το γράψιμο του κώδικα, και να χρησιμοποιήσεις τα ανάλογα Interrupt. Βέβαια μπορείς να διαβάσεις και να γράψεις όποτε θες απο τις εισόδους/εξόδους.

    Είναι δύο τελείως διαφορετικά πράγματα, το καθένα με την δική του εφαρμογή και χαρακτηριστικά.

    0 Not allowed! Not allowed!
    Πριν γράψετε ένα νέο θέμα στο φόρουμ, ψάξτε ->εδώ<-, κάτι θα βρείτε που δεν ξέρατε.

  6. #6
    ΥπερΣυντονιστής Το avatar του χρήστη leosedf
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2004
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    11.087

    Προεπιλογή

    Αν τρέξεις RTOS μπορείς να έχεις "multitasking".

    0 Not allowed! Not allowed!

  7. #7
    Μέλος Το avatar του χρήστη nikosp
    Όνομα
    Νίκος
    Εγγραφή
    Apr 2009
    Περιοχή
    Κυψέλη
    Μηνύματα
    963

    Προεπιλογή

    ΛάθοςPIC ήθελα να πώ

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη The_Control_Theory
    Όνομα
    Tedi
    Εγγραφή
    Apr 2012
    Περιοχή
    Βόλος
    Μηνύματα
    890

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από billys7 Εμφάνιση μηνυμάτων
    Καλησπέρα σας.

    Μάθαινω Picbasic και θέλω μια βοήθεια σχετικά με το πως μπορεί να κάνει ο pic πράγματα "ταυτόχρονα".

    Θα ήθελα λοιπόν να μάθω, πως σε Picbasic μπορώ να κάνω τα εξής:

    Ο pic θα έχει συνδεμένα 2 leds και 2 buttons σε αντίστοιχες εξόδους και εισόδους.

    Η απορία μου είναι πως μπορώ πατώντας το Α κουμπί να τρέχει στο Α led το παρακάτω

    Loop1 :

    PORTC.0 = 0
    pause 1000
    PORTC.0 = 1
    pause 1000

    να συνεχίζει μέχρι να ξαναπατήσω το Α κουμπί,


    και ενώ τρέχει το παραπάνω, (χωρίς να σταματήσει η παραπάνω ρουτίνα) πατώντας το κουμπί Β να τρέχει στο Β led το παρακάτω

    Loop2 :

    PORTC.1 = 0
    pause 500
    PORTC.1 = 1
    pause 500

    και να συνεχίζει μέχρι να ξαναπατήσω το Β κουμπί.

    Επειδή δεν ξέρω από που να το αρχίσω κάθε βοήθεια ευπρόσδεκτη.
    Σου είπανε για multitasking. Και μίνι λειτουργικό RTOS. Αλλά γίνεται χωρίς τόσο περίπλοκο τρόπο με τον εξής τρόπο.

    1. Φτιάχνεις μιά κυρίως ρουτίνα η οποία θα μετράει δευτερόλεπτα με interrupt. Ετσι ώστε να μην χάνει δευτερόλεπτα.
    2. Φτιάχνεις μιά υπορουτίνα σαν flip-flop με μνήμη για χρήση στο κουμπιά Α και Β.
    3. Φτιάχνεις μιά υπορουτίνα Loop1 η οποία θα ελέγχει εάν πατήθηκε το κουμπί Α. Εάν πατηθεί τότε καταγράφει τα δευτερόλεπτα κατά τα οποία ξεκίνησε να λειτουργεί. Αλλάζει κατάσταση και μόλις συμπληρωθούν 1000 ξανααλλάζει.
    Κάθε φορά που θα ξεκινάει θα ελέγχει εάν πατήθηκε το Α και θα καταγράφει εκ νέου την χρονική στιγμή που ξεκίνησε.
    Αν πατηθεί το κουμπί ξανά κλείνει.
    4. Κάνεις το ίδιο για την υπορουτίνα Loop2. Οπως στο βήμα 3.

    Προσπάθησέ το και όπου κολλήσεις ξαναμιλάμε εδώ.

    Το κλειδί της επιτυχίας σε όλο αυτό για να δουλέψει είναι να μην χρησιμοποιήσεις καθόλου delay και όλα να γίνονται με if καθοδηγούμενα από την κεντρική ρουτίνα που μετράει δευτερόλεπτα.

    1 Not allowed! Not allowed!

  9. #9
    Μέλος
    Όνομα
    Βασίλης
    Εγγραφή
    Jan 2008
    Περιοχή
    Αιγάλεω
    Μηνύματα
    526

    Προεπιλογή

    Επειδή το 1 και το 2 μου είναι πολύ σύνθετα, δεν το έχω ξανακάνει και τώρα μαθαίνω, υπάρχει κάπου κάποιο παράδειγμα να διαβάσω για να το καταλάβω ?

    0 Not allowed! Not allowed!

  10. #10
    Μέλος Το avatar του χρήστη The_Control_Theory
    Όνομα
    Tedi
    Εγγραφή
    Apr 2012
    Περιοχή
    Βόλος
    Μηνύματα
    890

    Post

    Δυστυχώς δεν ξέρω από interrupts με PIC. Αν σε ενδιέφερε το ίδιο με AVR μικροελενκτές έχω και τον κώδικα έτοιμο για το 1 και 2 για γλώσσα C.

    0 Not allowed! Not allowed!

Σελίδα 1 από 4 1 2 3 ... ΤελευταίαΤελευταία

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

  1. Απαντήσεις: 22
    Τελευταίο Μήνυμα: 19-08-17, 08:36
  2. Απαντήσεις: 21
    Τελευταίο Μήνυμα: 13-09-13, 15:55
  3. Απαντήσεις: 41
    Τελευταίο Μήνυμα: 11-06-12, 16:33
  4. Πως αναγνωρίζεται ένας μεταβλητός?
    By Giannis511 in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 25-07-06, 11:17

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

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