THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => AVR Εποχή => Topic started by: Kodi on March 04, 2015, 18:41:27 pm



Title: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Kodi on March 04, 2015, 18:41:27 pm
τόπικ για απορίες σε ασκήσεις μόνο
για παλια θεματα υπάρχει αντιστοιχο τόπικ


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: themis93 on May 12, 2015, 03:21:05 am
Έχω μια απορία στην δεύτερη άσκηση:

Στην αρχή γράφει:

,cseg
.org 0
  jmp reset
  jmp EXT_INT0
.org $004
reset:
  ....


Τι σημαίνουν αυτά τα jmp μετά το .org 0? το πρόγραμμα όταν ξεκινησει να τρέχει, θα ξεκινήσει από που? και μετά μέσα στην συνάρτηση δεν μπορώ να καταλάβω πότε θα κληθούν οι EXT_INT0 και  EXT_INT1. Αν μπορεί κάποιος, ας με βοηθήσει


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Grecs on May 12, 2015, 05:42:12 am
O κωδικας ειναι λαθος

κανονικα ειναι ετσι.

,cseg
.org 0
  jmp reset
.org $002
jmp EXT_INT0
reset:

 Οταν θα γινει το interrupt σε καποιο pin τοτε αυτοματα ο program counter δειχνει σε συγκεκριμενη διευθυνση συμφωνα με τον πινακα ATmega128 Interrupt vectors. Στην συγκεκριμενη περιπτωση επειδη εχεις ιντεραπτ μεσω του πιν ΙΝΤ0 συμφωνα με τον πινακα οταν γινει το ιντεραπτ αυτοματως ο program counter θα δειξει στην θεση $002 οπου εσυ θα χεις προνοησει να χεις εκει ενα jump στην υπορουτινα διακοπης (ΕΧΤ_ΙΝΤ0). Βασικα αυτο ειναι ολη η ουσια των μικρο2 και δεν το εξηγει πουθενα καλα. 


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Silvo the Beautiful on May 12, 2015, 11:13:49 am
όχι δεν παίζει ρόλο γκρεκς! Ο λόγος είναι ότι μετά το reset έρχεται το external interrupt 0! Οπότε επειδή είναι στη σειρά δνε χρειάζεται να ορίσεις Org. Θα καταλάβει ότι είναι η επόμενη διεύθυνση για το EXT_INT0


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: xameno kormi on May 12, 2015, 12:30:48 pm
διαβαζουμε απο τις διαφανειες του πετρου ετσι για αρχη γ να πιασουμε καποιες βασικες εννοιες για τις ασκησεις  ? η απο βιβλιο ?


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Grecs on May 12, 2015, 14:30:36 pm
όχι δεν παίζει ρόλο γκρεκς! Ο λόγος είναι ότι μετά το reset έρχεται το external interrupt 0! Οπότε επειδή είναι στη σειρά δνε χρειάζεται να ορίσεις Org. Θα καταλάβει ότι είναι η επόμενη διεύθυνση για το EXT_INT0

φυλαγε τα ρουχα σου να χεις τα μισα. Καλυτερα να βαζεις org καθε φορα να σαι σιγουρος οτι η αμεσως επομενη σειρα ειναι η διευθυνση του org.


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Tracy_McGrady on June 26, 2015, 16:45:02 pm
Μπορεί να εξηγήσει κάποιος γιατί κάνουμε reset τον prescaler?Στην 31 διαφάνεια όταν ξαναξεκινάει τον timer κάνει και reset τον prescaler?


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Exomag on June 26, 2015, 16:48:17 pm
Μπορεί να εξηγήσει κάποιος γιατί κάνουμε reset τον prescaler?Στην 31 διαφάνεια όταν ξαναξεκινάει τον timer κάνει και reset τον prescaler?

Διαφάνεια 31 από που;


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Tracy_McGrady on June 26, 2015, 16:54:47 pm
Μπορεί να εξηγήσει κάποιος γιατί κάνουμε reset τον prescaler?Στην 31 διαφάνεια όταν ξαναξεκινάει τον timer κάνει και reset τον prescaler?

