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

Θέμα: Αρχή με τον Atmega8 - μαθήματα μικροελεγκτών N2 (συνέχεια)

  1. #1
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή Αρχή με τον Atmega8 - μαθήματα μικροελεγκτών N2 (συνέχεια)

    Αφού λυπών προμηθευτήκαμε τα απαραίτητα υλικά ( το πρόγραμμα, μικροελεγκτή, προγραμματιστή και υπολογιστή ) αρχίζουμε συνδέοντας τα pin του προγραμματιστή με τα pin του μικροελεγκτή όπως φαίνετε στην παρακάτω φώτο.


    Καλό θα ήταν να τοποθετήσουμε τον μικροελεγκτή πάνω σε ειδική βάση που πωλείτε σε καταστήματα ηλεκτρονικών εξαρτημάτων, ώστε να μην λυγίζουμε και σπάμε τα ποδαράκια του ολοκληρωμένου, και στη συνέχεια την βάση μαζί με το ολοκληρωμένο κολλάμε πάνω σε πλακέτα. Αυτό για να μπορούμε να συνδέουμε και να αποσυνδέουμε τον μικροελεγκτή όταν χρειαστεί.

    Για να μπορεί να γίνει ο προγραμματισμός πρέπει ο μικροελεγκτής να τροφοδοτείται από μία πηγή τάσης των 5 volt. Κάνει επίσης και η πλακέ μπαταρία των 4,5 volt. To πλην συνδέουμε στο GND και το συν στο AVCC στα ποδαράκια του ολοκληρωμένου. Και ήμαστε έτοιμοι να γράψουμε το πρώτο μας πρόγραμμα.

    Ας γράψουμε κάτι απλό για αρχή.. Να κάνουμε το λαμπάκι να αναβοσβήνει.

    Ανοίγω το Сode Vision AVR -- >
    File -- > New -- > επιλέγω Project -- > OK
    Αν εμφανισθεί το μήνυμα «Do you want to use the code wizard» πατάω όχι (No). -- >
    Βάζω όνομα αρχείου .prj -- > OK -- > στην καρτέλα που εμφανίζεται «Configure project mc.rpj» πάω C Compiler -- > επιλέγω το chip που χρησιμοποιώ ( Atmega 8 )
    --- > πατάω OK.
    Στη συνέχεια πάω File -- > New -- > επιλέγω Source -- > και γράφω τον παρακάτω κώδικα :

    Κώδικας:
    #include "mega8.h" //syndeume tin vivliothiki gia ton Atmega8
    #include "delay.h" //syndeume tin vivliothiki gia xronokathisteriseis
    
    void main(void)
    {
    PORTD=0x00; //Eisagume ola ta pin tu port D se 0, diladi anigume oli tin port D
    DDRD=0xFF; //orizume to port D san exwdo
    while (1) // atermon vrogxos while
    {
    PORTD.0=1; //Aanavume to ledaki sto pin D.0 tou port D
    delay_ms(500); // Xronokathisterisi 500 millisecond
    PORTD.0=0; // Svinume to ledaki sto pin D.0 tou port D
    delay_ms(500); // Xronokathisterisi 500 millisecond
    };
    }
    Αποθηκεύω ( File -- > Save as -- > στο φάκελο που αποθήκευσα το αρχείο .prj ) -- > Αλλάζω και το όνομα σε mc.c
    Εχω δημιουργήσει το αρχείο mc.c αλλά δεν το έχω προσθέσει στο project μου. Για να το προσθέσω πάω Porject -- > Configure -- > από δεξιά Add -- > επιλέγω το αρχείο mc.c που δημιούργησα --- > OK -- > και έχω προσθέσει το αρχείο στο project.
    Τώρα πάω Project -- > Compile για να δώ αν έχω κανένα συντακτικό λάθος.
    Αν δεν έχω συνεχίζω Project -- > Build All .
    Τώρα αν πάω στον φάκελο που αποθήκευα τα αρχεία μου μέσα έχει άλλον έναν φάκελο με όνομα Exe, αν τον ανοίξω θα βρω το ζητούμενο mc.hex (στη περίπτωση μου) αρχείο που δημιούργησε το πρόγραμμα μου.
    Για να εισάγω αυτό το αρχείο στον mc μου πρέπει να πάω Tools -- > Chip Programer
    -- > Programm -- > FLASH
    Έχουμε «εισάγει» το πρόγραμμα στον μικροελεγκτή.
    Τώρα αν αποσυνδέσουμε τον μικροελεγκτή από τον προγραμματιστή, του δώσουμε την τροφοδοσία, και συνδέσουμε ένα LED λαμπάκι όπως φαίνετε στο σχήμα.

    θα παρατηρήσουμε ότι θα αναβοσβήνει κάθε 500 mc

    Ακόμα ποιο αναλυτικά μπορείτε να τα βρείτε και στη προσωπική μου ιστοσελίδα :
    http://jonhs.orgfree.com/microcontrollers_turials2.html


    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από master3763 Εμφάνιση μηνυμάτων



    #include "mega8.h" //syndeume tin vivliothiki gia ton Atmega8 #include "delay.h" //syndeume tin vivliothiki gia xronokathisteriseis void main(void) { PORTD=0x00; //Eisagume ola ta pin tu port D se 0, diladi anigume oli tin port D DDRD=0xFF; //orizume to port D san exwdo while (1) // atermon vrogxos while { PORTD.0=1; //Aanavume to ledaki sto pin D.0 tou port D delay_ms(500); // Xronokathisterisi 500 millisecond PORTD.0=0; // Svinume to ledaki sto pin D.0 tou port D delay_ms(500); // Xronokathisterisi 500 millisecond }; }


    Ευχαριστούμε. Τώρα επειδή έχω μερικές ερωτήσεις ως άσχετος από C. Τα χρωματιστά είναι αυτά
    που δεν καταλαβαίνω. Ρωτάω λοιπόν:

    1) Τα δυο include είναι του μεταγλωττιστή της C;
    2) Τι κάνει η συνάρτηση void main (void) με αυτό το όρισμα; Ποια άλλα ορίσματα παίρνει,
    και τί κάνει τότε;

    3) Τι είναι αυτά τα άγκιστρα και το ελληνικό ερωτηματικό;
    4) Τι κάνει η συνάρτηση while με όρισμα 1;
    Ποια άλλα ορίσματα παίρνει,
    και τί κάνει τότε;

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη master3763
    Όνομα
    master3763
    Εγγραφή
    Aug 2007
    Περιοχή
    Αλεξανδρούπολη
    Μηνύματα
    83

    Προεπιλογή

    1) Τα δυο include είναι του μεταγλωττιστή της C;
    Με το include συνδέουμε την βιβλιοθήκη που χρειαζόμαστε
    Στη περίπτωση μας την mega8.h (για τον mc μας) και την delay.h (για χρονοκαθυστέρηση ) Είναι απαραίτητη για τη λειτουργία του delay_ms(500);.

    2) Τι κάνει η συνάρτηση void main (void) με αυτό το όρισμα; Ποια άλλα
    ορίσματα παίρνει,
    και τί κάνει τότε;

    Η συνάρτηση void main (void) είναι μία συνάρτηση που δεν επιστρέφει τίποτα. Διότι στη περίπτωση μας δεν χρειάζεται να επιστρέφεται κάτι. Μέσα της γράφεται όλο το σώμα του κώδικα.

    3) Τι είναι αυτά τα άγκιστρα και το ελληνικό ερωτηματικό;
    Η # και ; είναι στη σύνταξη της C++ . Με την # αρχίζουμε συνήθως τις επικεφαλίδες ( σύνδεση βιβλιοθήκης , οδηγίες στον επεξεργαστή… )
    Και με το ; τελειώνει κάθε εντολή της C++

    4) Τι κάνει η συνάρτηση while με όρισμα 1; Ποια άλλα ορίσματα παίρνει,
    και τί κάνει τότε;

    Το While είναι ο βρόγχος .. ( αν ισχύει η συνθήκη μέσα στις παρενθέσεις τότε εκτελείται αυτό που υπάρχει στα {} όσο ισχύει η συνθήκη. Στη περίπτωση μας το 1 είναι το λογικό 1 η συνθήκη μας. Που είναι πάντα αληθής. Είναι ο λεγόμενος ατέρμον βρόγχος που εκτελείται συνέχεια.

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Ευχαριστώ για την απάντηση. Αλλά δεν κατάλαβα κάτι. Τo αρχεία include που έχω εγώ με το AVR studio για τον ATMega8 είναι το m8.def. Γι αυτό ρωτάω. Τα mega8.h και delay.h έρχονται με τον μεταγλωττιστή της C;

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    Φίλιππε θα μπορούσε να γραφτεί και έτσι void main(), το void μπροστά από την συνάρτηση μας λέει ότι δεν επιστρέφει κάποια τιμή, αν θέλαμε να επιστρέψει έναν integer λ.χ. θα την γράφαμε έτσι int main().

    Με τα #include λέμε στον compiler ότι υπάρχουν μεταβλητές συναρτήσεις κ.α. σε ένα άλλο αρχείο (σε αυτό που δείχνει το #include),
    και την while(1) την κάνουμε να τρέχει συνέχεια πχ. αν ήταν while (a==b) θα έτρεχε μόνο για όσο το α είναι ίσο με το b.



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

    0 Not allowed! Not allowed!

  6. Ένα μέλος ευχαρίστησε τον spiroscfu για αυτό το χρήσιμο μήνυμα:

    FILMAN (15-03-12)

  7. #6
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Ευχαριστώ Σπύρο. Αλλά έχω ακόμα την απορία για τα include. Ξέρω τι κάνουν. Αυτό που ρωτάω είναι στην ουσία πού βρίσκουμε τα συγκεκριμένα αρχεία.

    0 Not allowed! Not allowed!

  8. #7
    Μέλος Το avatar του χρήστη spiroscfu
    Όνομα
    Σπύρος
    Εγγραφή
    Aug 2010
    Περιοχή
    Κέρκυρα
    Μηνύματα
    4.652

    Προεπιλογή

    Τα include είναι oi βιβλιοθήκες που έχει ο κάθε compiler ή τα φτιάνουν διάφοροι και τα ανεβάζουν σε κάποια site.

    0 Not allowed! Not allowed!

  9. #8
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Αυτό ήθελα. Άρα λοιπόν έρχεται με τον μεταγλωττιστή της C.

    0 Not allowed! Not allowed!

  10. #9
    Μέλος
    Όνομα
    Παναγιώτης
    Εγγραφή
    Jan 2011
    Περιοχή
    Αθηνα
    Μηνύματα
    197

    Προεπιλογή

    Τις βιβλιοθήκες αυτές πως ξέρουμε ότι είναι μ αυτό το όνομα? Δηλαδή είναι κοινή η ονομασία για όλες και σε όλους τους compiler? Η αν καλέσω στο AVR Studio το delay.h θα βγάλει λάθος?

    0 Not allowed! Not allowed!

  11. #10
    Μέλος Το avatar του χρήστη FILMAN
    Όνομα
    Φίλιππος
    Εγγραφή
    Dec 2009
    Περιοχή
    Δάφνη, Αθήνα
    Μηνύματα
    11.991

    Προεπιλογή

    Μάλλον όχι. Π.χ. στο AVRStudio και γράφοντας σε assembly, το αντίστοιχο είναι το:
    .include "m8.def"
    Η συνάρτηση delay δεν νομίζω να υποστηρίζεται, εκτός αν φτιάξεις εσύ μια ρουτίνα καθυστέρησης χρησιμοποιώντας κάποιον timer του μ/ε (τα λέω καλά; )

    0 Not allowed! Not allowed!

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

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

  1. Raspberry pi 2 συνέχεια
    By info@kalarakis.com in forum Software Η/Υ
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 25-02-16, 21:08
  2. συνέχεια θέματος που κλειδώθηκε
    By nikknikk4 in forum Γενική Συζήτηση
    Απαντήσεις: 9
    Τελευταίο Μήνυμα: 27-03-15, 15:20
  3. Αρχή με τον Atmega8 - μαθήματα μικροελεγκτών
    By master3763 in forum Μικροελεγκτές
    Απαντήσεις: 44
    Τελευταίο Μήνυμα: 15-03-12, 10:27
  4. καίγονται συνέχεια οι λαμπτήρες
    By dmitspan in forum Ηλεκτρολογικά
    Απαντήσεις: 79
    Τελευταίο Μήνυμα: 19-05-11, 14:58
  5. μετασχηματιστής 12v (συνέχεια..)
    By lucky13 in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 03-03-10, 01:02

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

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