THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => AVR Εποχή => Topic started by: JAs0n-X on August 24, 2006, 18:59:47 pm



Title: Απορια με TMR/CNTR και Output Compare
Post by: JAs0n-X on August 24, 2006, 18:59:47 pm
Ρε παιδια ας μου το κανει καποιος πιο λιανα αυτο.

Ποτε χρησιμοποιειται αυτο το Output Compare ?? και τι ειναι?

Ξερω οτι οταν τρεχουμε σε CTC mode προκαλειται Interrupt οταν ο timer φτασει στην τιμη που εχουμε θεσει στον Output Compare Register.
Τι αλλες λειτουργιες ομως εχει αυτο?
δεν καταλαβαινω αυτο το Compare Match Output Mode Που διαβαζω στην σελιδα 153 του ATmega169P datasheet.
και το συνανταω να χρησιμοποιειται στην 8η ασκηση.

Επισης στην συγκεκριμενη ασκηση θετει στον καταχωρητη TCCR2 0bΧΧΧΧΧ111 ωστε να εχουμε εξωτερικο κλοκ στο Τ2 πιν σε ανοδικο παλμο.

Εγω στο datasheet που διαβαζω (το οποιο λεει τον καταχωρητη TCCR2A) για αυτα τα μπιτς λεει οτι ελεγχουν το κλοκ αλλα μονο ως προς τον prescaller.
Που γινεται η ρυθμιση για να εχουμε εξωτερικο κλοκ??

Ρε γμτ διαβαζω το datasheet ενος μεγαλυτερου απο τον 128 που θα πρεπε να διαβαζω και χαονομαι.
Η πλακα ειναι οτι το τυπωσα κιολας και τωρα ΔΕΝ ΤΥΠΩΝΩ αλλο !!  ;D

ποιο ειναι το σωστο datasheet?

thanks


Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: JAs0n-X on August 24, 2006, 19:07:21 pm
Το βρηκα το σωστο datasheet.

Εγω ειχα κατεβασει του atmega απο το cd του βιβλιου που ειναι για τον mega LCD AVR.

MEGAλη ΜΑΛΑΚΙΑ !!!  ^callmerip^ ^callmerip^ ^callmerip^ ^banghead^ ^banghead^ ^banghead^ ^banghead^ ^banghead^ ^banghead^ ^banghead^ ^banghead^ ^banghead^


Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: JAs0n-X on August 24, 2006, 19:28:17 pm
Α νομιζω καταλαβα τι κανει το Output Compare στη συγκεκριμενη ασκηση.

Αν δεν κανω λαθος ειναι συνδεδεμενο με το INT1 οποτε με βαση την επιλογη που καναμε γινεται 0->1 και προκαλει το Interrupt.
Διορθωστε με.



Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: Alexkasgr on August 26, 2006, 02:08:30 am
Iάσωνα πάντως είσαι κορυφαίος στο να απαντάς στον εαυτό σου... το έχεις κάνει πολλές φορές!!
(Προφανώς όταν το δεις κιόλας σβήστο από το topic, για να σε πειράξω είναι! :P)


Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: JAs0n-X on August 26, 2006, 12:56:59 pm
:P :) :)
το κανω αυτο εδω και καιρο στο φορουμ τωρα που το σκεφτομαι.

Ωστοσο υπαρχουν ακομα αναπαντητες ερωτησεις...μαλλον θα περιμενω 1-2 μερες πριν την εξεταση που θα πεσουν ολοι με τα μουτρα στα Μίκρο.



Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: BOBoMASTORAS on August 26, 2006, 23:22:55 pm
Βασικά το output compare IRQ γίνεται ανεξάρτητα από τη λιετουργία του CNTR.
Αυτό καθορίζεται από τη μάσκα των IRQ του μετρητή.

Η λειτουργία προσδιορίζει το πως θα μετράει. Ουσιαστικά ενεργοποιόντας το CTC και φορτώνοντας μία τιμή Ν στο καταχωρητή OC κάνεις τον CNTR mod N+1. Δλδ θα μετράει μέχρι το N και στη συνέχεια στο επόμενο CLK θα μηδενίζεται.

Τώρα σχετικά με το output compare
O AVR σε non-PWM λειτουργία μπορεί να κάνει 4 πράγματα

1 απλά να μετράει όπως έχει ρυθμιστεί. όταν συμβεί κάποιο IRQ που έχει ενεργοποιηθεί θα εκτελεστεί η αντίστοιχη ρουτίνα

