THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Συστήματα Μικροϋπολογιστών => Topic started by: tomshare3 on December 06, 2010, 02:27:07 am



Title: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: tomshare3 on December 06, 2010, 02:27:07 am
Σχετικά με το avr studio γενικα...

Τι ακριβώς παίζει με το simulation?  :-\ οσο και να έψαξα μεσα στο avr studio δεν βρήκα κάποια τέτοια επιλογή! πως θα δοκιμάσουμε αν τρέχει το πρόγραμμα?? any help??!


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Salvation on December 06, 2010, 02:32:29 am
http://www.coe.uncc.edu/~sjkuyath/ETEE3255/AVR%20Studio%20Tutorial.pdf


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Time_Tripper on December 06, 2010, 02:41:17 am
Και που τρεχει με το σιμουλειτορ μη φανταστεις οτι καταλαβαινεις και πολλα. Τα λεντακια πχ μην περιμενεις να αναψουν ( :D ) ουτε μπορεις να ελεγξεις για την αρνητικη λογικη...Επισης μην περιμενεις καποιες εντολες να δουλευουν στον συγκεκριμενο αβρ (πχ η lpm) οποτε εκει πρεπει να κανεις αλχημιες... :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: tomshare3 on December 06, 2010, 02:53:48 am
thanks!! αυτο εψαχνα!


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: BabylonX on December 08, 2010, 01:45:14 am
Εγώ έχω STK500   ^poke^ ^kaloe^

...Επισης μην περιμενεις καποιες εντολες να δουλευουν στον συγκεκριμενο αβρ (πχ η lpm) οποτε εκει πρεπει να κανεις αλχημιες... :P

Η lpm με ορίσματα δε δουλεύει και σε πολλούς παλιούς avr οπότε τη χρησιμοποιείς σκέτη. Τα default είναι ο Ζ και ο r0. Οπότε παίρνεις έπειτα το περιεχόμενο του r0 και το πας αλλού και αυξάνεις το Z μόνος σου.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Emfanever on December 08, 2010, 02:23:37 am
Ledάκια δεν ανάβουν, αλλά μπορείς δεξιά να βλέπεις τι αλλαγές γίνονται στο PORTD ( έχει 8 κουτάκια )


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: SolidSNK on December 08, 2010, 02:45:06 am
Ξέρει κανείς αν θα γίνουν αύριο τα εργαστήρια?

Μην flamάρει κανείς, τα (υποχρεωτικά)λειτουργικά είχαν γίνει υπό κατάληψη :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on December 08, 2010, 10:48:18 am
Ξέρει κανείς αν θα γίνουν αύριο τα εργαστήρια?

Μην flamάρει κανείς, τα (υποχρεωτικά)λειτουργικά είχαν γίνει υπό κατάληψη :P

Επειδη δεν ξερω και δεν ειδα και στο διπλα τοπικ τιποτα εγω μια φορα θα κατεβω

Πιστευω να γινουνε προσωπικα....


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Time_Tripper on December 08, 2010, 14:47:59 pm
Ε αμα μαθεις πες και σε μας που ειμαστε σε αλλες μερες!! ;)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on December 08, 2010, 14:54:22 pm
Ε αμα μαθεις πες και σε μας που ειμαστε σε αλλες μερες!! ;)

Σημερα μου ειπαν οτι καποιος πηγε και ρωτησε

ειπανε γιοκ και θα βγαλουν ανακοινωση

αμα κατεβω μπορει να παω να ρωτησω κ εγω αλλα μαλλον θα περιμενω την ανακοινωση


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Kargas on December 08, 2010, 15:26:35 pm
Οχι σημερα δεν εχει εργαστηριο μικρο1



Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on December 16, 2010, 14:38:04 pm
υπάρχει κάπου κάποιος οδηγός σύνταξης προγράμματος γιατί μέχρι στιγμής διαβάζω διαβάζω και δεν έχω βγάλει άκρη..

π.χ. στο τελευταίο πρόγραμμα που έχει στο αρχείο "guidestudio4" 
τo ".def temp=r16" απλά δίνει όνομα στον καταχωρητή? (εξηγεί κάπου αυτή τη διαδικασία στο βιβλίο?)
πως μπορώ να δώσω και αρχικές τιμές?

επίσης στο κώδικα αρχικοποίησης που έχει και γράφει "ser temp" τι ακριβώς κάνει? (κάνει μονάδα όλα τα bit?)

οι αριθμοί γράφονται με ένα $ μπροστά? δηλ. το 8 είναι το $8?
(τα γράφει κάπου αυτά αναλυτικά ή τα καταλαβαίνουμε από τα παραδείγματα?)
για τους δυαδικούς να υποθέσω ότι είναι με "0b" έτσι?

τα .cseg και .org τι κάνουν?
πώς φτιάχνουμε (υπο)ρουτίνες?

οκ στο περίπου τα καταλαβαίνω βλέποντας τα παραδείγματα, αλλά δεν υπάρχει κάπου κανένας οδηγός που να τα διευκρινίζει καλύτερα?

πφφ...


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: tolisn on December 16, 2010, 15:55:45 pm
υπάρχει κάπου κάποιος οδηγός σύνταξης προγράμματος γιατί μέχρι στιγμής διαβάζω διαβάζω και δεν έχω βγάλει άκρη..

π.χ. στο τελευταίο πρόγραμμα που έχει στο αρχείο "guidestudio4" 
τo ".def temp=r16" απλά δίνει όνομα στον καταχωρητή? (εξηγεί κάπου αυτή τη διαδικασία στο βιβλίο?)
πως μπορώ να δώσω και αρχικές τιμές?

επίσης στο κώδικα αρχικοποίησης που έχει και γράφει "ser temp" τι ακριβώς κάνει? (κάνει μονάδα όλα τα bit?)

οι αριθμοί γράφονται με ένα $ μπροστά? δηλ. το 8 είναι το $8?
(τα γράφει κάπου αυτά αναλυτικά ή τα καταλαβαίνουμε από τα παραδείγματα?)
για τους δυαδικούς να υποθέσω ότι είναι με "0b" έτσι?

τα .cseg και .org τι κάνουν?
πώς φτιάχνουμε (υπο)ρουτίνες?

οκ στο περίπου τα καταλαβαίνω βλέποντας τα παραδείγματα, αλλά δεν υπάρχει κάπου κανένας οδηγός που να τα διευκρινίζει καλύτερα?

πφφ...


Οδηγός σύνταξης δεν υπάρχει. Ότι μπορείς να καταλάβεις από τις σημειώσεις,από τα παραδείγματα του βιβλίου και από το μάθημα

Οτιδήποτε ορίζεται με  "." μπροστά είναι ψευδοκώδικας.
Συγκεκριμένα το .def temp=r16 δίνει στον καταχωρητή r16 το όνομα temp όπως είπες. Αυτό καθαρά για βοηθητικούς λόγους για να μην χάνεσαι όταν κάνεις debugging τον κώδικα σου.

Αρχικές τιμές στους καταχωρητές δίνεις εσύ από τον κώδικα σου συνήθως με την εντολή ldi

Η εντολή ser κάνει αυτό που είπες. Το πλήρες Instruction Set του AVR εδώ:

http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf (http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf)

Οι αριθμοί που ορίζονται με $ μπροστά είναι 16αδικοί. Αντίστοιχα αντί για $ μπορείς να βάλεις "0x" .

Το .cseg και .org είναι και αυτά ψευδοεντολές:

Το .cseg ορίζει ότι απο το σημείο αυτό και μετά ξεκινάει ο κώδικας σου (Code Segment).

Με το .org (δεκαεξαδικός αριθμός) ορίζεις με απλά λόγια σε ποιο σημείο της μνήμης θα γραφεί ο κώδικας που θα γράψεις από κάτω

Για τις υπορουτίνες απλά φτιάχνεις τον κώδικα τους στο τέλος του προγράμματος σου τις πετάς ένα label από μπροστά π.χ. delay5s: και την καλείς από τον κώδικα σου με rcall (rcall delay5s)

Δες και αυτό:
http://www.atmel.com/dyn/resources/prod_documents/doc1022.pdf (http://www.atmel.com/dyn/resources/prod_documents/doc1022.pdf)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: λήθη on December 16, 2010, 16:03:10 pm
i lusi einai mia, bres to datasheet


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on December 16, 2010, 16:20:38 pm
ευχαριστώ!
συνεχίζω το διάβασμα και βλέπουμε..


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on December 17, 2010, 15:50:33 pm
hello again!

για να αποθηκεύσω δεδομένα στην μνήμα προγράμματος το .db δε χρησιμοποιώ?
υπάρχει άλλος τρόπος?

αν θέλω π.χ. να βάλω τον αριθμό 3
θα γράψω:  .db 0b00000011
μπορώ να βάλω και μέγεθος 2 λέξεων? .db 0b0000000000000011

και μετά πως δίνω αυτή την τιμή σε καταχωρητή?



Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: λήθη on December 17, 2010, 16:46:32 pm
gia na baleis to 3 9a kaneis .db 3

to parakato pou les einai mia leksi, exei 16 bit

an 9es na topo9etiseis word-wise 9a xrisimopoiiseis to .dw (define word an 9umamai kala)

gia na fortoseis to otidipote apo ti mnimi programmatos xrisimopoieis lpm

an kano la9os kapou as me dior9osei kapoios, exei perasei kairos :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on December 17, 2010, 16:52:47 pm
αν θέλω π.χ. να βάλω τον αριθμό 3
θα γράψω:  .db 0b00000011
...
και μετά πως δίνω αυτή την τιμή σε καταχωρητή?

gia na baleis to 3 9a kaneis .db 3

Δεν είναι λάθος και αυτό που έγραψε ο lynx. Απλώς ορίζει το 3 στο δυαδικό σύστημα. Για τα άλλα που λες για τις λέξεις, είναι όπως τα γράφει η συνάδελφος παραπάνω. dw για να ορίσεις λέξη (2 byte)

Τιμές σε καταχωρητές μπορείς να δώσεις με την εντολή ldi ή ld ή ldd. Από τη μνήμη προγράμματος με την εντολή lpm (προσέχοντας την προσπέλαση των θέσεων μνήμης).
Δες σχετικά το Instruction set.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: λήθη on December 17, 2010, 16:56:10 pm
Ε ναι, απλα ειναι ευκολοτερο να βαλεις το 3 αντι για το 0b00000011,
εκτος βεβαια και αν τοποθετεις μασκες

ld κλπ μονο απο sram :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on December 17, 2010, 17:01:45 pm
Ε ναι, απλα ειναι ευκολοτερο να βαλεις το 3 αντι για το 0b00000011,
εκτος βεβαια και αν τοποθετεις μασκες

ld κλπ μονο απο sram :P
Ε και μάσκες να τοποθετείς και να γράψεις 3, πάλι σε δυαδικό θα το αποθηκεύσει ο assembler. Δεν ξέρω πάντως.. εμένα μου φαίνεται πιο εύκολο το δυαδικό σύστημα από το δεκαδικό. Μήπως πρέπει να ανησυχώ;  :D


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: λήθη on December 17, 2010, 17:13:07 pm
Αλλο εννοω. Ο μονος λογος που θα θες να αποθηκευσεις κατι σε δυαδικη μορφη ειναι γιατι ειναι "απαραιτητο". Οπως με τις μασκες.
Προφανως και δεν εχει σημασια γιατι ο assembler την ιδια δουλεια θα κανει. Απλα ειναι πιο ευχρηστο.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on December 17, 2010, 22:32:31 pm
Thanks guys!

 τελικά το .dw χρειαζόμουν και το lpm παίρνει τα πρώτα αριστερά 8bit της λέξης που έχεις αποθηκεύσει. (αυτά βλέπει ο zl)
για να πάρεις τα επόμενα 8 πρέπει να αυξήσεις κατά ένα το zl (=καταχωρητής r30)

*τα έγραψα σε περίπτωση που τα χρειαστεί και κανένας άλλος


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 04, 2011, 16:45:03 pm
Η δεύτερη εργασία είναι διαθέσιμη στο e-thmmy. Καλή μας δουλειά!


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 05, 2011, 04:26:13 am
πάμε ρε πανκιό


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: spark on January 05, 2011, 18:59:24 pm
Θέλει interrupt η ετσι νομιζω?


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Social_waste on January 05, 2011, 19:16:31 pm
περσυ στα μικρο 1 που ειχα ρωτησει για μια εργασια
μου ειπαν οτι interrupts ειναι στα μικρο 2.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Komimis on January 05, 2011, 20:10:59 pm
έχω την εντύπωση πως θέλει! not sure.. :o


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 05, 2011, 20:16:16 pm
τι εννοείς interrupts?
εγώ την έλιωσα χθες και δουλεύει χωρίς να χρησιμοποιήσω
κάτι υπερβολικά διαφορετικό από τον κώδικα της 1ης εργασίας.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Komimis on January 05, 2011, 22:34:44 pm
τι εννοείς interrupts?
εγώ την έλιωσα χθες και δουλεύει χωρίς να χρησιμοποιήσω
κάτι υπερβολικά διαφορετικό από τον κώδικα της 1ης εργασίας.

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


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: spark on January 05, 2011, 23:01:39 pm
Δεν ειμαι ειμαι σιγουρος.
Η βασικη ιδεα ειναι οτι βαζεις το χρονομετρο να μετραει( με την υπορουτινα)
και ταυτοχρονα "περιμενεις" να πατηθει κατι.
Αυτο το "περιμενεις" υλοποιηται με interrupt.
Αλλιως μπορεις να κανεις ελεγχο αν πατηθηκε κατι ΜΟΝΟ πριν η μετα την κληση της 1_sec_delay.
Αυτο δεν πειραζει γενικα αλλα τοτε η πιεση του πληκτρου πρεπει να γινει ακριβως εκεινη τη στιγμη.
Βεβαια εδω εχουμε απελευθερωση του πληκτρου αλλα ειναι το ιδιο.

Σκεψου οτι αν καποιος αφησει το πληκτρο και μετα το ξαναπατησει σε λιγοτερο απο 1 sec (κατι εφικτο στα ανθρωπινα δεδομενα) ο AVR δε θα παρει χαμπαρι τι εγινε. Αρα το καλυτερο ειναι με interrupt να κοιτας ασυγχονα ποτε το αφησε ακομα κι αν αυτο εγινε καπου στην μεση της κλησης.

