Επιστροφή στο Forum : ATmega32. reading pins value.
Καλησπερα σε ολους.
1 κουμπι 2 led. Αυτο που προσπαθω να κανω ειναι , μολις παταω το κουμπι και για οση ωρα το εχω πατημενο, το led 1 αναβει. Μολις αφησω το κουμπι το led1 σβηνει και το led2 αναβει.
Δυστυχως αυτο που γινεται ειναι 100 Dsec αφου δωσω ταση στον μC το led2 αναβει και δεν γινεται κατι αλλο απο κει και περα. Υποθετω πως για να μην αλλαζει η κατασταση στα led ουσιαστικα δεν διαβαζω την εισοδο σωστα..
PORTB.0 διαβαζει εαν το κουμπι πατηθηκε η οχι.
PORTC.1,2 αλλαζουν κατασταση αναλογα με την κατασταση του κουμπιου.
Ο κωδικας ειναι attached. Καμμια ιδεα?
Ευχαριστω.
Συμφωνα με αυτό που περιγράφεις λέγοντας
μολις παταω το κουμπι και για οση ωρα το εχω πατημενο, το led 1 αναβει. Μολις αφησω το κουμπι το led1 σβηνει και το led2 αναβει.
δεν υπάρχει πουθενά χρόνος? γιατί λοιπόν μπλέκεις τον χρόνο μέσα στο πρόγραμμα?
σου γράφω χοντρικα μια ιδέα.....
if (PORTB.0==1)
{
PORTC.1=1;
PORTC.2=0;
}
else
{
PORTC.1=0;
PORTC.2=1;
}
το hardware σου είναι σωστό?
Αυτο ειναι ενα μερος απο τον κωδικα μονο, προσπαθω να φτιαξω ενα data logger. Μετραω στα οχτω καναλια του avr με τον embeded adc , και το εμφανιζω σε ενα display ( το οποιο φιλοδοξω να χειριζομαι με 4 κουμπια, αρκετα δυσκολοτερο απ οτι το περιμενα..) η το στελνω στο pc. Τον χρονο τον χρειαζομαι για sampling rates, για επικοινωνια με το pc (Usart) και γενικα διαχειριση γεγονοτων. Οχι προς το παρον, σε αυτο το κομματι δεν μπλεκω πουθενα χρονο αν και στην συνεχεια θα παιζει ρολο το ποση ωρα πατηθηκε ενα πληκτρο.
Ναι, ειμαι !σχεδον! σιγουρος πως hardwarικα ειμαι ενταξει.
Παιζωντας λιγο, αφησα το PORTC χωρις τα pull-ups ( tristate) και αυτο που γινετε τωρα ειναι, τα δυο led να εναλλασονται αρκετες φορες το δευτερολεπτο χωρις να εχω πατησει το κουμπι. Πατωντας το κουμπι το led2 σταθεροποιητε αναμενο, ενω το led1 συνεχιζει να αναβοσβηνει.
Ναι, εχεις δικιο, ισως πρεπει να ξεκινισω απο κατι πιο απλο.
Θα το δοκιμασω αυριο μολις γυρισω απο δουλια.
Ευχαριστω πολυ.
:D
Για να διαβασεις το port στους AVR το κανεις με το PINx
Okay... floating inputs...
Οι εσισοδοι δεν επαιρναν ποτε την τιμη 0, με αποτελεσμα ποτε να μην δουλευει σωστα. Εβαλα την πορτα Β στην Vcc και γειωσα τα κουμπια. Αλλαξα αναλογα τισ καταστασεις και τωρα ολα δουλευουν οπως τα περιμενα. Δεν εχω καταλαβει ομως και πολυ καλα τι παιζει με τα internal pull ups, και με το αν ειναι high ή low μια πορτα. Ξερει κανεις κανενα tutor που να δινει περισσοτερη βαρυτητα σε αυτα, γιατι απο το manual λιγα πραγματα καταλαβα.
Okay... floating inputs...
Οι εσισοδοι δεν επαιρναν ποτε την τιμη 0, με αποτελεσμα ποτε να μην δουλευει σωστα. Εβαλα την πορτα Β στην Vcc και γειωσα τα κουμπια. Αλλαξα αναλογα τισ καταστασεις και τωρα ολα δουλευουν οπως τα περιμενα. Δεν εχω καταλαβει ομως και πολυ καλα τι παιζει με τα internal pull ups, και με το αν ειναι high ή low μια πορτα. Ξερει κανεις κανενα tutor που να δινει περισσοτερη βαρυτητα σε αυτα, γιατι απο το manual λιγα πραγματα καταλαβα.
Για internal pullup στο πχ. PD2:
DDRD &= ~(1 << PD2); // Κάνουμε είσοδο το pin
PORTD |= (1 << PD2); // Ενεργοποιούμε το pullup.
Να υποθέσω avr-gcc compiler σε linux ? :D
Στο avrfreaks.net θα βρεις πολλά tutorials και πληροφορίες...
Να υποθέσω avr-gcc compiler σε linux ? :D
Στο avrfreaks.net θα βρεις πολλά tutorials και πληροφορίες...
Κατα κυριο λογο ναι, avr-gcc σε linux, αλλα παιζουν φορες που χρειαζομαι debugger (και δυστηχως το studio ειναι πολυ βολικοτερο απο το kdbg ) οποτε το γυρναω σε Win.
Ψαχνω και εκει, αλλα το προβλημα μου ειναι οτι οταν το θεμα γινετε πολυ technical, τα αγγλικα μου ειναι λιγα. Ειναι παντως πολυ καλο site και παρεχει ποοοολυ πληροφορια.
Ευχαριστω αδερφε.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.