Επιστροφή στο Forum : Κύκλωμα με ΑVR
Πώς μπορώ να φτιάξω ένα κύκλωμα με 10 LED να αναβοσβίνουνε το ένα μετά το άλλο :?:
Το κύκλωμα θέλω να είναι με μικροελενκτή AVR για αρχάριους.
Για εργασια σε σχολη είνα η δεν υπαρχουν περιορισμοι στον τρόπο λειτουργίας?
Έχει καθόλου εμπιρία σε προγραμματισμό AVR?
Οχι δεν είναι εργασία αυτό το θέλω για μένα για να
μάθω να χρησιμοποιώ τους AVR.
Δεν έχω καθόλου εμπιρία οπότε ας είναι ότιδίποτε αρκεί να με βοηθήσετε
στους κώδικες και στον προγραμματισμό.
Θα κατεβάσεις κάποιον compiler (Www.mikroe.com)
και θα δείς τα παραδείγματα....
είναι πολύ εύκολο ;)
Που ακριβώς πρέπει να ψάξω εκει μέσα λέει
όλο για PIC, εγώ θέλω AVR.
http://www.mikroelektronika.co.yu/english/product/compilers/compilers.htm
mikrobasic/micropascal for AVR (στο τέλος της σελίδας)
ALAMAN
Ο Γοοοούυγλης είναι φίλος σου..... (http://www.google.gr/search?hl=el&q=AVR+tutorial+stk500)
και συγκεκριμένα.... http://www.avrfreaks.net/index.php?module=dpDocs&func=index&cid=10 χρειάζεται να κάνεις εγγραφή και έχει ένα ωραίο οδηγό για το STK500. Στο ίδιο site μπορείς να βρείς ότι θες για AVR
Παιδειά! Ελεος μην τον τρελάνεται τον ALAMAN!
Διάβασα σε άλλο post οτι έχεις το STK. Άρα από εργαλεία είσαι OK!
Έχεις το AVR studio που έχει assembler και simulator και έχεις και πλακέτα προγραμματισμού. Δεν χρειάζεσε κάτι άλλο.
Ασε τους compiller και τις γλωσσες προγραματισμού υψηλού επιπέδου που σου λένε για αργότερα!
Τώρα το μόνο που χρειάζεται είναι μελέτη πειραματισμό και λίγο βοήθεια που θα την έχεις σίγουρα!
Πριν σου πω για το τρεχαντηράκι σου θα κοιτάξω να σου πώ για το ηλεκτρονικό ζάρι στο άλλο post που έκανες.
για να λύνοντε ένα ενα τα προβλήματα.
Μα σας είπα εγώ στο μόνο που δυσκολεύομαι είναι στην συνδεσμολογία πάνω στον
προγραμματιστή, στην τοποθέτηση του προγραμματιστή και στους κώδικες διοτι
όπως είπα και σε άλλο ποστ μέσα στους κώδικες αφήνη σειρές και καμιά φορά μεγάλα
κενά και δεν ξέρω πως να τους γράψω.
Αρχικα πρεπει να εχεις το STK500 η STK300 η STK200 η καποιο αλλο αναλογο αναπτυξιακο (που μαλλον το εχεις)
Πειραματισου αρχικα με τα 8 LED που υπαρχουν στο αναπτυξιακο.
Αν σου δουλεψουν σωστα τοτε πειραματισου με 10 LED.
Στον BASIC compiler η assembler προσεξε τη διαχειριση τω καταχωρητων DDRx και PORTx
O Data Direction Register (DDRx) Καθοριζει αν ενα PORT ειναι εισοδος η εξοδος.
Το PORTx καθοριζει την κατασταση του PORT.
Τελικά προγραμμάτισα τον μικροελενκτή ATtiny2313 και τον ATmega8515
και έκανα τα led να αναβοσήνουν το ένα μετά το άλλο, με το πρόγραμμα microbasic το έκανα hex. και
στη συννέχεια το φόρτωσα με το AVR studio 4.0. η ερώτησή μου είναι η εξής:
Με το AVR studio 4.0 πώς μπορώ να κάνω hex την Assembly προσπάθησα αρκετές φορές αλλα τίποτα.
Τα led πώς μπορώ να τα κάνω να αναβοσβήνουν διαφορετικά με το πάτημα ενος μπουτόν. (σαν το χριστουγεννιάτικο δέντρο)
Στο πρόγραμμα microbasic όταν βάζω "delay_ms(1000)" δηλαδή ένα δευτερόλεπτο τα led αναβοσβήνουν καθε 8 δευτερόλεπτα. Γιατί το κάνει αυτό, δεν καταλαβαίνω
Γιατί οταν γράφω την εντολή ddrb=1 ανάβει μόνο το pin0 της θύρας b και τα άλλα αναβοσβήνουν παρα πολύ σιγά
ανογκαστικά γράφω:
ddrb.0=1
ddrb.1=1
ddrb.2=1
ddrb.3=1
ddrb.4=1
ddrb.5=1
ddrb.6=1
ddrb.7=1
θα προσπαθήσω αύριο ή μεθάυριο να ανεβάσω τον κώδικα να τον δείτε, όπως είπα είναι γραμμένος σε microbasic.
Καλως ήρθες στον μαγικό κόσμο των μικροελεκτών.
...
Στο πρόγραμμα microbasic όταν βάζω "delay_ms(1000)" δηλαδή ένα δευτερόλεπτο τα led αναβοσβήνουν καθε 8 δευτερόλεπτα. Γιατί το κάνει αυτό, δεν καταλαβαίνω
....
Αυτο μου φαίνεται σαν να έχεις βάλει λάθος συχνότητα στον ταλαντωτή.
Γιατί οταν γράφω την εντολή ddrb=1 ανάβει μόνο το pin0 της θύρας b και τα άλλα αναβοσβήνουν παρα πολύ σιγά
ανογκαστικά γράφω:
ddrb.0=1
ddrb.1=1
ddrb.2=1
ddrb.3=1
ddrb.4=1
ddrb.5=1
ddrb.6=1
ddrb.7=1
θα προσπαθήσω αύριο ή μεθάυριο να ανεβάσω τον κώδικα να τον δείτε, όπως είπα είναι γραμμένος σε microbasic.
Αν και δεν εχω ασχοληθεί καθόλου με AVR , μάλλον πρέπει να γραψεις ddrb=255 , δηλαδη ολα εξοδοι (αφου το εχεις βαλει σε δεκαδική μορφή)
Τι διαφορά έχει το ddr από το port :?:
Αυτο μου φαίνεται σαν να έχεις βάλει λάθος συχνότητα στον ταλαντωτή.
Αν εννοείς τον κρύσταλο, στο πρόγραμμα μέσα έβαλα 8 MHz και στον μικροελεγκτή το ίδιο.
O Data Direction Register (DDRx) Καθοριζει αν ενα PORT ειναι εισοδος η εξοδος.
Το PORTx καθοριζει την κατασταση του PORT.
Αλλα το παράξενο είναι οτι δουλεύει και χωρίς κρύσταλο.
Νά και οι κώδικες:
program led_blinking
main:
ddrb.0=1
ddrb.1=1
ddrb.2=1
ddrb.3=1
ddrb.4=1
ddrb.5=1
ddrb.6=1
ddrb.7=1
while true
portb.0=1
portb.1=0
portb.2=0
portb.3=0
portb.4=0
portb.5=0
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=1
portb.2=0
portb.3=0
portb.4=0
portb.5=0
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=1
portb.3=0
portb.4=0
portb.5=0
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=0
portb.3=1
portb.4=0
portb.5=0
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=0
portb.3=0
portb.4=1
portb.5=0
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=0
portb.3=0
portb.4=0
portb.5=1
portb.6=0
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=0
portb.3=0
portb.4=0
portb.5=0
portb.6=1
portb.7=0
delay_ms(40)
portb.0=0
portb.1=0
portb.2=0
portb.3=0
portb.4=0
portb.5=0
portb.6=0
portb.7=1
delay_ms(40)
wend
end.
Και όπως έλεγα αν το delay το βάλω 1000ms θα περιμένει περίπου 8 δευτερόλεπτα
Αν στο main βάλω μόνο ddrb=1 τοτε θα ανάβει μόνο το pin0 της θύρας portb
Μήπως το έχεις προγραμματίσει να δουλέυει με τον εσωτερικό ταλαντωτή?
Αυτό σκέφτηκα και εγώ μήπως το έκανα κατα λόθος.
Τώρα μου έτυχε κάτι άλλο. Οταν βάζω ddrb=255 όπως είπε ο φίλος μας ο savnik
δουλέυει για περίπου 1,3-1,5 δευτερόλεπτα πάντως το μέτρησα ένα δευτερόλεπτο δεν είναι
με τίποτε.
Τα led μπορούμε να τα κάνουμε να ανάβοσβήνουν πιο αργα και πιο γρήγορα
με την ρύθμυση ενός ποτενσιομέτρου ή να ελέγχουμε τα led με ένα ή περισότερα μπουτόν.
φιλε chip εχω το avr studio 4 μπορεισ να μου εξηγησεις λιγο πως δουλευει???το assembler και simulator δεν το βρησκω καπου
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.