Τωρα αν μιλαμε οτι α χρηστης δε θα παταει μ@@@@@ς δεν πειραζει καθολου να ελεγχεις μετα την κληση της υπορουτινας.

Τι προτεινετε να κανουμε?


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: spark on January 05, 2011, 23:14:27 pm
Στο προηγουμενο Post τα εμπλεξα λιγο ποτε παταει και ποτε αφηνει ο χρηστης.

Ηθελα να πω :
->παταει το switch7
->αφηνει το switch7
->ξεκιναει ο χρονος ( με διαδοχικες κλησεις της delay)
->σταματαει ο χρονος στην πρωτη πιεση ενος απο τα SW0 -1 -2

Αυτη η πιεση πρεπει να διαρκεσει 1 sec  στη χειροτερη περιπτωση .
Γιατι αν  το αφησεις και το πατησεις σε λιγοτερο απο 1 sec ο AVR οταν ερθει η στιγμη του ελεγχου παλι πατημενο θα το βρει και δε θα παρει χαμπαρι τι εγινε.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 05, 2011, 23:41:22 pm
Γιατι αν  το αφησεις και το πατησεις σε λιγοτερο απο 1 sec ο AVR οταν ερθει η στιγμη του ελεγχου παλι πατημενο θα το βρει και δε θα παρει χαμπαρι τι εγινε.
Ναι είναι όντως αστοχία στην υλοποίηση του αλγορίθμου αν δεν μπούνε interupts στο συγκεκριμένο σημείο
αλλά έχουμε interupts στην ύλη του μίκρο Ι;
δε τα θυμάμαι να τα διάβασα στην ύλη του βιβλίου
αλλά με ένα πρόχειρο googlάρισμα δεν πρέπει να 'ναι και τόσο ζόρικα.
Επίσης είδα πως η 2η εργασία που έχουμε είναι παρεμφερή με μια 3η εργασία που είχε μπει κάποτε
(υπόνοια ότι όσο πάει δυσκολεύει και το μάθημα, θα μου πεις ανακάλυψα την αμερική τώρα αλλά νταξ)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Godhatesusall on January 06, 2011, 00:45:44 am
Τα interrupts είναι στα μίκρο 2. Εδώ αυτό που θες θα μοιάζει κάπως έτσι(δεν έχω διαβάσει την εκφώνηση οπότε μπορεί να είμαι off)

poll:
ld r16,portB %diavazeis to switch
cpi r16,0b01000000           %compare,skip if equal
breq start_delay
rjmp poll

start_delay:
%edw grafte ena loop gia delay,den einai dyskolo.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: spark on January 06, 2011, 01:14:25 am
ok tnx
αν ειναι εκτος υλης στα 1 τοτε ειναι για 5 min δουλεια.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 06, 2011, 03:53:05 am
Η λύση χωρίς interrupts είναι μία τότε:

Να ελένχουμε μέσα στην ρουτίνα καθυστέρησης συνέχεια αν πατήθηκε το κουμπί και όταν πατηθεί να επιστρέφει κατευθείαν η ρουτίνα. Αλλιώς να επιστρέφει όταν τελειώσει το 1 sec και να ξανακαλέιται.

Αλλιώς αν ο έλενχος γίνεται κάθε 1 sec μετά τη ρουτίνα μου φένεται πολύ fail η κατάσταση αφού θα πατάς λίγο ένα κουμπί και δεν θα ξέρεις αν πρόλαβε να το δει ο avr... :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Komimis on January 06, 2011, 10:18:52 am
Η λύση χωρίς interrupts είναι μία τότε:

Να ελένχουμε μέσα στην ρουτίνα καθυστέρησης συνέχεια αν πατήθηκε το κουμπί και όταν πατηθεί να επιστρέφει κατευθείαν η ρουτίνα. Αλλιώς να επιστρέφει όταν τελειώσει το 1 sec και να ξανακαλέιται.

Αλλιώς αν ο έλενχος γίνεται κάθε 1 sec μετά τη ρουτίνα μου φένεται πολύ fail η κατάσταση αφού θα πατάς λίγο ένα κουμπί και δεν θα ξέρεις αν πρόλαβε να το δει ο avr... :P

Αν ελέγχεις μέσα στη ρουτίνα δεν μπορείς να πεις με σιγουριά πόσος χρόνος πέρασε μέχρι να πατήσεις το κουμπί  ;)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 06, 2011, 15:05:37 pm
Οι διακοπές και τα χρονόμετρα σίγουρα δεν είναι στην ύλη των μίκρο Ι. Καλύπτουν το κύριο μέρος της ύλης των μίκρο ΙΙ.

Πάντως, και σε άλλα σημεία οι εργασίες του Πέτρου έχουν ασάφειες και δεν διευκρίνιζουν πώς ακριβώς εκτελείται μια λειτουργία ή πόσες δικλείδες ασφαλείας πρέπει να έχεις στον κώδικά σου. Δηλαδή, το πόσο μαλ$$$ας είναι ο χρήστης είναι αποκλειστικά δικό σου θέμα. Έτσι, εγώ το υλοποίησα με τον παρακάτω κώδικα. Αν εκτελούνται οι εντολές της ρουτίνας καθυστέρησης και ο χρήστης πατήσει και αφήσει το κουμπί σε λιγότερο από ένα δευτερόλεπτο, το πρόγραμμα αστοχεί. Άλλος για καμιά καλύτερη ιδέα;

Code:
clr counter
.....
get_first_switch:
  in temp, PIND          
  andi temp, $07          
  cpi temp, $07          
  brne no_other_delay
    
inc counter
rcall delay_1sec
rjmp get_first_switch

no_other_delay:
.....


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 06, 2011, 15:16:52 pm
Code:
...
continue:
ldi R17,0b11111110
ldi R18,0b11111101
ldi R19,0b11111011
ldi R30,0b00000000

Code:
periptwseis:
in R16,PIND
cp R16,R17
breq per0
cp R16,R18
breq per1
cp R16,R19
breq per2
rcall delay_1s
ADIW R30,1
rjmp periptwseis
Πάνω κάτω ότι έγραψε και ο dimvam αλλά με μια βασική διαφορά
Χρησιμοποιώ τα R17,R18,R19 για τον έλεγχο των SW0-2 και για το άναμα αργότερα των Leds0-2, είναι περιττή η χρήση καταχωρητών αλλά αφού τους έχω klein. Δεν χρησιμοποιώ τον βρόγχο για τον έλεγχο και χρονομέτρηση του SW7 μιας και δεν ζητείται κάτι αντίστοιχο.
Γίνεται έλεγχος κάθε κουμπιού αν είναι πατημένο δεδομένου της ελεύθερης επιλογής του χρήστη να πατήσει ότι θέλει.
Χρονομετράω μόνο τον χρόνο μέχρι το πρώτο πάτημα δεδομένου ότι έτσι ζητείται αν και δεν είναι δύσκολο να αναπτυχθεί και για τα υπόλοιπα SW που θα πατήσει ο χρήστης και να δώσει συνολικό χρόνο που έκανε για να τα πατήσει.
Χρησιμοποιώ την ADIW για να δώσω μια τιμή στο R30 όπου είναι 16bitος (χρησιμοποιεί και τον R31) δεδομένου ότι δεν βρήκα εντολή πρόσθεσης σταθεράς σε καταχωρητή.


