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

Θέμα: Ανεπαρκής (;) μνήμη.

  1. #1
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Post Ανεπαρκής (;) μνήμη.

    Χαίρεται.

    Εδώ κι 1,5 χρόνο ασχολούμαι (με έναυση το αντίστοιχο μάθημα της σχολής) με μικροελεγκτές της Microchip. Στο πέρασμα του χρόνου τα προγράμματά μου γίνονται όλο και πιο 'περίεργα', πιο πολύπλοκα, πιο μεγάλα. Χθες λοιπόν μου συνέβη κάτι για πρώτη φορά και πολύ θα ήθελα να διαβάσω τη γνώμη σας για το τι φταίει και το πια μπορεί να είναι η πιθανή λύση...
    Κάνοντας κάποια στιγμή compile τον κώδικά μου, έφτασα την RAM=18% και την ROM=55%. Με την προσθήκη μίας εντολής ακόμη, μου έβγαζε «Error 71: Out of ROM, A segment or the program is too large MAIN». Αυτό που παρατήρησα ήταν πως όταν έγραφα εντολή για κάποια πόρτα του pic τότε δεν υπάρχει πρόβλημα μνήμης, όταν έγραφα έστω και μία εντολή ακόμη (σε οποιοδήποτε σημείο του κώδικα, είτε σε interrupt, είτε σε συνάρτηση, είτε στο κυρίως πρόγραμμα) που είχε να κάνει με κάποια πράξη, με κάποια καταχώριση σε μεταβλητή, τότε προέκυπτε το συγκεκριμένο λάθος '71'. Είναι δυνατόν από το 55%, μια εντολή να ανεβάζει τη ROM πάνω από το 100%;

    Να αναφέρω ότι χρησιμοποιώ τον PIC 16f877, με τον CCS c compiler (PCWHD v.4.093).

    Σας ευχαριστώ εκ των προτέρων.

    0 Not allowed! Not allowed!
    ...'Θα σε ξεχνάω κάθε μέρα'...

  2. #2
    Μέλος Το avatar του χρήστη navar
    Όνομα
    Kωνσταντίνος
    Εγγραφή
    May 2010
    Περιοχή
    τρικαλα
    Μηνύματα
    3.078

    Προεπιλογή

    μήπως είναι DEMO το πρόγραμμα και τρώς εκεί τον περιορισμό ????
    κάπου το έχω ξαναδεί αυτό το παραπάνω , νομίζω στην codevision !

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Προεπιλογή

    Ναι, free έκδοση ήταν...

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη osek : 18-08-11 στις 04:11
    ...'Θα σε ξεχνάω κάθε μέρα'...

  4. #4
    Μέλος Το avatar του χρήστη aeonios
    Όνομα
    Nik
    Εγγραφή
    Jan 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    2.649

    Προεπιλογή

    Γεια σου φίλε Osek!
    Δεν έχω δει τον κώδικα σου αλλά θα σου προτείνω το εξής, προσπάθησε όσο μπορείς να "ξεφορτώσεις" τον κώδικα σου από την main() και να τον μεταφέρεις σε συναρτήσεις.
    Δεν θυμάμαι πόσο είναι για την rom του 877 η ποσότητα words/page αλλά ένα function πρέπει να μπορεί να χωρέσει σε μια ROM σελίδα μνήμης και αυτό δυστυχώς αφορά και την main() function!! Αν ξεπεράσεις το όριο τρως πόρτα. Οπότε μπορείς να δεις το σφάλμα αυτό θεωρητικά και με λιγότερη free % rom !

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Προεπιλογή

    Φίλτατε aeonios,
    στην αρχή υπέθεσα ακριβώς πως γέμισα την main. Έτσι έσβησα από εκεί κώδικα και έκανα compile κανονικά. Τον κώδικα που έσβησα τον πρόσθεσα σε υπάρχουσα συνάρτηση (τίποτα το ιδιαίτερο η συνάρτηση αυτή ήταν πέντε σειρές και πρόσθεσα τις άλλες πέντε που έσβησα) αλλά και πάλι έβγαλε «Error 71: Out of ROM, A segment or the program is too large MAIN»...

    0 Not allowed! Not allowed!
    ...'Θα σε ξεχνάω κάθε μέρα'...

  6. #6
    Μέλος Το avatar του χρήστη aeonios
    Όνομα
    Nik
    Εγγραφή
    Jan 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    2.649

    Προεπιλογή

    Αν μπορείς να ομαδοποιήσεις τις πέντε εντολές ώστε να φτιάξεις καινούργια συνάρτηση θα ήταν ενδιαφέρον να δεις αν λύνεται το πρόβλημα!Επίσης μήπως γράφει και κάποια άλλα πραγματάκια μετά από το σφάλμα ;

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη aeonios : 18-08-11 στις 13:41

  7. #7
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Προεπιλογή

    Φτιάχνοντας νέα συνάρτηση δεν λύθηκε το πρόβλημα. Μετά το error εμφανίζει κάποια πράγματα ακόμη.
    warnings.jpg

    0 Not allowed! Not allowed!
    ...'Θα σε ξεχνάω κάθε μέρα'...

  8. #8
    Μέλος Το avatar του χρήστη osek
    Όνομα
    Σωκράτης
    Εγγραφή
    Nov 2008
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    109

    Προεπιλογή

    'Έσπασα' την main σε 2 μεγάλες συναρτήσεις και έκανε compile!
    Aeonios, να'σαι καλά!

    0 Not allowed! Not allowed!
    ...'Θα σε ξεχνάω κάθε μέρα'...

  9. #9
    Μέλος Το avatar του χρήστη aeonios
    Όνομα
    Nik
    Εγγραφή
    Jan 2006
    Περιοχή
    Αθήνα
    Μηνύματα
    2.649

    Προεπιλογή

    Χαρά και δική μου που δούλεψε το πρόγραμμα φιλαράκι μου!

    0 Not allowed! Not allowed!

  10. #10
    ΥπερΣυντονιστής Το avatar του χρήστη gsmaster
    Όνομα
    Γιάννης
    Εγγραφή
    Aug 2003
    Περιοχή
    Γιάννενα
    Μηνύματα
    4.444

    Προεπιλογή

    Γνωστό το "πρόβλημα" αυτό, έχεις γράψει μια ρουτίνα που δεν χωράει σε ένα κομμάτι της μνήμης και σου λέει να το μικρύνεις. Φυσικά και υπάρχει γιατρειά, και είναι η χρήση του #separate πριν απο κάποια συνάρτηση που λέει να το κάνει σε ξεχωριστό κομμάτι μνήμης. Το αντίθετο γίνεται με #inline. Δες και στο help της CCS τα λέει πολύ αναλυτικά.

    0 Not allowed! Not allowed!
    Πριν γράψετε ένα νέο θέμα στο φόρουμ, ψάξτε ->εδώ<-, κάτι θα βρείτε που δεν ξέρατε.

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

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

  1. html κώδικας σε Arduino - ανεπαρκής μνήμη
    By lelek in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 05-06-15, 09:26
  2. Μνήμη ATmega16
    By Prithan in forum Μικροελεγκτές
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 13-12-14, 21:29
  3. Αμπερόμετρο με.. μνήμη
    By JimKarvo in forum Ηλεκτρονικά
    Απαντήσεις: 22
    Τελευταίο Μήνυμα: 03-03-10, 12:14
  4. Απαντήσεις: 26
    Τελευταίο Μήνυμα: 10-11-09, 15:54
  5. Μνήμη μικροελεγκτών
    By ALAMAN in forum Μικροελεγκτές
    Απαντήσεις: 10
    Τελευταίο Μήνυμα: 23-10-09, 21:42

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

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