THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Συστήματα Μικροϋπολογιστών => Topic started by: kekropas on December 05, 2006, 20:14:48 pm



Title: Απορίες στην εργασία 2006-07
Post by: kekropas on December 05, 2006, 20:14:48 pm
Διάβασα στο προγούμενο post, για την κάρτα ότι είναι αρχικοποιημένη στο 0ΧFF. Στο πρόγραμμά μας τι επιπτωση θα έχει αυτό? Θα πρέπει να αρχικοποιήσουμε και εμείς το portb στο 0ΧFF? Και μετά το led όταν είναι σβηστό είναι στο 1 και θα πρέπει να πέσει στο 0 για να ανάψει?
Βάλτε και εσείς άλλες απορίες μήπως καταφέρουμε τίποτα!!!

Edit: Επίσης πως θα βγουν 4 ψηφία που ζητάει από τα ΑΕΜ σε 8 led δε μπορώ να καταλάβω, αφού σύνολο χρειάζονται 16?


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 05, 2006, 21:12:12 pm
Αν θυμαμαι καλα απο περυσι ΝΑΙ τα Leds (και οι διακοπτες) λειτουργουν με αντιστροφη λογικη.

Οσο για το δευτερο απλα θα αλλαζει η ενδειξη με το πατημα ενος διακοπτη!
Θα δειξεις δλδ πρωτα τα 2 πρωτα ψηφια σε BCD και μετα τα αλλα 2.

Προσοχη στα μεταβατικα/διακοπτικα φαινομενα...περισσοτερα στο βιβλιο σας.


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 05, 2006, 21:43:09 pm
Ακόμα και στο portb δλδ η λειτουργία read-write είναι ανάποδη από ότι λέει το βιβλίο σε σχέση με τον ddrb. Δηλαδή όταν στο ddrb φορτώσω το 0XFF θα είναι in ή out?


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on December 05, 2006, 22:16:30 pm
Όταν λέει να εισαχθούν τα δύο τελευταία ψηφία των ΑΕΜ εννοεί τα συγκεκριμένα ή πρέπει να φτιάξουμε πρόγραμμα που θα λειτουργεί γενικά για κάθε δύο αριθμούς που θα δίνουμε;


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 05, 2006, 22:21:22 pm
Εγώ για τα συγκεκριμένα κατάλαβα, μη μου λες τέτοια!!! :)
Πάντως για να λέει να εισαχθούν στη μνήμη του μικροελεγκτή μιλάει για τα συγκεκριμένα ψηφία και μόνο.
edit: Το θέμα είναι για την κάρτα stk αν θα πρέπει να διαλέξουμε ένα switch πχ0 και όταν πάει από το 1 στο 0 να γίνει η μετάβαση από το ένα ΑΕΜ στο άλλο. Όταν παταμε το switch η portd αλλάζει?;ή μήπωςι η pind.
Και για να γίνει ιn απο τη portd θα πρέπει η ddrd να είναι στο FF ή στο 00???


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on December 05, 2006, 23:34:25 pm
Δεν είμαι και σίγουρος αλλά νομίζω ότι το Pind πρέπει να μείνει στο 00.Στην εκφώνηση λέει να βάλουμε και 4 breakpoint.Για να μπουν απλά πατάμε toggle breakpoint ή θέλει και τίποτα άλλο;Τι υποτίθεται ότι κάνουν αυτά τα breakpoints;Με το switch Που λες για να δείχνει μια το ένα ΑΕΜ και μια το άλλο φαντάζομαι ότι χρειάζεται ωστόσο πώς θα κάνουμε κάτι τέτοιο;


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 05, 2006, 23:54:24 pm
Ναι τα breakpoints ο πιο εύκολος τρόπος που έχω βρεί είναι να βάζεις εκεί που θες το ποντίκι και να πατάς toggle breakpoint. Όταν πατάς run η εκτέλεση του προγράμματος σταματά σε αυτά τα σημεία μέχρι να το εκκινήσεις πάλι εσύ. Αλλά στην εκφώνηση δε βλέπω, που ζητάει?

Για το switch έτσι το σκέφτηκα και εγώ. Κοίταξε την εντολή sbic και εγώ τώρα το κάνω και δεν έχω βρεί ακριβώς αλλά λογικά με μια τέτοια εντολή πρέπει να βγαίνει. Το 2ο μέρος το ξεκίνησε κανένας. Θέλει πολύ χρόνο?


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on December 06, 2006, 00:01:47 am
Στο αρχείο lab.pdf στη σελίδα 4 λέει για τα breakpoints.Όταν βάζω breakpoint και πατάω Run εμένα δεν σταματάει  η εκτέλεση.Τρέχει  κανονικά λες και δεν υπάρχει breakpoint.Τι να πω? :D


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 06, 2006, 00:10:03 am
Για το 2ο μέρος φαντάζομαι ισχύουν αυτά που λέει στην 4η σελίδα?
Όσο για τα breakpoints μη σε πάρω και στο λαιμό μου εγώ αυτό νομίζω ότι κάνουν, το έκανες πάλι build το πρόγραμμα αφού έβαλες τα breakpoints? Επίσης καλό είναι όταν τα βάζεις να μην είσαι σε debug.