2 όταν γίνει TCNTR=OCR αλλάζει η κατάσταση του pin OC (toggle) Αυτό γίνεται μέσω hardware δε χρειάζεται να εκτελεστεί ρουτίνα IRQ, παρόλα αυτά αν υπάρχει και έχει ρυθμιστεί θα εκτελεστεί.

3 Το ίδιο με παραπάνω αλλά δε γίνεται toggle του OC απλά μηδενισμός του

4 το ίδιο με παραπάνω απλά έχεις OC=1

Αν έχεις ρυθμίσει τον CNTR να κάνει PWM το pin OC έχει διαφορετική λειτουργία.

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


Title: Απ: Απορια με TMR/CNTR και Output Compare
Post by: JAs0n-X on August 26, 2006, 23:41:41 pm
thanks bob. απο σενα την περιμενα την απαντηση.
Ψιλοπροσανατολιστικα αλλα ισως επανελθω απο Τεταρτη που θα ξαναπιασω μικρο.
Τωρα ΣΑΕ !! αχ.


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: ckck20 on August 27, 2006, 00:48:15 am
Α νομιζω καταλαβα τι κανει το Output Compare στη συγκεκριμενη ασκηση.

Αν δεν κανω λαθος ειναι συνδεδεμενο με το INT1 οποτε με βαση την επιλογη που καναμε γινεται 0->1 και προκαλει το Interrupt.
Διορθωστε με.