Title: deleted
Post by: BOBoMASTORAS on January 06, 2011, 18:37:42 pm
deleted


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 06, 2011, 18:39:43 pm
Αλλιως μπορεις να κανεις ελεγχο αν πατηθηκε κατι ΜΟΝΟ πριν η μετα την κληση της 1_sec_delay.

Δεν ισχύει αυτό που λες. Μπορείς να κάνεις καθυστέρηση η οποία σταματάει είτε μετά από 1 sec, είτε μετά την πίεση ενός πλήκτρου. Ένα απλό OR στη συνθήκη τερματισμού είναι.

 ^super^


ουτε το ειχα φανταστει και ειναι πολυ απλο , οντως

 ;)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 07, 2011, 01:00:15 am
Η λύση χωρίς interrupts είναι μία τότε:

Να ελένχουμε μέσα στην ρουτίνα καθυστέρησης συνέχεια αν πατήθηκε το κουμπί και όταν πατηθεί να επιστρέφει κατευθείαν η ρουτίνα. Αλλιώς να επιστρέφει όταν τελειώσει το 1 sec και να ξανακαλέιται.

Αλλιώς αν ο έλενχος γίνεται κάθε 1 sec μετά τη ρουτίνα μου φένεται πολύ fail η κατάσταση αφού θα πατάς λίγο ένα κουμπί και δεν θα ξέρεις αν πρόλαβε να το δει ο avr... :P

Αν ελέγχεις μέσα στη ρουτίνα δεν μπορείς να πεις με σιγουριά πόσος χρόνος πέρασε μέχρι να πατήσεις το κουμπί  ;)

Θα ξέρεις όμως πόσες φορές τερμάτισε η ρουτίνα, άρα τόσα second. Έτσι και αλλιώς ακέραια seconds ζητάει...


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Time_Tripper on January 08, 2011, 20:23:25 pm
Παιδια κατι αρχετο, στην αναφορα που θελει να γραψουμε για την εργασια τι ακριβως δομη ζηταει? Με εχει μπερδεψει η περιγραφη του (περιεργο!)
Θελει ενα ξεχωριστο αρχειο(πχ pdf) που να λεει αναλυτικα τι καναμε, τι μας δυσκολεψε, τι ειδαμε στο εργαστηριο κτλ. περιπου σαν τα παραλληλα? 'Η θελει πριν τον κωδικα(που ειναι σε μορφη txt) να βαλουμε σε σχολια (δηλαδη με ; ) μια αναλυση? Επισης τι παραδιδουμε? Την εργασια και τον κωδικα ξεχωριστα?Μαζι ολα τυπωμενα ενα τσουρμο? Εμενα ο κωδικας πχ εχει σχολια και ειναι αρκετα αναλυτικα, θα ταν χαζο να γραψω ξεχωριστα μια αναλυση μες στον κωδικα.... :-\
Και τελος σε τι μορφη το παραδιδουμε? Ηλεκτρονικη(δλδ με φλασακι κλπ) ή εκτυπωμενα ολα? Ή ενας συνδιασμος των δυο?
Αχ δε μπορω εχω καταμπερδευτει, αν γνωριζει καποιος ας μου δωσει τα φωτα του... :(


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Καμένος on January 09, 2011, 09:56:47 am
Εκτυπωμένο τον κώδικα με σχόλια και ανάλυση του τι σας δυσκόλεψε, αν δε δούλεψε κάτι στον AVR τι έφταιγε κτλ.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Da Bo$$ on January 09, 2011, 19:01:08 pm
Έχω δύο απορίες
Για την Ασκηση 1-Τμήμα 1

1)Θέλει να αποθηκεύσω στη ProgramMemory τα ΑΕΜ σε μορφή δυαδικών προσημασμένων.

Ετσι αν το αεμ ειναι το 6000 θα έχω
.db 0b00111100, 0b00000000
και μετα αφού το φορτώσω σε δύο καταχωρητες AEM1_high και AEM1_low (μέσω LPM) παίρνω το NEG αυτών  :???:

2)θέλει μετα την πίεση του SW0 να εμφανιζεται η διαφορα των ΑΕΜ στα led σε μορφή δυαδικού προσημασμένου.

Απλά θα κανω
SUB AEM1_low,AEM2_low
SBC AEM1_high,AEM2_high  :???:


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Καμένος on January 09, 2011, 19:21:32 pm
1) Γιατί να πάρεις το NEG? Είναι ήδη σε μορφή προσημασμένων απλά είναι θετικοί
2) Ναί


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Da Bo$$ on January 09, 2011, 19:29:18 pm
ευχαρισ
1) Γιατί να πάρεις το NEG? Είναι ήδη σε μορφή προσημασμένων απλά είναι θετικοί
2) Ναί
Ευχαριστώ!


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Da Bo$$ on January 09, 2011, 20:31:51 pm
Για την ίδια ασκηση
έχοντας τη διαφορά στους 8bit-ους AEM1_high και AEM1_low πως θα την κανω να εμφανιστει σωστά στα led?

Εννοώ, αρκεί απλά να γράψω
com ΑΕΜ1_high
out PORTB, ΑΕΜ1_high
com ΑΕΜ1_l;ow
out PORTB, ΑΕΜ1_low

ή πρέπει να κανω πρώτα καμιά μετατόπιση
 :???:


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Καμένος on January 09, 2011, 21:25:15 pm
Τα εμφανίζεις όπως είπες. Αν είναι θετική ΟΚ, αν ειναι αρνητική θα είναι σε συμπλήρωμα του 2. Δε χρειάζεται να κάνεις κάτι άλλο..


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Da Bo$$ on January 09, 2011, 21:33:14 pm
Ρωτάω απλά γιατι αν πχ έχω τα αεμ 6151 και 6001
στα led θα εμφανιστει
μια το 1και μία το 50

και όχι το 150 μια κι εξω


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 09, 2011, 23:04:48 pm
Αν είναι 6151-6001=150 θα πρέπει τα 2 bytes να είναι έτσι:

00000000   10010110


Αν είναι 6001-6151=-150 θα πρέπει τα 2 bytes να είναι έτσι:

10000000   10010110

Η αφαίρεση αρχικά θα σου δώσει 11111111 01101010
Αν πάρεις συμπλήρωμα του 2 σε αυτό και μετά βάλεις μόνος σου το bit15 να είναι 1 φτιάχνεις αυτό που θέλεις.

(Το 100101102=15010)


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Da Bo$$ on January 10, 2011, 17:07:42 pm
Καταλαβαίνω αυτό που λες.
Για τα ΑΕΜ ας πουμε 6151 και 6000

Aν αποθηκεύω τα δύο πρώτα ψηφία τους στους καταχωρητές ΑΕΜ1_high και AEM2high
(δηλαδή ΑΕΜ1_high = 00111101 = 6110 και ΑΕΜ2_high =00111100=6010)