edit: Ξέρει κανένας αν οι εργασίες είναι ίδιες με τις περσινές? Έχει κανένας τις περσινές εκφωνήσεις?
και 2ο:Χρειάζεται να κάνουμε τπτ delays? Υπάρχει κανένας αλγόριθμος στο βιβλίο για αυτό?


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 06, 2006, 01:47:08 am
Η κατασταση θα αλλαζει αφου πατηθει ο διακοπτης και αφεθει...
δλδ απο 1->0->1 ! Τοτε θα εμφανιζονται τα αλλα 2 ψηφια των ΑΕΜ.

Οι εργασιες περυσι μαλλον ηταν ιδιες (βασικα οταν ρωτας κατι τετοιο πρεπει να μας ποσταρεις τις φετινες :P για να δουμε)! Απ τα λεγομενα σας βλεπω οτι ειναι μαλλον ολοιδιες!

Παντως τα προγραμματα τα φτιαχνεται για να δουλεψουν με τα ΑΕΜ σας...οχι να παιρνουν εισοδο ! Αυτο σιγουρο...
οι εισοδοι που παιρνουν ειναι οι διακοπτες ωστε να αλλαζει η κατασταση.

Οσο για το delay...ψαξε στο βιβλιο σε ενα παραδειγμα (δεν θυμαμαι εννοειται σελιδα) εδινε και ρουτινα delay (χωρις Timers/Counter που δεν τα κανατε ακομα). Λογικα θα σας εχει κανει και ο Πετρου μια τετοια.
Δεν ειναι εντελως απαραιτητη. Εκει παντως λεει και για το διακοπτικο φαινομενο και για να το βρεις και ευκολα εχει και ενα διαγραμμα τασης του διακοπτη...ψαξε δεν νομιζω να εχει και πολλα διαγραμματα το βιβλιο.

Βασικα εγω ειχα παρατηρησει το εξης: και χωρις συναρτησεις delay δουλευε μια χαρα ! απλα επρεπε τους διακοπτες να τους πατας λιγο αποτομα...σαν να τους χτυπας δλδ ενα πραμα...οχι να τους πατας με την ανεση σου.
Αν βαλεις μια ρουτινα για delay αποφευγεις το παραπανω και τον πατας οπως γουσταρεις ! :P


Παμε τωρα στα Ports.

Η PIN ειναι απλα για να διαβαζεις την κατασταση της θυρας. ΔΕΝ τις δινεις δεδομενα.
Η PORT ειναι για να δινεις δεδομενα προς εξοδο (αν η θυρα ειναι σε κατασταση εισοδου η PORT απλα ανοιγει/κλεινει τα pull-up resistors - αφηστε το αυτο για την ωρα).
H DDR ειναι για να διαλεξεις τι κατασταση θα εχει η θυρα (εισοδο /εξοδο)

Ελπιζω να καταλαβατε γιατι τα γραφω λιγο βιαστικα!
;)


Title: Re: Απορίες στην εργασία 2006-07
Post by: AnnieHall on December 06, 2006, 02:04:10 am
Βασικά για τη σύνταξη των προγραμμάτων βασιστήκατε στο βιβλίο? Εντάξει, έχει χύμα τις εντολές αλλά δεν έχω βρει παραδείγματα. Όπως και επίσης σε όλα τα σχετικά που έχει ανεβάσει ο Πέτρου στο eTHMMY , σε ψιλοκατατοπίζουν για τον AVR και την STK αλλά από κει και πέρα στη σύνταξη του προγράμματος τί γίνεται??
Τα χω χάσει ρε γμτ! :-\ Χρειάζομαι καθοδήγηση! :-\


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 06, 2006, 04:24:16 am
anniehall δοκίμασε να διαβάσεις αυτό τον οδηγό:
http://www.avrfreaks.net/index.php?module=FreaksArticles&func=downloadArticle&id=22
Προς το τέλος(σελ.11-12) έχει ένα ωραίο παράδειγμα και τα εξηγεί γραμμή γραμμή αναλυτικά, θα καταλάβεις πολλά πράγματα.
Από εκεί και πέρα ότι απορία έχεις γράψε εδώ, όλοι τώρα τα μαθαίνουμε λίγο ο ένας λίγο ο άλλος θα βγάλουμε άκρη!!

