Σελίδα 2 από 3 ΠρώτηΠρώτη 1 2 3 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 11 έως 20 από 24

Θέμα: C Driver/Library για οθόνη με SH1101A Controller

  1. #11
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από spiroscfu Εμφάνιση μηνυμάτων
    ...Τη κάνει το WORD στην DelayMs()?
    Κώδικας:
     void DelayMs(WORD time)
     {
         unsigned delay;
    
         while(time--)
             for(delay=0; delay<DELAY_1MS; delay++)
                 ;
     }
    το for είναι αναμονή περίπου 1 μονάδας χρόνου (πιθανά milisec) και το time είναι ο επιθυμητός αριθμός milisec.
    Το WORD είναι ο τύπος της μεταβλητής (που έχει γίνει με typedef ή define κάπου σαν ψευδώνυμο του unsigned).

    Ποιό απλή - ευανάγνωστη - ακριβείας θεωρώ την delayX:
    Κώδικας:
    #define OSCIL	8000000	//4MHz osc
    
    void delayX(WORD msec){
    	//το 1msec είναι καθυστέρηση OSCIL/4/1000.
    	//π.χ. 42MHz : 42000000/4/1000 = 10,5 χιλιάδες TCy
    #if OSCIL==8000000
    	while(msec--)
    		Delay1KTCYx(2);//2000 TCy delay is 1msec for 8MHz oscillator
    #elif OSCIL==16000000
    	while(msec--)
    		Delay1KTCYx(4);//4000 TCy delay is 1msec for 16MHz oscillator
    #elif OSCIL==32000000
    	while(msec--)
    		Delay1KTCYx(8);//8000 TCy delay is 1msec for 32MHz oscillator
    #elif OSCIL==40000000
    	while(msec--)
    		Delay1KTCYx(10);//10000 TCy delay is 1msec for 40MHz oscillator
    #else
    	#error "OSCIL unknown, add delay code for your oscillator"
    #endif
    }

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    Α! οκ νόμιζα πως θα είναι κάποιο περίεργο του hitech.

    Κώδικας:
    //************klik add on begin************ 
    void main(void){    
                            Nop();     
                            DelayMs(10);     
                            Nop();     
                            delayX(10);    
                            Nop();
                         }
    Και το delayX τι είναι τούτο πάλι?

    Δεν σε πρόλαβα.

    0 Not allowed! Not allowed!

  3. #13
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Μιά άλλη συνάρτηση καθυστέρησης που χρησιμοποιεί την standard βιβλιοθήκη της microchip (δες το delays.h header αρχείο)
    Κώδικας:
    void delayX(WORD msec){
        //το 1msec είναι καθυστέρηση OSCIL/4/1000.
      //π.χ. 8MHz : 8000000/4/1000 = 2 χιλιάδες TCy
    while(msec--)
          Delay1KTCYx(2);//καθυστέρησε 2000 κύκλους εντολών (TCy)
    }

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

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

    spiroscfu (30-05-12)

  5. #14
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από spiroscfu Εμφάνιση μηνυμάτων
    Δεν σε πρόλαβα.

    0 Not allowed! Not allowed!

  6. #15
    Μέλος Το avatar του χρήστη lordi
    Όνομα
    Đorđe
    Εγγραφή
    Dec 2007
    Περιοχή
    Cache
    Μηνύματα
    388

    Προεπιλογή

    Δοκίμασα αυτό με την συνάρτηση απ την delay αλλά πάλι συμβαίνει το ίδιο πράγμα!

    Θα προσπαθήσω να κοιτάξω κάποια στιγμή σήμερα αυτό που λες με το data segment γιατί δεν το κατέχω καλά και θα ενημερώσω!

    Ευχαριστώ πολύ για την βοήθεια!!

    0 Not allowed! Not allowed!
    P Σώστε ένα δέντρο και προστατέψτε το περιβάλλον μας.
    Μην το τυπώνετε αν πραγματικά δεν υπάρχει λόγος.

  7. #16
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Αν θέλεις zipάρισε το project και στείλε το να το δω.
    Ο επεξεργαστής σου υποστηρίζει extended instruction set. Να το έχεις ενεργό (βοηθά πολύ στον κώδικα διευθυνσιοδότησης).
    Έχεις ελέγξει ότι τα optimization είναι disabled;
    Ανέβασε το dissasembly από τη συνάρτηση DelayMS() με τη χρήση της delay.h.

    0 Not allowed! Not allowed!

  8. #17
    Μέλος Το avatar του χρήστη lordi
    Όνομα
    Đorđe
    Εγγραφή
    Dec 2007
    Περιοχή
    Cache
    Μηνύματα
    388

    Προεπιλογή

    To project που τεστάρω εδώ που μιλάμε είναι αυτό που έχω κάνει post στην αρχή του thread (απλά το έχω κάνει import στο MPLAB X). Έχω και αυτά τα δυο project που επισυνάπτω τα οποία είναι η βιβλιοθήκη που θέλω να φτιάξω και το άλλο απλά ένα test project για να την δοκιμάζω αλλά δεν είναι ακόμα σε λειτουργικό επίπεδο (περισσότερο copy paste είναι απ το αρχικό project για να δοκιμάσω πως λειτουργούν τα library projects του MPLABX). Τα optimizations είναι σίγουρα κλειστά, τα κλείνω απ τα options του compiler στα properties του project (disable all).

    Ευχαριστώ για το ενδιαφέρον και πάλι!
    Συνημμένα Αρχεία Συνημμένα Αρχεία

    0 Not allowed! Not allowed!
    P Σώστε ένα δέντρο και προστατέψτε το περιβάλλον μας.
    Μην το τυπώνετε αν πραγματικά δεν υπάρχει λόγος.

  9. #18
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Λοιπόοοον, σε μένα δουλεύει. Το loop εκτελείται κανονικά.
    Ο υπολογιστής που χρησιμοποιώ, είναι ένας παλιός server PentiumIIIx2 με μπόλικη RAM και σέρνεται με το mplab-x.
    Το project το έβαλα (χωρίς αλλαγές στα αρχεία εκτός τις 2 γραμμές #include στο main.c) στο mplab v8.50
    Ο mcc18 που χρησιμοποίησα είναι ο v3.32.
    O mplink είναι 0 4.32.

    Οπως βλέπεις στην εικόνα που επισυνάπτω, το milliseconds loop έχει εκτελεστεί τις φορές που του ζήτησες (9 για την ακρίβεια), έχει γίνει 0 και στον (τελευταίο) έλεγχο (while(milliseconds--)) που τερματίζει το loop, γίνεται 65535 (φυσιολογικά).
    x1a.jpg
    μερικές (μικρές) διορθώσεις:
    στην BYTE ugd_get_pixel(BYTE x, BYTE y) δεν επιστρέφεις τιμή σε όλα της τα return
    στο main.c πρέπει να έχεις
    Κώδικας:
    #include <p18f46j50.h>        //για να μπορείς να χρησιμοποιήσεις ακίδες/περιφερειακά ειδικά για τον μΕ αυτό
    #include "../ugraph.x/driver.h"
    Χρησιμοποίησα EXTENDED MODE.
    Δεν βλέπω να χρησιμοποιείς πολλά δεδομένα ή κώδικα, άρα δεν νομίζω ότι έχεις πρόβλημα stack.

    0 Not allowed! Not allowed!

  10. #19
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.563

    Προεπιλογή

    Με mcc18 -v βλέπεις την έκδοση του compiler που έχεις.
    (Παλιότερη έκδοση είχε σφάλμα στα loop, αλλά με την 3.32 έχω την ησυχία μου)
    Στο build output λέει την έκδοση του mplink.

    Γράψε τις εκδόσεις των 2 αυτών εργαλείων.
    Βάλε και το build output για να δω τα command line options που έχουν χρησιμοποιηθεί.


    ΥΓ. Το αν θα είναι mplab ή mplab-X δεν έχει να κάνει με το build αλλά με άλλα εργαλεία (περιλαμβανομένου του debbuger).

    0 Not allowed! Not allowed!

  11. #20
    Μέλος Το avatar του χρήστη lordi
    Όνομα
    Đorđe
    Εγγραφή
    Dec 2007
    Περιοχή
    Cache
    Μηνύματα
    388

    Προεπιλογή

    Στο main.c έχω αυτό: #include <p18cxxx.h> που με την σειρά του κάνει include το p18f46j50.h . Πρόσθεσα και το header file του driver.

    Οι εκδόσεις που έχω είναι αυτές:

    C18 3.40 και
    mplink 4.40!

    To output είναι αυτό:
    Κώδικας:
    make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
    make[1]: Entering directory `E:/Projects/MPLAB X/uGraphTest.X'
    cd ../uGraph.X && make  -f Makefile CONF=default
    make[2]: Entering directory `E:/Projects/MPLAB X/uGraph.X'
    make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
    make[3]: Entering directory `E:/Projects/MPLAB X/uGraph.X'
    make  -f nbproject/Makefile-default.mk dist/default/production/uGraph.X.lib
    make[4]: Entering directory `E:/Projects/MPLAB X/uGraph.X'
    make[4]: `dist/default/production/uGraph.X.lib' is up to date.
    make[4]: Leaving directory `E:/Projects/MPLAB X/uGraph.X'
    make[3]: Leaving directory `E:/Projects/MPLAB X/uGraph.X'
    make[2]: Leaving directory `E:/Projects/MPLAB X/uGraph.X'
    make  -f nbproject/Makefile-default.mk dist/default/production/uGraphTest.X.production.hex
    make[2]: Entering directory `E:/Projects/MPLAB X/uGraphTest.X'
    "C:\piccompilers\mplabc18\v3.40\bin\mcc18.exe"  -p18F46J50   -I "C:\piccompilers\mplabc18\v3.40\bin"\\..\\h  -fo build/default/production/main.o   main.c 
    "C:\piccompilers\mplabc18\v3.40\bin\mplink.exe"    -p18f46j50  -w    -z__MPLAB_BUILD=1  -u_CRUNTIME -l "C:\piccompilers\mplabc18\v3.40\bin"\\..\\lib  -o dist/default/production/uGraphTest.X.production.cof  build/default/production/main.o  ..\uGraph.X\dist\default\production\uGraph.X.lib 
    MPLINK 4.40, Linker
    Device Database Version 1.3
    Copyright (c) 1998-2011 Microchip Technology Inc.
    Errors    : 0
    
    MP2HEX 4.40, COFF to HEX File Converter
    Copyright (c) 1998-2011 Microchip Technology Inc.
    Errors    : 0
    
    make[2]: Leaving directory `E:/Projects/MPLAB X/uGraphTest.X'
    make[1]: Leaving directory `E:/Projects/MPLAB X/uGraphTest.X'
    
    BUILD SUCCESSFUL (total time: 13s)
    Loading E:/Projects/MPLAB X/uGraphTest.X/dist/default/production/uGraphTest.X.production.hex...
    Loading E:/Projects/MPLAB X/uGraphTest.X/dist/default/production/uGraphTest.X.production.cof...
    The Extended CPU Mode configuration bit is enabled, but the program was not built using extended CPU instructions.  Therefore, your code may not work properly.
    Loading completed
    Connecting to programmer...
    Programming target...
    Programming completed
    Running target...
    Αυτό που λες για το extended mode που το ορίζεις? Αμα δείς με κόκκινο έχω σημειώσει κάτι στο output που αφορά σε αυτό ακριβώς!
    Ευχαριστώ για άλλη μια φορά!

    0 Not allowed! Not allowed!
    P Σώστε ένα δέντρο και προστατέψτε το περιβάλλον μας.
    Μην το τυπώνετε αν πραγματικά δεν υπάρχει λόγος.

Σελίδα 2 από 3 ΠρώτηΠρώτη 1 2 3 ΤελευταίαΤελευταία

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

  1. Βοήθεια για CNC controller/driver.
    By ninjanody in forum Διάφορα Κυκλώματα
    Απαντήσεις: 22
    Τελευταίο Μήνυμα: 09-02-15, 11:39
  2. Driver για USB to RS485
    By Kokshare in forum Software Η/Υ
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 18-10-13, 23:35
  3. Driver για IRF 730
    By ΜαστροΣάββας in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 12-04-12, 13:38
  4. SOS ΒΟΗΘΕΙΑ ΓΙΑ LIBRARY ARDUINO+EASYSTEPPER DRIVER
    By ΓΙΑΝΝΗΣ ΚΑΣΤΟΡΙΑ in forum Μικροελεγκτές
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 24-02-12, 17:37
  5. Χρειάζομαι driver για τα mosfet ή όχι;
    By ikonsgr in forum Ηλεκτρονικά
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 13-04-10, 20:08

Tags for this Thread

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

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