και

τα δύο τελευταία ψηφία στους ΑΕΜ1_low  ΑΕΜ2_low
(δηλαδή ΑΕΜ1_low = 00110011 = 5110 και ΑΕΜ1_low=00000000=010)

Τότε η αφαίρεση SUB AEM1_low,AEM2_low
                         SBC AEM1_high,AEM2_high
δεν θα δίνει
ΑΕΜ1_low = 00110011 =5110
AEM1_high =  00000001 =110
 :???:

Μετά πως θα περάσω τους δύο τελευταίους καταχωρητες σε έναν άλλο ωστε τελικά αυτός να περιέχει το 151?
 :-\


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Cthulu on January 10, 2011, 17:58:23 pm
Νομίζω ότι στη μνήμη θα πρέπει να αποθηκεύσεις τα ΑΕΜ σε πλήρη δυαδική μορφή (όχι ξεχωριστά κάθε δύο ψηφία) και μετά κάθε ψηφίο ξεχωριστά σε BCD. Δηλαδή αν το ΑΕΜ1 είναι το 6000 και το ΑΕΜ2 το 6151 θα έχεις

0001 0111 0111 0000   ;το 6000 σε δυαδικό
0001 1000 0000 0111   ;το 6151 σε δυαδικό

0110 0000                        ; 6,0 σε BCD
0000 0000                        ; 0,0
0110 0001                        ; 6,1
0101 0001                        ; 5,1

Στα leds θα απεικονίζεις κατευθείαν τα ψηφία του BCD και θα χρησιμοποιήσεις τη δυαδική μορφή για την αφαίρεση.
Έτσι AEM1_low=01110000   AEM1_high=00010111   AEM2_low=00000111    AEM2_high=00011000
μετά από
SUB AEM1_low,AEM2_low
SBC AEM1_high,AEM2_high
θα έχεις AEM1_high:AEM1_low=1111 1111 0110 1001 που είναι το 151 σε συμπλήρωμα του 2


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Laza G on January 11, 2011, 01:40:47 am
παιδιά μπορεί κάποιος να βοηθήσει στο πώς θα μετρήσουμε και θα εμφανίσουμε τν δυαδικό αριθμό που αντιστοιχεί στον αριθμό των sec που πέρασαν μέχρι το πάτημα του πρώτου πλήκτρου από τα SW0-SW2 ? δεν μπορώ να καταλάβω που θα βάλω τον counter και γενικά με μπέρδεψε λίγο το πως θα υλοποιηθεί αυτό..thanks in advance


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 11, 2011, 02:25:16 am
παιδιά μπορεί κάποιος να βοηθήσει στο πώς θα μετρήσουμε και θα εμφανίσουμε τν δυαδικό αριθμό που αντιστοιχεί στον αριθμό των sec που πέρασαν μέχρι το πάτημα του πρώτου πλήκτρου από τα SW0-SW2 ? δεν μπορώ να καταλάβω που θα βάλω τον counter και γενικά με μπέρδεψε λίγο το πως θα υλοποιηθεί αυτό..thanks in advance
Διάβασες τις δύο προηγούμενες σελίδες του topic; Ίσως βοηθηθείς. Πάντως υπάρχει ένα πρόβλημα στην υλοποίησή αυτού του κομματιού με τις γνώσεις που έχουμε μέχρι τώρα (χωρίς διακοπές και χρονόμετρα).


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: DoomGuard on January 12, 2011, 14:30:01 pm
Στη αρχή της εργασίας που λέει με την απελευθέρωση του διακόπτη 7 να γίνονται τα παρακάτω.

Εσείς το υλοποιήσατε να πατάς το διακόπτη και το πρόγραμμα να συνεχίζει αμέσως η να περιμένει να τον ελευθερώσεις ??


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Komimis on January 12, 2011, 18:06:27 pm
Στη αρχή της εργασίας που λέει με την απελευθέρωση του διακόπτη 7 να γίνονται τα παρακάτω.

Εσείς το υλοποιήσατε να πατάς το διακόπτη και το πρόγραμμα να συνεχίζει αμέσως η να περιμένει να τον ελευθερώσεις ??

να περιμένει. αλλά τη σημασία έχει.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 13, 2011, 02:04:38 am
Στη αρχή της εργασίας που λέει με την απελευθέρωση του διακόπτη 7 να γίνονται τα παρακάτω.

Εσείς το υλοποιήσατε να πατάς το διακόπτη και το πρόγραμμα να συνεχίζει αμέσως η να περιμένει να τον ελευθερώσεις ??
Το πατάς και περιμένεις την απελευθέρωσή του.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Emfanever on January 14, 2011, 21:34:01 pm
Στην εργασία 3, οι διακόπτες SW2, SW3 τι ακριβώς πρέπει να κάνουν?


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 14, 2011, 23:21:04 pm
Από ότι καταλαβαίνω όταν πατάς πχ το sw2 τότε έχεις μεγαλύτερη θερμοκρασία από την επιθυμητή.
Άρα κλέινει αυτόματα η ζεστή βάνα (και ανοίγει η κρύα? ή δεν ανόιγει μόνη της αλλά μόνο με το sw0? και τότε αν είναι ήδη κλειστή σταμάταέι η ρόή νερού μέχρι να την ανόιξει ο χρήστης? ).
Επίσης, αλλάζουν τα led 0 και 1.
Ανάποδα για το sw3.

Το πρόβλημα είναι πάλι με τους χρόνους. Λέει ότι σε 1 sec γεμίζουν 100 λίτρα από κάθε ανοιχτή βάνα.
Θα περιμένουμε δηλαδή ολόλκηρο το 1 sec και μετά θα ανοιγοκλείνουμε τις βάνες ανάλογα με το τι ζητάει ο χρήστης?
Έτσι θα ήταν πιο εύκολη η παρακολούθηση του συνολικού νερού που πέρασε και η σηνθήκη τερματισμού αλλά δεν ξέρω αν θεωρείται καλή υλοποίηση.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Emfanever on January 14, 2011, 23:28:33 pm
Από ότι καταλαβαίνω όταν πατάς πχ το sw2 τότε έχεις μεγαλύτερη θερμοκρασία από την επιθυμητή.
Άρα κλέινει αυτόματα η ζεστή βάνα (και ανοίγει η κρύα? ή δεν ανόιγει μόνη της αλλά μόνο με το sw0? και τότε αν είναι ήδη κλειστή σταμάταέι η ρόή νερού μέχρι να την ανόιξει ο χρήστης? ).
Επίσης, αλλάζουν τα led 0 και 1.
Ανάποδα για το sw3.



Και εγώ αυτό σκέφτηκα, αλλά τότε οι sw2,sw3 κάνουν ουσιαστικά το ίδιο πράγμα με τους sw5,sw4, άρα ποιο το νόημα να έχουμε ξεχωριστά κουμπιά?


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 17, 2011, 13:56:48 pm
Αλλος δεν εχει ασχοληθει να ρηξει καμια ιδεα?

Οι διδακτορικοι δεν θα δωσουνε καμια χειρα βοηθειας?