Διαφάνεια 31 από που;
timers


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Exomag on June 26, 2015, 17:03:00 pm
Μπορεί να εξηγήσει κάποιος γιατί κάνουμε reset τον prescaler?Στην 31 διαφάνεια όταν ξαναξεκινάει τον timer κάνει και reset τον prescaler?

Διαφάνεια 31 από που;
timers

Εγώ έχω το tmer1612.4.ppt, και στη σελίδα 31 δεν βλέπω κάτι για reset του prescaler. Μήπως έχεις παλιότερα έκδοση των διαφανειών;


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Tracy_McGrady on June 26, 2015, 17:09:25 pm
Μπορεί να εξηγήσει κάποιος γιατί κάνουμε reset τον prescaler?Στην 31 διαφάνεια όταν ξαναξεκινάει τον timer κάνει και reset τον prescaler?

Διαφάνεια 31 από που;
timers

Εγώ έχω το tmer1612.4.ppt, και στη σελίδα 31 δεν βλέπω κάτι για reset του prescaler. Μήπως έχεις παλιότερα έκδοση των διαφανειών;
Το ίδιο έχουμε...απλά στη 33 διαφάνεια με μπερδεύει που λέει πρεπει να κάνουμε reset τον prescaler...δεν αναφέρει κάτι στην 31 διαφάνεια απλά δεν καταλαβαίνω γιατί ο prescaler μετράει παλι 4 system ticks


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: xameno kormi on June 27, 2015, 18:56:51 pm
ποτε γινεται interrupt στον ADC ? π.χ στο θεμα 2 απο αυτα π εχουν ανεβει ιουνιου '08


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: kofski17 on June 27, 2015, 22:53:40 pm
θέμα 2 ιούνιος 2014 - αναλογικός συγκριτής. Δεδομένου ότι ο συγκριτής συγκρίνει το ΑΙΝ1 με το ΑΙΝ0 και παράγει 0 ή 1 στο ACO ανάλογα με το αν ο AIN0 είναι πάνω ή κάτω από το AIN1, και τα σήματα που χώνονται στα AIN μπαίνουν απτα pins 2 και 3 του PORTE, πώς μπορώ να συγκρίνω το Α4 ( που θα το βάλω στο ΑΙΝ0 υποθέτω) με 4 σήματα ταυτόχρονα?? Αφού η άλλη είσοδος του συγκριτή ρυθμίζεται απτο PE3 και εκεί μπορώ να έχω μόνο ενα σημα


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Δον on June 28, 2015, 09:54:49 am
θέμα 2 ιούνιος 2014 - αναλογικός συγκριτής. Δεδομένου ότι ο συγκριτής συγκρίνει το ΑΙΝ1 με το ΑΙΝ0 και παράγει 0 ή 1 στο ACO ανάλογα με το αν ο AIN0 είναι πάνω ή κάτω από το AIN1, και τα σήματα που χώνονται στα AIN μπαίνουν απτα pins 2 και 3 του PORTE, πώς μπορώ να συγκρίνω το Α4 ( που θα το βάλω στο ΑΙΝ0 υποθέτω) με 4 σήματα ταυτόχρονα?? Αφού η άλλη είσοδος του συγκριτή ρυθμίζεται απτο PE3 και εκεί μπορώ να έχω μόνο ενα σημα