Jason, ευχαριστώ για τη βοήθεια, μια διευκρίνιση: Όταν λές η αλλαγή να γίνει όταν γίνει 1->0->1  αν πχ πάρω μόνο μια sbic η αλλαγή θα γίνει από 1->0, για να περιμένει να ξαναγίνει 1 τι θα πρέπει να προσθέσω και μια sbis???(ή μαμαμπιπ είπα)(edit: Το δοκίμασα έτσι και βγαίνει ωραία
thanks για το tip).
Βάζω και την άσκηση σε ένα αρχειάκι txt για να κατέβει ακαριαία!!! Αν έχεις χρόνο κοίταξέ τη. Ευχαριστώ και πάλι


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 06, 2006, 09:52:47 am
Ναι ιδια ειναι !

Οσα λεμε ισχυουν φυσικα για το Τμημα 1.
Απ'οτι ειδα λεει να εισαχθουν στην μνημη. Αρα αν θες να 'σαι σωστος θα τα σωσεις στην μνημη ισως καπως ετσι:

.dseg
.org $100

.db 01010010  <-τα νουμερα ειναι παραδειγμα
.db 00100010  <-δεν ειμαι σιγουρος για την συνταξη.

και μετα για να τα φορτωσεις.

ld r16,$100
....
ld r17,$101


Οσο για την αλλαγη δεν πολυκαταλαβα τι λες...

γενικα οι διακοπτες διαβαζονται ως εξης:

in r18,PIND

Μετα για να διαβασεις τον διακοπτη που θες υπαρχουν πολλες επιλογες...εστω πχ οτι θελουμε να δουμε την τιμη του SW1.
Μπορεις να κανεις μια AND και να κρατησεις μονο το SW1 bit:

andi r18,00000010
μετα ελεγχεις αν ειναι 0
cp r18,0

αν ειναι 0 πατηθηκε αν οχι δεν πατηθηκε αρα

brcc ...


αλλος τροπος για να ελεγξεις το bit ειναι με ολοσθηση. πχ

lsr r18
lsr r18
brcc ...