( η ενδεχομενως να δωσουνε bitchslap "ξυπνα και λυσε την εργασια" εν πασει περιπτωσει ) ;D


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Καμένος on January 17, 2011, 16:31:59 pm
Οι διδακτορικοί τρέχουν και δε φτάνουν :P

Λοιπόν απ ότι καταλαβαίνω:

Στην αρχή πατάτε σε κάποια φάση το 0 και το 1 και ανοίγετε τις βάνες. Ανάλογα με το ποιές είναι ανοιχτές (μπορεί και οι δύο μπορεί και καμία) μετράτε δευτερόλεπτα και 100lt. Αυτό σταματάει όταν ο όγκος είναι 28000lt. Δηλαδή μπορεί να δουλεύει μόνο μία βάνα για 28 sec ή και οι 2 για 14 sec.

Καθώς συμβαίνουν αυτά προσομοιώνετε τα alerts για Temperature>SETPOINT και Temperature<SETPOINT με τα δύο switches. Απ ότι καταλαβαίνω πάλι αν ενεργοποιηθεί το Temperature>SETPOINT κλέινετε το ζεστό. Το αντίθετο για το Temperature<SETPOINT. Αυτά λογικά κρατάν τις τιμές μέχρι να ξαναενεργοποιήσετε την αντιστοιχη βάνα με τα 0 και 1. (η 4 και 5 για να τις κλείσετε).

Στο τέλος ή όταν φτάσουμε στα 28000lt ή όταν πατηθεί το emergency stop εμφανίζετε όλα αυτά που ζητάει. Bitchslap.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 17, 2011, 16:34:35 pm
Οι διδακτορικοί τρέχουν και δε φτάνουν :P

Το ξερω φιλε μου το ξερω. Ευχαριστω για το motivational bitchslap ;D


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 17, 2011, 16:50:48 pm
Παντως εξακολουθω να πιστευω οτι


τα < > εχουν σκοπο να μπορω να παιξω με τα νουμερα που ειναι γενικα πολυ δυσκολο

δλδ να κανω 2 για cold Kαι 4 μαζι ,ωπα εφυγα πολυ, κλεισε το ενα και 4 για το αλλο .... συνολο 2800


σπαω το κεφαλι μου, γενικα το 28 η 14 +14 ειναι μια χαρα


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Komimis on January 18, 2011, 00:29:42 am
Συνεχίζω να μην καταλαβαίνω τη χρησιμότητα των SW 2 και 3


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Cthulu on January 18, 2011, 00:57:24 am
Απ' ότι κατάλαβα στους ακροδέκτες 2,3 οδηγούνται σήματα από αισθητήρες που δείχνουν αν η θερμοκρασία του συνολικού νερού είναι μεγαλύτερη/μικρότερη της επιθυμητής. Δηλαδή στην πραγματική εφαρμογή δε τους χειρίζεται ο χρήστης αλλά ενεργοποιούνται μόνοι τους. Τους συνδέουμε δε σε διακόπτες μόνο για να ελέγξουμε αν λειτουργούν σωστά στο εργαστήριο. Από την άλλη όμως παρέχονται κι οι διακόπτες 4,5 για να μπορεί να κλείνει ο χρήστης τις βάνες μόνος του, αν θέλει να κάνει του κεφαλιού του!


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 18, 2011, 04:10:02 am
Μερικές σκέψεις:

Έστω ότι σε κάποια φάση δουλεύουν και ζεστό και κρύο.
Κλέινω το κρύο με το SW4.

Πατάω το SW2 (temprature>setpoint), δηλαδή θέλω πιο κρύο νερό. Άρα κλέινω το ζεστό.
Τώρα είναι και τα 2 κλειστά. Το κρύο να το ανοίξω αυτόματα? (αφού θέλω πιο κρύο νερό)
Σύμφωνα με την εκφώνηση δεν το ανοίγω...άρα κάθομαι και περιμένω μέχρι να πατηθεί κάποιο από τα SW0-SW1... :P :P
Βλακεία μου φαίνεται....

Αν το άνοιγα αυτόματα το κρύο τότε θα είχε μεγαλύτερη λειτουργικότητα το κουμπί SW2 (και αντίστοιχα το SW3).
Ώστόσο, κάποιος θα έλεγε ότι αφού ο χρήστης είπε πιο πριν ρητά να κλείσει το κρύο (με SW4) άρα μόνο ο χρήστης μπορέι να το ξανανοίξει....

Δεν έχω αποφασίσει ακόμα τι θα ήταν καλύτερο, αλλά μάλλον θα μέινω στο γράμμα της άσκησης...:P

Και έστω τελικά ότι κάθομαι και περιμένω και πατάω να ανόιξει το ζεστό. Ο αισθητήρας τότε λέει θέλει πιο κρύο , αλλά εγώ λέω ανοιξε το ζεστό... Το δέχομαι το ζεστό? Η δικιά μου γνώμη υπερισχύει ή του αισθητήρα?:P Μάλλον η δικιά μου... ;D ;D ;D

(είναι λίγο κάψιμο η άσκηση...)



Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 18, 2011, 15:02:39 pm
Ο κώδικας είναι χαώδης
τα σενάρια είναι ΠΟΛΛΑ
όποιος την σκέφτηκε θέλει σίγουρα να μας κάνει την ζωή δύσκολη με τον δικό του μοναδικό τρόπο  :)
καλή συνέχεια...
όποιος την κάνει πρώτος κερδίζει τίποτα;  :P


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Ariel on January 18, 2011, 17:49:00 pm
όποιος την κάνει πρώτος κερδίζει τίποτα;  :P

φυστίκι :P

Ρε παιδια, έχει καταλάβει κανεις πως γίνεται η μέτρηση των λίτρων??


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 18, 2011, 18:12:05 pm
χρονοκαθυστέρηση με μετρητή
μόλις ο μετρητής φτάσει στο 28
KAPPUT-ΤΕΛΟΣ-FIN-THE END :D

edit: το βρήκα; κέρδισα τίποτα;


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 18, 2011, 19:17:28 pm
Σειρά μου τώρα:
Quote from: εκφώνηση
. Κλείνουν και οι δύο βάνες εισαγωγής
και ελέγχονται κατάλληλα οι αντίστοιχες ενδεικτικές λυχνίες λειτουργίας των βανών.

πρέπει να γράψουμε κώδικα που κλείνει τις βάνες εισαγωγής;
θα στείλουμε δεδομένα στην γραμμή εισόδου του AVR δλδ;  ^confused^

και τι είδους κατάλληλο έλεγχο να κάνουμε στις λυχνίες; ^confused^ ^confused^ ^confused^
αφού όποτε θέλουμε εμείς τις ανάβουμε... υποτίθεται υποδεικνύουν την κατάσταση λειτουργίας / έξοδο της συσκευής και όχι την είσοδο της, ή κάνω λάθος;