"Συνδέεις" το Α4 στην θετική είσοδο του συγκριτή και θέτεις τη χρήση του multiplexer (αν θυμάμαι καλά ενεργοποιείς το ACME bit του SFIOR), έτσι ώστε η αρνητική είσοδος να παίρνει εισόδους από τα κανάλια του ADC.
"Συνδέεις" έτσι λοιπόν τα Α3-Α0 σε 4 κανάλια του ADC και μετά μέσα σε σοφτγουερ μπορείς να μετατρέπεις ψευτοπαράλληλα τα σήματα. Δηλαδή μέσα σε μια λούπα θα επιλέγεις ποιο κανάλι θέλεις μέσω του ADMUX.


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: christineL on June 28, 2015, 17:48:31 pm
Θα ήθελα να κάνω 2 ερωτήσεις¨:
1) Όταν χρησιμοποιούμε PWM δεν χρειάζεται να ορίσουμε κάτι στον TIMSK, σωστά;
2)Όταν χρησιμοποιούμε PWM, με TOP την τιμή του OCR, για να ορίσουμε το duty cycle δεν πρέπει να θέσουμε κατάλληλη τιμή στον ICR? Και αν ναι, εκτός από το να την ορίσουμε, χρειάζεται κάποια άλλη ενέργεια;


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: kofski17 on June 28, 2015, 18:48:59 pm
Θα ήθελα να κάνω 2 ερωτήσεις¨:
1) Όταν χρησιμοποιούμε PWM δεν χρειάζεται να ορίσουμε κάτι στον TIMSK, σωστά;
2)Όταν χρησιμοποιούμε PWM, με TOP την τιμή του OCR, για να ορίσουμε το duty cycle δεν πρέπει να θέσουμε κατάλληλη τιμή στον ICR? Και αν ναι, εκτός από το να την ορίσουμε, χρειάζεται κάποια άλλη ενέργεια;
1) ναι δεν πιστεύω ότι χρειάζεται
2) εγώ προσωπικά όταν δε με βολεύει να χρησιμοποιήσω το 8,9 ή 10bit mode του PWM και ρυθμίζω το TOP μέσω του OCR1A όπως λες (oυσιαστικά το mode 15), τότε για να αλλάζω το duty cycle χρησιμοποιώ τον OCR1B (ουσιαστικά όταν αρχικοποιείς τον TCCR1A βάζεις στα bit COM1B1:0 = 10 ή 11 ανάλογα αν θες non inverting ή inverting), και μέσω της ISR του ΤΙΜER1_COMPB ( στη θέση $001Α) αλλάζω την τιμή του OCR1B για να αλλάξει το duty cycle. Δεν χρησιμοποιώ δηλαδή τον ICR.
Ουσιαστικά δηλαδή το ΤΟP ρυθμίζεται απτον OCR1A και το COMPARE από το OCR1B

θέμα 2 ιούνιος 2014 - αναλογικός συγκριτής. Δεδομένου ότι ο συγκριτής συγκρίνει το ΑΙΝ1 με το ΑΙΝ0 και παράγει 0 ή 1 στο ACO ανάλογα με το αν ο AIN0 είναι πάνω ή κάτω από το AIN1, και τα σήματα που χώνονται στα AIN μπαίνουν απτα pins 2 και 3 του PORTE, πώς μπορώ να συγκρίνω το Α4 ( που θα το βάλω στο ΑΙΝ0 υποθέτω) με 4 σήματα ταυτόχρονα?? Αφού η άλλη είσοδος του συγκριτή ρυθμίζεται απτο PE3 και εκεί μπορώ να έχω μόνο ενα σημα

"Συνδέεις" το Α4 στην θετική είσοδο του συγκριτή και θέτεις τη χρήση του multiplexer (αν θυμάμαι καλά ενεργοποιείς το ACME bit του SFIOR), έτσι ώστε η αρνητική είσοδος να παίρνει εισόδους από τα κανάλια του ADC.
"Συνδέεις" έτσι λοιπόν τα Α3-Α0 σε 4 κανάλια του ADC και μετά μέσα σε σοφτγουερ μπορείς να μετατρέπεις ψευτοπαράλληλα τα σήματα. Δηλαδή μέσα σε μια λούπα θα επιλέγεις ποιο κανάλι θέλεις μέσω του ADMUX.
ευχαριστώ!


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: christineL on June 28, 2015, 19:14:50 pm

1) ναι δεν πιστεύω ότι χρειάζεται
2) εγώ προσωπικά όταν δε με βολεύει να χρησιμοποιήσω το 8,9 ή 10bit mode του PWM και ρυθμίζω το TOP μέσω του OCR1A όπως λες (oυσιαστικά το mode 15), τότε για να αλλάζω το duty cycle χρησιμοποιώ τον OCR1B (ουσιαστικά όταν αρχικοποιείς τον TCCR1A βάζεις στα bit COM1B1:0 = 10 ή 11 ανάλογα αν θες non inverting ή inverting), και μέσω της ISR του ΤΙΜER1_COMPB ( στη θέση $001Α) αλλάζω την τιμή του OCR1B για να αλλάξει το duty cycle. Δεν χρησιμοποιώ δηλαδή τον ICR.
Ουσιαστικά δηλαδή το ΤΟP ρυθμίζεται απτον OCR1A και το COMPARE από το OCR1B