Με τους παραπανω τροπους ελεγχεις απλα μια αλλαγη του διακοπτη ... μετα πρεπει να περιμενεις (σε αλλο κομματι κωδικα την αλλη!

Τον τροπο που λες εσυ δεν τον πολυκαταλαβα.
Αν σου δουλευει ομως στον debugger δεν υπαρχει λογος να ανησυχεις.

Βαλε τις εισοδους και δοκιμαζε να αλλαζεις χειροκινητα εσυ τα μπιτ... (του PIND) και να δεις αν το προγραμμα σου κανει αυτα που πρεπει.



Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 14:37:54 pm
Να κάνω μια χαζή ερώτηση αλλά εχω κολλησει..Δν κατανοω ακριβώς την εκφώνηση..Τα 2 τελευταία ψηφία του ΑΕΜ μου ειναι 17..Θα το φορτώσω αυτό σαν 00010111 ολο μαζι ή κάθε ψηφίο μόνο του??κ προτού τα φοτώσω πρέπει να τα μετατρέψω σε BCD "παρακαλώ κύριοι" :D??HEElP


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 06, 2006, 14:38:17 pm
Ναι δουλεύει αλλά αλλάζω χειροκίνητα την portd, την είσοδο δηλαδή, το pind γιατί να το αλλάξω?

edit: nec σωστά το έχεις, όλο μαζί θα το περάσεις με τη μια με ldi πχ και το έχεις κάνει ήδη bcd οπότε είσαι οκ


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 15:19:37 pm
Προς το παρόν thanx...Πρέπει να τα κάνω όλα μονος μου γιατί το "ταίρι" μου για το εργαστήριο δν εμφανίζεται..


Title: Re: Απορίες στην εργασία 2006-07
Post by: kvanto on December 06, 2006, 20:25:19 pm
FATAL ERROR: Cannot open output file C:\Documents and Settings\?Ü ?ÞÞ±Ü?- ¹¾Û\Leds\Leds.hex: Invalid argument
????????????????τρεχω το προγραμμα και μου βγαζει το παραπανω μηνυμα!!!!! τι να κανω για να τρεξει??


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on December 06, 2006, 20:28:42 pm
Αποθήκευσε το project σου σε ένα φάκελο που το path για να πας εκεί να μην έχει ελληνικούς χαρακτήρες.
π.χ. C:/Documents and Settings/All Users.Και εμένα αυτό μου έβγαζε έκανα αυτό που σου είπα και λύθηκε.


Title: Re: Απορίες στην εργασία 2006-07
Post by: kvanto on December 06, 2006, 20:37:11 pm
Ευχαριστω πολυ!!!!! μας εσωσες!


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 21:08:19 pm
Μπορεί κάποιος να μ εξηγήσει πως ακριβώς δουλέυει αυτό που κάνει στη σελίδα 154 βιβλίου για να ελέγξει ποιός διακόπτης πατηθηκε?
Είναι το ακόλουθο: in r18,PIND
                           andi r18,$0F
                           cpi r18,$0F

Για ποιο λόγο κάνει το λογικό and με την τιμή $0F κ μετά κάνει σύγκριση τον r18 με τον $0F πάλι??


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 21:35:00 pm
Α κ αν κάποιος έκανε το 2ο κομμάτι η το έχει κάποιος παλιός ας το δώσει,όχι για αντιγραφή,απλά μπας κ καταλάβω τι θέλει κ πως πάνω κάτω γίνεται..Δν πάει άλλο, όπου κ αν κοιτάξω γύρω μου τα βλέπω όλα σε pixels......


Title: Re: Απορίες στην εργασία 2006-07
Post by: elisabeth on December 06, 2006, 22:01:09 pm
Πρωτα εχεις 4 switches συνδεδεμενα με 4 leds.
οταν δεν εχει πατηθει κανενα switch τοτε r18=$FF
οταν πατηθει καποιο τοτε το αντιστοιχο bit στον r18 γινεται 0.
τωρα κανει την andi για να απομονωσει τα 4 τελεθταια bits οπου ειναι συνδεδεμενα τα leds.δηλαδη αν:
πριν:r18=$1111 1101(το switch1 εχει πατηθει)
μετα:r18=$0000 1101 και μετα συγκρινει αυτο με το 0000 1111 ετσι ωστε αν καποιος διακοπτης εχει πατηθει το Ζ=1 και το προγραμμα θα προσπερασει την επομενη εντολη (brep get_switch) και θα παει να ψαξει ποιος διακοπτεις πατηθηκε.
βεβαια θα μπορουσε να κανει και ενα cpi r18,$FF.δεν ξερω γιατι το εκανε ετσι.
ελπιζω να βοηθησα


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 22:05:24 pm
Ευχαριστώ..δε ξέρω ακόμα αν το καταλαβαίνω γιατι αυτη τη στιγμή δε λειτουργώ....Θα το κοιτάξω λίγο αργότερα κ ελπίζω να το καταλάβω..... :-[


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 06, 2006, 22:46:47 pm
Το ιδιο λεμε...

Οταν αλλαζεις χειροκινητα την PIND ειναι σαν να προσομοιωνεις την κατασταση να ερχοταν υψηλη ταση στο PINDx.
Αν αλλαζεις χειροκινητα το PORTD δεν ξερω τι κανει μιας και η πορτα ειναι σε κατασταση εισοδου...
μαλλον ενεργοποιει pull-up resistors και σου εμφανιζει παλι στο PIND 1 αλλα καλυτερα να αλλαζεις το PIN.


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 06, 2006, 22:58:22 pm
Στο δεύτερο κομμάτι της άσκησης όταν λεει πιέζονται ταυτόχρονα τα πλήκτρα?(sw7-sw4) εμείς πρέπει να κάνουμε με το προγραμμα έλεγχο ποτε θα πατηθούν κ όταν πατηθούν τότε θα πιέσουμε κ το sw0??δν πιάνω τι ακριβώς ζητά...

elizabeth ok το κατάλαβα αυτό που μ είπες, Thanx


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 07, 2006, 04:12:46 am
Εγώ αυτό που έκανα είναι να πατηθούν πρώτα τα πλήκτρα sw4-7, όσα χρειάζονται τέλως πάντων, και στη συνέχεια μόνο όταν πατηθεί το sw0 να γίνει η καταχώρηση, το πρόγραμμα να μπει σε loop μέχρι να αφεθεί το sw0.
Σκέψου ότι αν δε γινότανε αυτό θα έπρεπε να πατήσουμε τα πλήκτρα ταυτόχρονα με ακρίβεια μερικά ms. Τώρα αυτό δε χρειάζεται αφού τα πατάμε από πριν και η καταχώρηση γίνεται με το πάτημα του sw0.


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 07, 2006, 10:17:23 am
Αυτο ακριβως! Δεν γινεται ελεγχος για πατημα των SW4-7 αν δεν πατηθει το SW0.
Μολις πατηθει το 0 διαβαζονται τα 4-7 και μετα το 0 απελευθερωνεται. Φανταστειτε οτι η διαδικασια αυτη κρατα ms.
Αρα εχετε πατημενα τα SW4-7 και πατατε το 0 για να γινει η καταχωρηση.


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 07, 2006, 11:22:07 am
Έχοντας ΄κανει τα bit 7-4 k 0 της PORTD είσοδο, με ποια εντολή βάζουμε τον αριθμό που θέλουμε?πχ αν θέλω να βάλω το 7(0b01110000 αυτό δν είναι??)θα το κανω Ldi στο port D???δε μπορω να το βρω...


Title: Re: Απορίες στην εργασία 2006-07
Post by: AnnieHall on December 07, 2006, 14:22:01 pm
Αν κατάλαβα τι εννοείς και αν δεν κάνω λάθος (είμαι σε φάση πειραματισμού ακόμα οπότε κρατώ τις ... επιφυλάξεις μου ::)), εφόσον έχεις βάλει αυτά τα bit (0 κ 4-7) της PORTD ως είσοδο, τότε δεν τους δίνεις τιμές (οι τιμές τους αλλάζουν ουσιαστικά με βάση το αν πατιέται ή όχι κάποιο switch). Δηλαδή μπορείς όταν τρέχεις το πρόγραμμα, από το Ι/Ο View  να αλλάζεις τις καταστάσεις τους χειροκίνητα, πειράζοντας τα συγκεκριμένα PIND της PORTD.


Title: Re: Απορίες στην εργασία 2006-07
Post by: AnnieHall on December 07, 2006, 18:44:53 pm
Εγώ θέλω να ρωτήσω το εξής. Στο τμήμα 2, υποτίθεται ότι θα δίνουμε κάθε φορά (μέσω των διακοπτών), το ίδιο ψηφίο του ΑΕΜ μας? Πχ το 4? Ή αυτό θα πρέπει να λειτουργεί για οποιοδήποτε αριθμό ανάμεσα στο 1-9? Και απλά να τον καταχωρεί όταν πατηθεί το 0?

Aντε ειδικά εσείς που είχατε σήμερα το εργαστήριο βοηθήστε λίγο :P :P


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 07, 2006, 19:52:35 pm
Όχι δεν θα δίνεται μόνο ο ίδιος αριθμός. Στην ουσία θα πρέπει να ανάβουν τα led που αντιστοιχούν στα πλήκτρα που θα πατούνται κάθε φορά εκτός του switch0 που δεν το πατάμε για σχηματισμό αριθμού αλλά για συγχρονισμό. Δηλαδή θα πρέπει για κάθε αριθμό από το 1-9 να δουλέψει.


Title: Re: Απορίες στην εργασία 2006-07
Post by: JAs0n-X on December 07, 2006, 21:30:01 pm
Έχοντας ΄κανει τα bit 7-4 k 0 της PORTD είσοδο, με ποια εντολή βάζουμε τον αριθμό που θέλουμε?πχ αν θέλω να βάλω το 7(0b01110000 αυτό δν είναι??)θα το κανω Ldi στο port D???δε μπορω να το βρω...

για να διαβασεις τα Pins μιας θυρας οπως εχω γραψει και πιο πανω η διαδικασια ειναι η παρακατω:

in PIND,r16

για να κρατησεις τα bits Που σε ενδιαφερουν

andi r16,11110000

ετσι στον r16 θα εχεις την εισοδο στην μορφη ΧΧΧΧ0000

ΑΝ πρεπει να την φερεις στα λιγοτερο σημαντικα ψηφια θα κανεις:

swap r16 Οποτε θα ερθει σε μορφη 0000ΧΧΧΧ = ενα νουμερο !

Εγώ θέλω να ρωτήσω το εξής. Στο τμήμα 2, υποτίθεται ότι θα δίνουμε κάθε φορά (μέσω των διακοπτών), το ίδιο ψηφίο του ΑΕΜ μας? Πχ το 4? Ή αυτό θα πρέπει να λειτουργεί για οποιοδήποτε αριθμό ανάμεσα στο 1-9? Και απλά να τον καταχωρεί όταν πατηθεί το 0?

Aντε ειδικά εσείς που είχατε σήμερα το εργαστήριο βοηθήστε λίγο :P :P
Εννοειται οτι γινεται διαβασμα για οποιαδηποτε τιμη!


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 11, 2006, 21:43:40 pm
Σε ένα καταχωρητή πχ τον r16 τα 4 πιο σημαντικά ψηφία ποιά είναι? Από 7-4 ή 3-0?


Title: deleted
Post by: BOBoMASTORAS on December 11, 2006, 21:57:13 pm
deleted


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 12, 2006, 00:19:32 am
Ευχαριστώ και κάτι ακόμα δεν μπορώ να βρώ. Πώς μπορώ να κάνω δεικτοδοτημένη αναφορά όπως στον trn πχ να αποθηκέυει κάτι στον r1+ένα μετρητή που μειώνει σε κάθε loop? (δλδ στο 1ο loop στον R1, στο 2ο στον R2, κτλ).Το μόνο που σκέφτηκα είναι να κάνω έμμεση αναφορά στον μετρητή αλλά αν πχ το περιεχόμενο του μετρητή είναι 1 θα το αποθηκεύεσει στον R1?

sorry αν σας μπέρδεψα λίγο :)


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 12, 2006, 02:36:54 am
Ευχαριστώ και κάτι ακόμα δεν μπορώ να βρώ. Πώς μπορώ να κάνω δεικτοδοτημένη αναφορά όπως στον trn πχ να αποθηκέυει κάτι στον r1+ένα μετρητή που μειώνει σε κάθε loop? (δλδ στο 1ο loop στον R1, στο 2ο στον R2, κτλ).Το μόνο που σκέφτηκα είναι να κάνω έμμεση αναφορά στον μετρητή αλλά αν πχ το περιεχόμενο του μετρητή είναι 1 θα το αποθηκεύεσει στον R1?