Έτσι είναι. Αλλά εγώ θα ρωτήσω το άλλο. Γιατί μπαίνει στον κόπο να μπλέξει το int1 με το pin OC και δεν ενεργοποιεί απλώς την ISR του compare mode; :)


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: nec on June 07, 2007, 17:57:55 pm
Να ρωτησω κατι???Σε κατι ασκησεις που κανουμε με Πετρου τωρα,στη μεθοδο output compare,αλλοτε αλλαζουμε τa bit OCFx k OCIEx στους καταχωρητες TIFR k TIMSK αντιστοιχα, κ αλλοτε οχι..Κ απ' ότι βλεπω το κανει στον counter0. Οταν χρησιμοποιει τους TCNT1 k TCNT2 δν το κανει. Δε ξερω αν εχει σημασια αυτο η ετυχε στις ασκησεις που μας εκανε..Γενικα χρειαζεται να τα πειραξουμε τα bit που δηλωνουν αν εχουμε Timer overflow ή Output compare στους καταχωρητες TIFR k TIMSK, η τα πειραζουμε μονο σε καποιες περιπτωσεις αν πχ μας λεει κατι η ασκηση??


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: nec on June 08, 2007, 22:52:55 pm
Κανεις δν γνωριζει...??? :( :( :'( :'(


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: aika on June 08, 2007, 23:21:05 pm

Bασικά δεν έχει σχέση με το αν είναι ο Timer/Counter0 ή ο Timer/Counter1! Σε κάθε άσκηση επιλέγει ποιες interrupts θέλει να χρησιμοποιήσει, πχ Interrupt on compare match, interrupt on overflow, ή καμμία, οπότε βάζει και τα αντίστοιχα bits στους καταχωρητές (TCCR, TIMSK)! (Ο ΤIFR είναι καταχωρητής σημαιών, οπότε το αποτέλεσμά του δεν διαμορφώνεται από σένα αλλά από το πρόγραμμα)

Αν κάνω κάτι λάθος διορθώστε με γιατί δεν έχω και τις σημειώσεις μπροστά μου  :P Πάντως ενδιαφέρομαι για τις ασκήσεις σου από το μάθημα nec...

Ρε παιδιά, προσπάθησα να λύσω τα θέματα που έβαλε πέρσι τον Σεπτέμβρη και μπερδεύτηκα...Κανείς που ξέρει να μας βοηθήσει; (δηλώστε συμμετοχή και μετά θα σας κάνω και τις ερωτήσεις μου  :P


Title: deleted
Post by: BOBoMASTORAS on June 08, 2007, 23:52:18 pm
deleted


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: aika on June 09, 2007, 00:09:36 am

Bob is right!


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: nec on June 09, 2007, 00:14:08 am

Bασικά δεν έχει σχέση με το αν είναι ο Timer/Counter0 ή ο Timer/Counter1! Σε κάθε άσκηση επιλέγει ποιες interrupts θέλει να χρησιμοποιήσει, πχ Interrupt on compare match, interrupt on overflow, ή καμμία, οπότε βάζει και τα αντίστοιχα bits στους καταχωρητές (TCCR, TIMSK)! (Ο ΤIFR είναι καταχωρητής σημαιών, οπότε το αποτέλεσμά του δεν διαμορφώνεται από σένα αλλά από το πρόγραμμα)

Αν κάνω κάτι λάθος διορθώστε με γιατί δεν έχω και τις σημειώσεις μπροστά μου  :P Πάντως ενδιαφέρομαι για τις ασκήσεις σου από το μάθημα nec...

Ρε παιδιά, προσπάθησα να λύσω τα θέματα που έβαλε πέρσι τον Σεπτέμβρη και μπερδεύτηκα...Κανείς που ξέρει να μας βοηθήσει; (δηλώστε συμμετοχή και μετά θα σας κάνω και τις ερωτήσεις μου  :P

Οκ ευχαριστω κ σενα κ τον BoboMAstora..
Για τις σημειωσεις αμα θες να βρεθουμε τη Δευτερα να στις δωσω..Δε ξερω κατα ποσο ειναι κατατοπιστικες,κ αυτο επειδη το μαθημα δν το κατεχω καλα, πολλα απο αυτα που ελεγε εξηγωντας την ασκηση ειναι μεσες-ακρες..Μπορει μερικα απο αυτα να σε μπερδεψουν..;-)
Στις 1 τη Δευτερα εχω μαθημα, αν σε βολευει λιγο πιο νωρις να βρεθουμε πε ;-)


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: aika on June 09, 2007, 00:34:44 am
Οκ,  αν είναι θα σου πω.
Εγώ έχω μια άλλη απορία. Έχει κάνει πέρσι (11/4) μια άσκηση με μία interrupt service routine από ADC. Σε αυτήν κάνει push στην stack τον SREG. Αλλάζει τίποτα στον SREG και πρέπει να τον σώσει;
Σε καμμιά άλλη interrupt (πχ external) δεν έχω πάντως δει να σώζει τον SREG ή άλλους καταχωρητές  στη στοίβα :P.
Στην ίδια άσκηση ζητάει να μεταφέρουμε την πληροφορία από τον ADC σε μία θύρα εξόδου. Συγκεκριμένα θέλει τα 8 MSBit. Και κάνει το εξής που δεν έχω συλλάβει ακόμη:

in r16, ADCL
in r17, ADCH
lsr r17
ror r16
lsr r17
ror r16
com r16
out PORTD, r16

Tι νόημα βγάζετε από αυτά τα lsr κ ror που κάνει;



Title: deleted
Post by: BOBoMASTORAS on June 09, 2007, 01:13:14 am
deleted


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: Καμένος on June 09, 2007, 11:14:44 am
Οκ,  αν είναι θα σου πω.
Εγώ έχω μια άλλη απορία. Έχει κάνει πέρσι (11/4) μια άσκηση με μία interrupt service routine από ADC. Σε αυτήν κάνει push στην stack τον SREG. Αλλάζει τίποτα στον SREG και πρέπει να τον σώσει;
Σε καμμιά άλλη interrupt (πχ external) δεν έχω πάντως δει να σώζει τον SREG ή άλλους καταχωρητές  στη στοίβα :P.
Στην ίδια άσκηση ζητάει να μεταφέρουμε την πληροφορία από τον ADC σε μία θύρα εξόδου. Συγκεκριμένα θέλει τα 8 MSBit. Και κάνει το εξής που δεν έχω συλλάβει ακόμη:

in r16, ADCL
in r17, ADCH
lsr r17
ror r16
lsr r17
ror r16
com r16
out PORTD, r16


Tι νόημα βγάζετε από αυτά τα lsr κ ror που κάνει;



Ο ADC δίνει 10 bits. 8 στο ADCL και 2 στο ADCH. Αφού η άσκηση θέλει τα 8 πιο σημαντικά bits, αυτά είναι τα τελευταία 6 του ADCL και τα 2 του ADCH. Άρα για να τα πάρεις πρέπει να κάνεις δύο ολισθήσεις  δεξιά.
Οι καταχ ητές στη σειρά είναι ADCH,ADCL.


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: aika on June 09, 2007, 14:11:21 pm

Σωστά.. Με το lsr 'σώζεται' το bit που ολισθαίνει εκτός του r17 και μετά το περνάει ως ΜSBbit στον r16 με την ror.
Το com r16 το κάνει επειδή μπορεί να έχει συνδέσει τίποτα ledάκια στον PORTD τα οποία ανάβουν με 0;


Title: Re: Απορια με TMR/CNTR και Output Compare
Post by: Καμένος on June 09, 2007, 14:37:01 pm
nai