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

Θέμα: Προγραμματισμός σε C

  1. #1
    Νέο Μέλος Το avatar του χρήστη tasosmi
    Όνομα
    Τάσος
    Εγγραφή
    Nov 2009
    Περιοχή
    Καστοριά
    Μηνύματα
    26

    Προεπιλογή Προγραμματισμός σε C

    Καλησπέρα,
    βρήκα κάποιον κώδικα γραμμένο σε C, ο οποίος προορίζονταν να φορτώνεται σε έναν ATmega8 και όριζε το reset pin ως:

    #define RESET_PIN PC6
    atmega8_pinout.gif
    Απόλυτα λογικό θα μου πείτε αφού στον ATmega8 το RESET_PIN είναι επίσης και το PC6.

    Εγώ που θέλω να περάσω αυτόν τον κώδικα σε έναν ATmega32 (όπου το reset pin είναι μόνο του), τι θα πρέπει να κάνω;

    atmega32.gif

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη firewalker
    Όνομα
    Αλέξανδρος
    Εγγραφή
    Mar 2009
    Περιοχή
    Μαγνησία
    Μηνύματα
    442

    Προεπιλογή

    Αν ο κώδικας είναι κατά τα άλλα συμβατός με τον ATmega32 (δύσκολα) απλά εκεί που συνδέονταν το Reset του ATmega8 θα βάλεις το PC6 (pin 28 ) του ATmega32.

    0 Not allowed! Not allowed!
    Γίνε ρεαλιστής, μείνε ονειροπόλος ...

  3. #3
    Νέο Μέλος Το avatar του χρήστη tasosmi
    Όνομα
    Τάσος
    Εγγραφή
    Nov 2009
    Περιοχή
    Καστοριά
    Μηνύματα
    26

    Προεπιλογή

    Ναι όμως στον ATmega8 το reset pin ήταν συνδεδεμένο με τα 5V μέσω μιας αντίστασης 100 ΚΩ. Αν συνδέσω το Pin 28 του ATmega32 με τα 5V μέσω μιας αντίστασης 10 ΚΩ , μήπως πάθει καμιά ζημιά; Γιατί νομίζω κάτι τέτοιο διάβασα στο datasheet.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη tasosmi : 20-10-12 στις 11:30

  4. #4
    Μέλος Το avatar του χρήστη firewalker
    Όνομα
    Αλέξανδρος
    Εγγραφή
    Mar 2009
    Περιοχή
    Μαγνησία
    Μηνύματα
    442

    Προεπιλογή

    Το "RESET_PIN" παρουσιάζεται κάπου αλλού στον κώδικα; Κάτι μου λέει πως όχι. Βασικά χωρίς τον κώδικα...

    0 Not allowed! Not allowed!
    Γίνε ρεαλιστής, μείνε ονειροπόλος ...

  5. #5
    Νέο Μέλος Το avatar του χρήστη tasosmi
    Όνομα
    Τάσος
    Εγγραφή
    Nov 2009
    Περιοχή
    Καστοριά
    Μηνύματα
    26

    Προεπιλογή

    Τα μόνα σημεία που εμφανίζεται μέσα στον κώδικα είναι τα εξής:

    #define RESET_B PC6 --> είναι το ρεσετ πιν του μικροελεγκτή


    /*
    * Switch on and off
    */
    void switch_led(void) {
    static uint8_t led_on = FALSE;
    if (led_on) {
    PORTD &= ~(1 << RESET_B); --> σε αυτή τη γραμμή τι θέλει να πει ο ποιητής;
    led_on = FALSE;
    }
    else {
    PORTD |= (1 << RESET_B); --> όπως και σε αυτήν εδώ;
    led_on = TRUE;
    }
    }

    και τέλος εμφανίζεται και μέσα στη main:

    DDRD |= (1 << RESET_B);

    Ευχαριστώ πολύ πάντως για τις απαντήσεις!

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη agis68
    Όνομα
    Αγις
    Εγγραφή
    Mar 2009
    Περιοχή
    ΑθΗΝΑ Πατήσσια
    Μηνύματα
    2.579

    Προεπιλογή

    Αν ορίσεις στη πρώτη γραμμή το πιν 9 (για το Ατmega32) πιστεύω θα δουλέψει....Μήπως θέλει PORTΒ &= ~(1 << RESET_B); Αντί για port D που έβαλες?....λεω εγώ τώρα!!!




    edit.....προσωπικά παίζω με arduino και όχι avr

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη agis68 : 24-10-12 στις 15:38
    "Την Άνοιξη αν δεν τη βρεις τη φτιάχνεις!"
    Οδ.Ελύτης

  7. #7
    Μέλος Το avatar του χρήστη firewalker
    Όνομα
    Αλέξανδρος
    Εγγραφή
    Mar 2009
    Περιοχή
    Μαγνησία
    Μηνύματα
    442

    Προεπιλογή

    Η DDRD |= (1 << RESET_B); ορίζει το RESET_B (PD6 ή pin 12. PC6=PD6=6 iom8.h, iom32.h ) ως έξοδο. H PORTD |= (1 << RESET_B); ενεργοποιεί (λογικό 1) την έξοδο αυτή και η PORTD &= ~(1 << RESET_B); την απενεργοποιεί (λογικό 0). Αν όλα τα άλλα στο πρόγραμμα σου ταιριάζουν με τον ATmega32 τότε η δήλωση αυτή θα λειτουργήσει χωρίς πρόβλημα.

    Υποψιάζομαι πως ο συγγραφέας του κώδικα από λάθος έγραψε #define RESET_B PC6 ήθελε να γράψει #define RESET_B PD6. Ο κώδικας όμως δουλεύει κανονικά διότι PD6=PC6=6.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη firewalker : 24-10-12 στις 16:25
    Γίνε ρεαλιστής, μείνε ονειροπόλος ...

  8. #8
    Νέο Μέλος Το avatar του χρήστη tasosmi
    Όνομα
    Τάσος
    Εγγραφή
    Nov 2009
    Περιοχή
    Καστοριά
    Μηνύματα
    26

    Προεπιλογή

    Αλέξανδρε πιστεύω πως σωστά ο συγγραφέας έγραψε #define RESET_B PC6 γιατί στον ATmega8 το reset μοιράζεται τον ακροδέκτη του με το PC6 (είναι ο ακροδέκτης 1). Και ευχαριστώ πολύ για τις επεξηγήσεις!!!

    Ο Άγις πιο πάνω έγραψε ότι εγώ (που θέλω να χρησιμοποιήσω τον ATmega32) θα πρέπει να ορίσω το reset του ATmega32 στην αρχή του κώδικα. Όμως αυτό δεν ξέρω πως να το κάνω (ή αν γίνεται) γιατί στον ATmega32 το reset είναι μόνο του. Δεν μοιράζεται τον ακροδέκτη του με τίποτα άλλο.

    Ο κώδικας βρίσκεται στο παρακάτω link:
    http://tinkerlog.com/2007/07/13/inte...-mobile-phone/
    Την όλη κατασκευή του την χωρίζει σε τρία μέρη. Η σελίδα που σας δίνω είναι για το πρώτο.

    0 Not allowed! Not allowed!

  9. #9
    Μέλος Το avatar του χρήστη th_shak
    Όνομα
    Thomas
    Εγγραφή
    May 2007
    Περιοχή
    Μακεδονία
    Μηνύματα
    254

    Προεπιλογή

    Αν το σχηματικό είναι αυτό http://tinkerlog.com/wordpress/wp-co.../01/beacon.png τότε δεν βλέπω να χρησιμοποιεί το RESET pin πουθενά εκτός απο τον ISP Connectror. Κώδικα δεν βρήκα στη σελίδα, αλλά παρόλλα αυτά σου λέω ότι τα περιφεριακά και οι καταχωρητές του MEGA32 και του MEGA8 δεν είναι ίδια και έχουν διαφορές στην ονομασία κτλ. Επίσης το κωμάτι του κώδικα που επισύναψες σε προηγούμενο post, είνα άχρηστο στη λειτουργία του προγράμματος, γιατί ακόμα και λάθος να έκανε στο DEFINE δεν βλέποω να χρησιμοποιεί κανένα Pin 6.

    0 Not allowed! Not allowed!

  10. #10
    Νέο Μέλος Το avatar του χρήστη tasosmi
    Όνομα
    Τάσος
    Εγγραφή
    Nov 2009
    Περιοχή
    Καστοριά
    Μηνύματα
    26

    Προεπιλογή

    Θωμά καταρχήν ευχαριστώ και ναι αυτό είναι το σχηματικό. Το κώδικα τον έχει στο τρίτο μέρος.

    Πρώτο μέρος: http://tinkerlog.com/2007/07/13/inte...-mobile-phone/
    Δεύτερο μέρος: http://tinkerlog.com/2007/07/28/usin...e-gps-tracker/
    Τρίτο μέρος: http://tinkerlog.com/2007/08/08/firm...acking-device/

    Στο σχηματικό δεν το χρησιμοποιεί αλλά (μάλλον, δε βάζω και το χέρι μου στη φωτιά) κάνει reset τον μικροελεγκτή μέσα από τον κώδικα.

    Κώδικα δεν βρήκα στη σελίδα, αλλά παρόλλα αυτά σου λέω ότι τα περιφεριακά και οι καταχωρητές του MEGA32 και του MEGA8 δεν είναι ίδια και έχουν διαφορές στην ονομασία κτλ.
    Οπότε μάλλον θα πρέπει να διαβάσω τα datasheet των συσκευών...

    γιατί ακόμα και λάθος να έκανε στο DEFINE δεν βλέποω να χρησιμοποιεί κανένα Pin 6
    Δεν χρησιμοποιεί πουθενά το pin 6, αλλά το PC6 (που είναι το pin 1 στον ATmega8 )

    ps. Φοβερή η πατέντα σου με το τρυπανάκι Homemade Drill Press for PCB drilling

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη tasosmi : 29-10-12 στις 14:25

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

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

  1. Προγραμματισμός microcontroller
    By jackie1989 in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 27-01-15, 14:27
  2. Προγραμματισμός PLC
    By oceanborn in forum Αυτοματισμοί
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 23-10-11, 19:16
  3. Προγραμματισμός AVR σε C...
    By Thansavv in forum Μικροελεγκτές
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 13-10-09, 19:56
  4. προγραμματισμός PIC16F874A
    By mad_inventor in forum Μικροελεγκτές
    Απαντήσεις: 43
    Τελευταίο Μήνυμα: 10-09-09, 14:25
  5. Προγραμματισμός σε dragon
    By babarisp in forum Μικροελεγκτές
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 03-02-09, 03:07

Tags for this Thread

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

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