sorry αν σας μπέρδεψα λίγο :)


Αυτό προσπαθώ να κάνω κ γω από χτες αλλά δε μπόρεσα να βρω κάτι....


Title: deleted
Post by: BOBoMASTORAS on December 12, 2006, 13:29:20 pm
deleted


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 12, 2006, 21:41:49 pm
Δεν έχω καταλάβει τίποτα από τα X,Y,Z και ότι προσπάθεια κάνω με μικρά προγραμματάκια αποτυγχάνει, ενώ το βιβλίο δε λέει πάνω απο δυο γραμμές.

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


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on December 12, 2006, 21:53:14 pm
Νομίζω είναι αποδεκτό για τη στοίβα..Κ γω προσπαθησα να το υλοποιήσω αλλά μου κόλλησε κάπου κ αυτος ο τρόπος....


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 12, 2006, 21:55:58 pm
Πρέπει να κάνεις αρχικοποίηση του stack pointer. Εκεί κολλάει, τώρα αν ρωτάς πως γίνεται αυτό και εγώ το ίδιο ;)


Title: Re: Απορίες στην εργασία 2006-07
Post by: Καμένος on December 12, 2006, 22:00:35 pm
Δεν έχω καταλάβει τίποτα από τα X,Y,Z και ότι προσπάθεια κάνω με μικρά προγραμματάκια αποτυγχάνει, ενώ το βιβλίο δε λέει πάνω απο δυο γραμμές.

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