edit: aggalitsa που κοιτάς το topic, θα σου ξεφουσκώσω τα λάστιχα του αμαξιού και θα σου δαγκώσω το σκυλί. ΜΠΕΣ MSN  >:(


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Ariel on January 18, 2011, 19:28:38 pm
Αν θεωρήσουμε οτι οι βάνες λειτουργούν παράλληλα, πώς θα το υλοποισουμε αυτο??
Πώς θα γίνει ταυτόχρονος έλεγχος σε 2 βανες? οεο?


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 18, 2011, 19:49:57 pm
Αν θεωρήσουμε οτι οι βάνες λειτουργούν παράλληλα, πώς θα το υλοποισουμε αυτο??
Πώς θα γίνει ταυτόχρονος έλεγχος σε 2 βανες? οεο?
μια αλλη χρονοκαθυστέρηση που θα προσθέτεις στον μετρητή σου 2 μονάδες αντί για 1 :P
ας απαντήσει κάποιος και σε μένα, αν μπορεί


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Καμένος on January 18, 2011, 20:24:58 pm
Όπως είπα και καταλαβαίνω τα κουμπιά τα πατάτε όποτε θέλετε χωρίς περιορισμό. Απλά οι λειτουργίες πρέπει να γίνονται σωστά ( να μτριούνται σωστά τα lt δηλαδή). Σε καθυστερήσεις του 1 sec ελέγχετε την κατάσταση και των 2 βανών και αυξάνετε αντίστοιχα μέχρι το 28.

Οι διδακτορικοί τρέχουν και δε φτάνουν :P

Λοιπόν απ ότι καταλαβαίνω:

Στην αρχή πατάτε σε κάποια φάση το 0 και το 1 και ανοίγετε τις βάνες. Ανάλογα με το ποιές είναι ανοιχτές (μπορεί και οι δύο μπορεί και καμία) μετράτε δευτερόλεπτα και 100lt. Αυτό σταματάει όταν ο όγκος είναι 28000lt. Δηλαδή μπορεί να δουλεύει μόνο μία βάνα για 28 sec ή και οι 2 για 14 sec.

Καθώς συμβαίνουν αυτά προσομοιώνετε τα alerts για Temperature>SETPOINT και Temperature<SETPOINT με τα δύο switches. Απ ότι καταλαβαίνω πάλι αν ενεργοποιηθεί το Temperature>SETPOINT κλέινετε το ζεστό. Το αντίθετο για το Temperature<SETPOINT. Αυτά λογικά κρατάν τις τιμές μέχρι να ξαναενεργοποιήσετε την αντιστοιχη βάνα με τα 0 και 1. (η 4 και 5 για να τις κλείσετε).

Στο τέλος ή όταν φτάσουμε στα 28000lt ή όταν πατηθεί το emergency stop εμφανίζετε όλα αυτά που ζητάει. Bitchslap.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on January 19, 2011, 15:49:51 pm
Μέχρι στιγμής δεν έχει βγει κάποια ανακοίνωση για το πότε θα γίνει το 3ο εργαστήριο.
Ειπώθηκε τίποτα στο μάθημα?

Οι διδακτορικοί τρέχουν και δε φτάνουν :P
..............................
Bitchslap.

 ;D

σαδιστή...


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 19, 2011, 16:51:18 pm
Μέχρι στιγμής δεν έχει βγει κάποια ανακοίνωση για το πότε θα γίνει το 3ο εργαστήριο.
Ειπώθηκε τίποτα στο μάθημα?

Οι διδακτορικοί τρέχουν και δε φτάνουν :P
..............................
Bitchslap.

 ;D

σαδιστή...


Σαδιστης η οχι εγω μια φορα εργαστηριο 3 εκανα σημερα στην ωρα του

οποτε γινονται τωρα που μιλαμε , να ξερεις


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: jimmakos on January 19, 2011, 16:55:13 pm
Έχουν μεταφερθεί όλα τα εργαστήρια μια βδομάδα μπρος, οπότε αυτή τη βδομάδα γίνονται κανονικά στις ώρες που έγιναν την προηγούμενη βδομάδα τα εργαστήρια. Sorry που παρέλειψα να το στείλω παρόλο που το γνώριζα. Λογικά μπορείτε όσοι το χάσατε να πάτε σε κάποιο άλλο.
Βέβαια το κακό με τους υπεύθυνους είναι ότι δεν ενημερώνουν το e-thmmy.
εγώ το έμαθα με κατ' ιδίαν ερώτηση


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: lynx on January 19, 2011, 17:23:43 pm

thnks! ευτυχώς μόνο για μία ομάδα έχει γίνει μέχρι στιγμής.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 19, 2011, 21:21:54 pm

Ας καταθέσω κι εγώ την άποψή μου για το γρίφο της εργασίας.
Νομίζω πως από τη στιγμή που ανοίγουν οι βάνες με τα κουμπιά SW0 και SW1 δεν μπορούμε να επέμβουμε ξανά σ' αυτά τα κουμπιά. Είναι μία διαδικασία (όπως γράφει η εκφώνηση) που εκτελείται σειριακά. Έτσι, μετά τα δύο ανοίγματα, χρησιμοποιούμε τους διακόπτες 2-3 για να πετύχουμε την επιθυμητή θερμοκρασία.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 19, 2011, 21:54:08 pm

Ας καταθέσω κι εγώ την άποψή μου για το γρίφο της εργασίας.
Νομίζω πως από τη στιγμή που ανοίγουν οι βάνες με τα κουμπιά SW0 και SW1 δεν μπορούμε να επέμβουμε ξανά σ' αυτά τα κουμπιά. Είναι μία διαδικασία (όπως γράφει η εκφώνηση) που εκτελείται σειριακά. Έτσι, μετά τα δύο ανοίγματα, χρησιμοποιούμε τους διακόπτες 2-3 για να πετύχουμε την επιθυμητή θερμοκρασία.

Τότε ποιο νόημα θα είχε ο αριθμος ενεργοποιήσεων του ζεστού νερού?

Πιστεύω πως όλα τα κουμπιά μπορεις να τα πατήσεις όποτε θέλεις και όσες φορές θέλεις. Το κουμπί που πατιέται θα κάνει τις ενέγειές του και θα αλλάζει την  κατάσταση του συστήματος, όπου κατάσταση εννοώ ποιες βάνες είναι ανοιχτές την τρέχουσα στιγμή συν το τι δείχνουν τα leds. Μετά από 1 sec πχ (αν κάθε 1 sec κάνεις έλεγχο των κουμπιών) βλέπεις ποσες βάνες ήταν ανοιχτές στο sec που πέρασε και προσθέτεις τα ανάλογα λίτρα. Όταν γεμίσει τέλος.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Faros on January 19, 2011, 22:48:53 pm
Τον  έλεγχο για Temperature>SETPOINT θα τον εκτελεί το πρόγραμα ή υποτίθεται πως θα υπάρχει ένας μετρητής στο μηχάνημα,οπότε το πρόγραμα θα ελέγχει μόνο αν πατήθηκαν οι διακόπτες 2 και 3; Εαν τον εκτελεί το πρόγραμα θα έπρεπε να ξέρουμε το SetPoint δηλαδή την αναλογία όγκων π.χ. volume_cold/volume_hot=3 οπότε και θα μπορούσαμε να κάνουμε τη σύγκριση.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 19, 2011, 23:18:39 pm
Εγώ κατάλαβα ότι για αριθμό ενεργοποιήσεων εννοεί τα δευτερόλεπτα που είναι ανοιχτή η βάνα hot. Αν και 3 bits, μέγιστο 7 sec χλωμό... Εσύ πώς τον εννοείς τον αριθμό ενεργοποιήσεων; Φόρες που πατήθηκε ο SW1; Όταν είναι ανοιχτή η βάνα και ξανανοίγει τι γίνεται; ή όταν είναι ανοιχτή και πιέζεται ο SW3;

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

Τον  έλεγχο για Temperature>SETPOINT θα τον εκτελεί το πρόγραμα ή υποτίθεται πως θα υπάρχει ένας μετρητής στο μηχάνημα,οπότε το πρόγραμα θα ελέγχει μόνο αν πατήθηκαν οι διακόπτες 2 και 3; Εαν τον εκτελεί το πρόγραμα θα έπρεπε να ξέρουμε το SetPoint δηλαδή την αναλογία όγκων π.χ. volume_cold/volume_hot=3 οπότε και θα μπορούσαμε να κάνουμε τη σύγκριση.
Δε νομίζω να θέλει κάτι τόσο τραβηγμένο. Στην πραγματικότητα τα SW2-3 είναι αισθητήρες, απλά εδώ προσομοιώνονται με το πάτημα διακοπτών. Ήδη είναι τραβηγμένη η ασκήση, ας μην περιπλέκουμε κι άλλο τον κώδικα!



Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Emfanever on January 20, 2011, 01:11:28 am
Εγώ κατάλαβα ότι για αριθμό ενεργοποιήσεων εννοεί τα δευτερόλεπτα που είναι ανοιχτή η βάνα hot. Αν και 3 bits, μέγιστο 7 sec χλωμό... Εσύ πώς τον εννοείς τον αριθμό ενεργοποιήσεων; Φόρες που πατήθηκε ο SW1; Όταν είναι ανοιχτή η βάνα και ξανανοίγει τι γίνεται; ή όταν είναι ανοιχτή και πιέζεται ο SW3;

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


Αριθμός ενεργοποιήσεων είναι πόσες φορές άνοιξε η βάνα HOT.  Δηλαδή πόσες φορές πάτησες το κουμπί SW1. Αν είναι ανοιχτή η βάνα δεν έχει νόημα να την ξανανοίξεις.


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


Δεν αστοχεί το πρόγραμμα, απλά μπορεί να χρειαστεί να κρατήσεις το κουμπί πιο πολύ ώρα πατημένο για να σιγουρευτείς ότι το διάβασε. Ή μπορείς εναλλακτικά να κάνεις τη χρονική καθυστέρηση πολύ μικρή.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: dimvam on January 20, 2011, 01:38:40 am
Αριθμός ενεργοποιήσεων είναι πόσες φορές άνοιξε η βάνα HOT.  Δηλαδή πόσες φορές πάτησες το κουμπί SW1. Αν είναι ανοιχτή η βάνα δεν έχει νόημα να την ξανανοίξεις.
Οκ. Μόνο με το πάτημα του SW1; Ή ο μετρητής αυξάνει και με το πάτημα του SW3 (όταν δηλαδή Temperature<SETPOINT);


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Emfanever on January 20, 2011, 01:42:48 am
Αριθμός ενεργοποιήσεων είναι πόσες φορές άνοιξε η βάνα HOT.  Δηλαδή πόσες φορές πάτησες το κουμπί SW1. Αν είναι ανοιχτή η βάνα δεν έχει νόημα να την ξανανοίξεις.
Οκ. Μόνο με το πάτημα του SW1; Ή ο μετρητής αυξάνει και με το πάτημα του SW3 (όταν δηλαδή Temperature<SETPOINT);

Μόνο με το SW1, γιατί στο SW3 λέει μόνο να κλείνει η κατάλληλη βάνα και όχι να ανοίγει κάποια.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Laza G on January 20, 2011, 23:21:54 pm
παιδιά μπορεί κάποιος που έκανε την εργασία και είναι ''σωστή'' η δομή της, να ποστάρει τα βήματα και το τι πρέπει να κάνει ο κάθε διακόπτης κτλ ωστέ να επαληθεύσουμε αν αυτά που γράψαμε είναι σωστά ή όχι? γιατί επικρατεί γενικά ένα χάος στα προηγούμενα ποστ..μια περίληψη πλζ


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: arashi on January 20, 2011, 23:26:59 pm
παιδιά μπορεί κάποιος που έκανε την εργασία και είναι ''σωστή'' η δομή της, να ποστάρει τα βήματα και το τι πρέπει να κάνει ο κάθε διακόπτης κτλ ωστέ να επαληθεύσουμε αν αυτά που γράψαμε είναι σωστά ή όχι? γιατί επικρατεί γενικά ένα χάος στα προηγούμενα ποστ..μια περίληψη πλζ

Αγχος?  :D :D :D



Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Laza G on January 20, 2011, 23:39:39 pm
τρελόοοοοοο ο ο ο ο  8))

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


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: mitsos_dlx on January 21, 2011, 00:44:41 am
παιδιά μπορεί κάποιος που έκανε την εργασία και είναι ''σωστή'' η δομή της, να ποστάρει τα βήματα και το τι πρέπει να κάνει ο κάθε διακόπτης κτλ ωστέ να επαληθεύσουμε αν αυτά που γράψαμε είναι σωστά ή όχι? γιατί επικρατεί γενικά ένα χάος στα προηγούμενα ποστ..μια περίληψη πλζ