Δεν μου φαίνεται λογικό να καλείται interrupt κάθε φορά που το OCR1B έχει την τιμή του TIMER, για το PWM. Δεν ξέρω, τι να πω...


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: christineL on June 28, 2015, 19:27:45 pm
Βασικά κατάλαβα τι εννοείς, απλά δεν χρειάζεται η ISR, για να αλλάξεις την τιμή του OCR1B.


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: themis93 on June 29, 2015, 00:01:14 am
Στην ερώτηση που λέει να πούμε τις διαφορές μεταξύ διακοπών και DMA τι πρέπει να πούμε; Ισχύει ότι στη μέθοδο των διακοπών ο μικροελεγκτής αντιλαμβάνεται ότι υπάρχει αίτημα επικονωνίας ενώ στους DMAC υπάρχει ένα ξεχωριστό κύκλωμα που αντιλαμβάνεται το αίτημα; Υπάρχει άλλη διαφορά;


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: Tracy_McGrady on June 29, 2015, 01:48:14 am
Βασικά κατάλαβα τι εννοείς, απλά δεν χρειάζεται η ISR, για να αλλάξεις την τιμή του OCR1B.
Δοκιμάσατε να φτιάξετε PWM στο AVR??...την έξοδο σας την βγάζει???


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: MG9S on June 29, 2015, 12:58:46 pm
παιδια επειδη δεν το πολυκατάλαβα μπορεί κάποιος να εξηγήσει πώς δουλεύουμε με το pwm?  :)


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: et3rn1ty on June 29, 2015, 13:33:58 pm
Όταν θέλουμε να έχουμε compare output mode (έστω στον Timer0), πχ στο CTC να κάνει toggle το output pin, λέει στο datasheet ότι πρέπει να ορίσουμε το pin αυτό ως output. Ποιό όμως είναι το PORT του, αυτό το λέει κάπου?

Δηλαδή, έστω ότι βάζω τον timer σε CTC mode (WGM01:0=10) και βάζω toggle (COM01:0=01). Πρέπει να ρυθμίσω επιπλέον και το DDR κάποιου port για output?


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: απλυτος on June 29, 2015, 13:39:18 pm
Όταν θέλουμε να έχουμε compare output mode (έστω στον Timer0), πχ στο CTC να κάνει toggle το output pin, λέει στο datasheet ότι πρέπει να ορίσουμε το pin αυτό ως output. Ποιό όμως είναι το PORT του, αυτό το λέει κάπου?

Δηλαδή, έστω ότι βάζω τον timer σε CTC mode (WGM01:0=10) και βάζω toggle (COM01:0=01). Πρέπει να ρυθμίσω επιπλέον και το DDR κάποιου port για output?

είναι το pin OC0 (έτσι λέγεται), το οποίο είναι το pin PB3 δηλαδή το 3ο pin του PORTB

οπότε,

sbi DDRB, 3


Title: Re: [Μικρο ΙΙ] Ασκήσεις-Σχολιασμός Απορίες 2015
Post by: et3rn1ty on June 29, 2015, 13:44:22 pm
Όταν θέλουμε να έχουμε compare output mode (έστω στον Timer0), πχ στο CTC να κάνει toggle το output pin, λέει στο datasheet ότι πρέπει να ορίσουμε το pin αυτό ως output. Ποιό όμως είναι το PORT του, αυτό το λέει κάπου?

Δηλαδή, έστω ότι βάζω τον timer σε CTC mode (WGM01:0=10) και βάζω toggle (COM01:0=01). Πρέπει να ρυθμίσω επιπλέον και το DDR κάποιου port για output?

είναι το pin OC0 (έτσι λέγεται), το οποίο είναι το pin PB3 δηλαδή το 3ο pin του PORTB

οπότε,

sbi DDRB, 3

Χίλια θενξ!