Όχι ρε.. το δοκίμασες το παραπάνω που έβελε ο bob? Ουσιαστικά έχει τον r16 σαν μετρητή και γράφει σε 10 διαδοχικές θέσεις της μνήμης τον αριθμό 145.

Απλά τα z,y,x μπορείς να τα χρησιμοποιήσεις ώς δείκτες για να γράψεις στην μνήμη.

(Και πάντα κάνε αρχικοποίηση στην στοίβα:


ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16


)

ʼσχετο, σε ποιόν AVR δουλεύετε? 8515?
)
 


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 12, 2006, 23:07:10 pm
Ναι 8515,
Η st x+, data       που ακριβώς αποθηκεύει τα δεδομένα δηλαδή εγώ πως μπορώ να έχω πρόσβαση σε μια από αυτές.
Πάντως εγώ όταν κάνω αυτή την εντολή μου βγαίνουν άσχετα πράγματα


Title: deleted
Post by: BOBoMASTORAS on December 12, 2006, 23:22:54 pm
deleted


Title: Re: Απορίες στην εργασία 2006-07
Post by: dim on December 13, 2006, 01:43:21 am
Μία ερώτηση, λίγο άσχετη ίσως με την εργασία..

Γιατί στο βιβλίο έχει συνέχεια 3 φορές την εντολή rjmp RESET?

Σ'όλα τα tutorials στο net υπάρχει 1..


Title: deleted
Post by: BOBoMASTORAS on December 13, 2006, 03:04:44 am
deleted


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 13, 2006, 03:24:19 am
Στο 2ο τμήμα λέει:
Θεωρώντας τα δύο ψηφία του κάθε ΑΕΜ σαν ένα αριθμό BCD των δύο ψηφίων, να
μετατραπεί ο αριθμός BCD στον αντίστοιχο του δυαδικού συστήματος. Να
εμφανισθεί το αποτέλεσμα στα LEDs.

Δεν έχω παραμικρή ιδέα τι ζητάει


Title: Re: Απορίες στην εργασία 2006-07
Post by: dim on December 13, 2006, 07:04:37 am
Λοιπόν..