Τα βήματα σε μία απλή μορφή θα μπορούσαν να είναι έτσι:

1) Γέμισε η δεξαμενή? Αν ναι τότε τέλος.
2) Αν όχι,περίμενε 1 sec.
3) Πρόσθεσε τα κατάλληλα λίτρα ή δευτερόλεπτα ανάλογα με το πόσες βάνες ήταν ανοιχτες.
4) Είναι πατημένο κάποιο κουμπί? Αν όχι τότε πάνε στο 1
5) Αν ναι τότε κάνε αυτα που θέλει το κουμπί (ότι λέει ακριβώς η εκφώνηση).
6) Πανε στο 1


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

Αυτό είναι ένα πρόβλημα το οποίο όμως για το σκοπό της άσκησης γίνεται αποδεκτό να το αφήσεις έτσι από ότι κατάλαβα.

Αν τώρα θες οπωσδήποτε να το βελτιώσεις μπορείς να κάνεις 2 πράγματα:

1)Να μικραίνεις το χρόνο καθυστέρυσης, πχ σε 0,01sec. Τότε μπορείς να πεις ότι θα προλαβάινεις όλα τα πατήματα. Βέβαια αυτό αλλάζει λίγο το τρόπο της υλοποίησης, πχ τα λίτρα θα μπαίνουν ένα-ένα και όχι εκατό-εκατό.

2)Καθώς περιμένεις το 1 sec να ελέγχεις τα κουμπιά παράλληλα. Όταν πατηθέι κάτι το αποθηκεύεις σε ένα καταχωρητή. Έτσι και να το αφήσεις πριν συμπληρωθεί το sec θα είναι κάπου αποθηκευμένο.


Title: Re: [Συστήματα Μικροϋπολογιστών] - Εργασίες 2010 - 2011
Post by: Laza G on January 21, 2011, 02:06:00 am
https://www.youtube.com/watch?v=5r9V5WV_Fbk