Έκανα ένα κατεβατό για την 1η εργασία - 1ο τμήμα, αλλά έχω το εξής πρόβλημα..

Καλώ μία spubrputine.
Όταν αυτή φτάσει στο ret, αντί η εκτέλεση του προ/τος να συνεχιστεί με την επόμενη εντολή του "κυρίως προ/τος", η εκτέλεση πάει στο label RESET..

Τα νεύρα μου...

Καμιά ιδέα??


Title: Re: Απορίες στην εργασία 2006-07
Post by: Καμένος on December 13, 2006, 10:13:18 am
Στο 2ο τμήμα λέει:
Θεωρώντας τα δύο ψηφία του κάθε ΑΕΜ σαν ένα αριθμό BCD των δύο ψηφίων, να
μετατραπεί ο αριθμός BCD στον αντίστοιχο του δυαδικού συστήματος. Να
εμφανισθεί το αποτέλεσμα στα LEDs.

Δεν έχω παραμικρή ιδέα τι ζητάει

Εννοεί:

Πχ το ΑΕΜ σου τελειώνει σε 64. Θα δώσεις στον AVR τα ψηφία 6 και 4 σε μορφή BCD (με τους διακόπτες της STK500) και πρέπει να φτιάξεις το πρόγραμμα ώστε στα leds να βγεί το αποτέλεσμα (64) σε δυαδική μορφή (δηλαδή 01000000 )

Ουσιαστικά πολλαπλασιάζεις το MSB (6) με το 10 (προσοχή, ο 8515 δεν έχει εντολή πολλαπλασιασμού, πρέπει να το κάνεις έμμεσα) και να προσθέσεις το LSB (4).
Τέλος το εμφανίζεις στην οθόνη.


Title: Re: Απορίες στην εργασία 2006-07
Post by: Καμένος on December 13, 2006, 10:19:50 am
Λοιπόν..

Έκανα ένα κατεβατό για την 1η εργασία - 1ο τμήμα, αλλά έχω το εξής πρόβλημα..

Καλώ μία spubrputine.
Όταν αυτή φτάσει στο ret, αντί η εκτέλεση του προ/τος να συνεχιστεί με την επόμενη εντολή του "κυρίως προ/τος", η εκτέλεση πάει στο label RESET..

Τα νεύρα μου...

Καμιά ιδέα??

Την υπορουτίνα την καλείς με RCALL (όπως πρέπει) ? Γράψε ακριβώς πως την καλέις και πώς επιστρέφεις από αυτή...


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on December 13, 2006, 14:32:51 pm
Δεν ξέρω αν είναι σωστό αλλά ίσως να θέλει αρχικοποίηση ο stack pointer και για αυτό να βγάζει σφάλμα. Πάντως αυτό που λέει ο Καμένος ισχύει, υπάρχουν πολλές εντολές για υπορουτίνες, εσύ δούλεψε με την rcall


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on January 04, 2007, 03:29:12 am
Παιδιά για την τρίτη άσκηση αν θυμάται κανένας από πέρσι: Τα ΑΕΜ έχει αναφερθεί στο παλιό θέμα τα βάζουμε κατευθείαν στη μνήμη με ldi ή κάνω λαθος και πρέπει να γίνουν εισαγωγή?
Δεύτερο: Ο βρόγχος που θα κάνει την κύρια δουλειά θα πρέπει να δουλεύει για κάθε αριθμό ας είναι γνωστά ήδη τα ΑΕΜ ή ο αριθμός των επαναλήψεων θα δωθεί από εμάς παλι για τη συγκεκριμένη περίπτωση?


Title: Re: Απορίες στην εργασία 2006-07
Post by: cyb3rb0ss on January 04, 2007, 17:23:35 pm
Παιδιά για την τρίτη άσκηση αν θυμάται κανένας από πέρσι: Τα ΑΕΜ έχει αναφερθεί στο παλιό θέμα τα βάζουμε κατευθείαν στη μνήμη με ldi ή κάνω λαθος και πρέπει να γίνουν εισαγωγή?
Δεύτερο: Ο βρόγχος που θα κάνει την κύρια δουλειά θα πρέπει να δουλεύει για κάθε αριθμό ας είναι γνωστά ήδη τα ΑΕΜ ή ο αριθμός των επαναλήψεων θα δωθεί από εμάς παλι για τη συγκεκριμένη περίπτωση?

Που υπάρχει η εκφώνηση των ασκήσεων?


Title: Re: Απορίες στην εργασία 2006-07
Post by: Faidon on January 04, 2007, 18:16:54 pm
Όλες οι ασκήσεις ήταν μαζί σε ένα .pdf, αν θυμάμαι καλά.


Title: Re: Απορίες στην εργασία 2006-07
Post by: cyb3rb0ss on January 04, 2007, 18:25:34 pm
Οκ το βρήκα. 10x.


Title: Re: Απορίες στην εργασία 2006-07
Post by: kekropas on January 07, 2007, 21:29:03 pm
Υπάρχει πουθενά σε κάποια διαφάνεια ή αλλού ο αλγόριθμος που έχει δώσει ο κ. Πέτρου για αλγόριθμο πολλ/σμου στο μάθημα?


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on January 09, 2007, 18:20:03 pm
Στο πρώτο τμήμα της δεύτερης εργασίας τι ακριβώς ζητάει;
Πατάμε τα SW4-SW7 και δίνουμε το πρώτο ψηφίο το οποίο αποθηκεύεται όταν αφήσουμε το SW1;Μετά δίνουμε το δεύτερο ψηφίο του πρώτου AEM το οποίο αποθηκεύεται όταν αφήσουμε το SW0;
Χρειάζεται στοίβα για να κρατάει τις τιμές που δώσαμε;
   
                                               


Title: Re: Απορίες στην εργασία 2006-07
Post by: nec on January 09, 2007, 22:11:38 pm
Στο πρώτο τμήμα της δεύτερης εργασίας τι ακριβώς ζητάει;
Πατάμε τα SW4-SW7 και δίνουμε το πρώτο ψηφίο το οποίο αποθηκεύεται όταν αφήσουμε το SW1;Μετά δίνουμε το δεύτερο ψηφίο του πρώτου AEM το οποίο αποθηκεύεται όταν αφήσουμε το SW0;
Χρειάζεται στοίβα για να κρατάει τις τιμές που δώσαμε;
   
                                               

Βασικα εισαγεις το καθε ψηφιο οπως στο δευτερο τμημα της 1ης ασκησης(πατωντας τα SW4-SW7), το οποιο αποθηκευεται οταν αφησεις το sw0.To sw1 το πατας αφου αποθηκευτει το ψηφιο κ οταν το αφησεις πλεον εισαι ετοιμος να αποθηκευσεις το δευτερο ψηφιο με τον ιδιο τροπο..Δηλ καθε ψηφιο αποθηκευεται οταν αφησεις το SW0. Το SW1 ειναι ασχετο με την αποθηκευση,απλα το πατας σαν να προετοιμαζεις κατα καποιο τροπο το συστημα να δεχτει το επομενο ψηφιο..

Τωρα η αποθηκευση μπορει να γινει κ μεσω στοιβας μπορεις ομως να χρησιμοποιησεις κ τους δεικτες απλα (X,Y Z)...Οπως σε βολευει..Ελπιζω να βοηθησα


Title: Re: Απορίες στην εργασία 2006-07
Post by: lefos on January 09, 2007, 22:26:19 pm
Ευχαριστώ πολύ.


Title: Re: Απορίες στην εργασία 2006-07
Post by: Axel on January 20, 2007, 18:35:42 pm
θα μπορουσε καποιος να μου πει ποια ειναι η διαφορα αναμεσα στο data segment και στο code segment?

Στο 1ο τμημα της 1ης ασκησης ποια η διαφορα αν το κανουμε οπως λεει ο Jason
---
.dseg
.org $100

.db 01010010  <-τα νουμερα ειναι παραδειγμα
.db 00100010  <-δεν ειμαι σιγουρος για την συνταξη.

και μετα για να τα φορτωσεις.

ld r16,$100
....
ld r17,$101
---

απο το να το κανουμε ετσι?
---
.cseg
.org $0
.equ aem1=0b00010100
.equ aem2=0b01000001

            rjmp    RESET         
         
RESET:
...
      ldi r17, aem1         ;Fortwnoume ta dio teleutaia psifia
      ldi r18, aem2         ;twn dio AEM kai sygkekrimena ta
...
---


Title: deleted
Post by: BOBoMASTORAS on January 20, 2007, 19:06:18 pm
deleted


Title: Re: Απορίες στην εργασία 2006-07
Post by: Axel on January 20, 2007, 19:15:50 pm
Το πρωτο παραδειγμα ειναι απο ενα post του Jason καπου εδω μεσα (μαζι με τα σχολια). :P

Το δευτερο ειναι το δικο μου. ;) Την ερωτηση την εκανα γιατι σε ολα τα παραδειγματα εβλεπα .cseg στην αρχη εκτος απο αυτο του Jason. Ε και καπου μπερδευτηκα.

Ασε που οντως μου φαινεται περιεργη η αρχιτεκτονικη harvard. θα προτιμουσα assembly σε pc, αλλα τι να κανουμε. :P

Ευχαριστω για την διευκρινηση. :)