Προς το περιεχόμενο

έλεγχος καταχωρητών-μνήμης του PC με τον C++Builder


contest

Προτεινόμενες αναρτήσεις

Δημοσ.
1)

το firmware θα το γράψω σε assembly που ξέρω.....

ιτ'σ απ του γιου

 

2)

Αν εχω PIC με ταλαντωτή 4MHz -συχνότητα χρονισμου θα εχω 1μsec κύκλο μηχανής άρα ρουτινα χρονοκαθυστέρησης 1000 loop για να παράγει το 1ms που απαιτείται για να λάβει τον 2ψήφιο δεκαεξαδικο χαρακτήρα?

λάθος στον αριθμό 1000: πρέπει να υπολογίσεις και τα goto και τους ελέγχους, αλλιώς θα πας πάνω απο το 1msec.

 

3)

α) εχω κανει εναν PIC να διαβάζει τις προτασεις ASCLL "$..." ενος gps πως θα μπορέσω με μια συνάρτηση να διαβάζω τις προτάσεις "ASCLL χαρακτηρες" και να τις αποθηκεύω στην μνήμη του PC???

να συνδέσεις το gps με το pc αντί για τον pic ή να συνδέσεις το Tx του GPS στο RX του PIC ΚΑΙ στο RX του pc ταυτόχρονα και να διαβάζει απ'ευθείας το pc.

Αλλιώς θέλεις μικροελενκτή με 2 UART (σειριακές πόρτες), μια για συνδεση pic με το pc και μια για συνδεση pic με το gps.

 

β) και ποια συνάρτηση υπάρχει σαν την getcmd()

Την getcmd την εφτιαξα εγω όταν σου έγραφα το μήνυμα (δεν θα τη βρείς σε βιβλια όπως είναι).

 

(π.χ. putcmd) η οποία κανει την αντίθετη λειτουργια, δηλαδη να στέλνει 2 δεκαεξαδικά ψηφία στον PIC και το firmware του να ενεργοποιει την αντιστοιχη πορτα αναλλόγος??

Απο το pc τυπώνεις δεκαεξαδικά με πολλούς φυσικά τρόπους, π.χ.

>printf("%02x",number);

 

4)

μπορεις να κανεις ενα παράδειγμα με την readcom() που θα διαβάζει ενα χαρακτήρα (π.χ. το $) και πως θα τον αποθηκευει σε μεταβλητη του software ?

με δουλεύεις;

>char x = readcom(); 

 

 

Υ.γ. δεν μπορω να βρω βιβλια που να εχουν αυτες τις συναρτησεις...

Ποιές συναρτήσεις; παραδείγματα είναι απο κώδικα που λειτουργεί. Δεν περιέχονται στη γλώσσα για να τα βρείς σε βιβλία. Μπορεί να υπάρχει documentation απο τον κατασκευαστή (τα παραδείγματα που δίνει η microchip έχουν επαρκές documentation).

Ο καλύτερος κώδικας είναι αυτός που περιγράφει απο μόνος του τι κάνει και δεν χρειάζεται documentation και πολλές διευκρινησεις.

 

υγ: Έχεις σκεφτεί τι θέλεις να κάνεις;

Είπες ότι ξέρεις assembly σε PIC και ότι έχεις συνδέσει PIC με GPS. Ποιόν PIC;

Γιατί θέλεις να στείλεις τα δεδομένα στο PC και να ξαναπάρεις απαντήσεις πίσω (και δεν τα κάνεις στον PIC);

Δημοσ.

λάθος στον αριθμό 1000: πρέπει να υπολογίσεις και τα goto και τους ελέγχους, αλλιώς θα πας πάνω απο το 1msec.

ναι το ξερω......

 

 

>char x = readcom(); 

μπορεις να γραψεις πως σκεφτεσαι την συναρτηση readcom() που θα διαβάζει τις πορτες του pic ή απο την σειριακή θυρα τα δεδομένα του gps?

 

 

να συνδέσεις το gps με το pc αντί για τον pic ή να συνδέσεις το Tx του GPS στο RX του PIC ΚΑΙ στο RX του pc ταυτόχρονα και να διαβάζει απ'ευθείας το pc.

Αλλιώς θέλεις μικροελενκτή με 2 UART (σειριακές πόρτες), μια για συνδεση pic με το pc και μια για συνδεση pic με το gps.

ναι, υπαρχει ενα θεμα εδω....πρεπει να επιλεξω επειδη θα παω σε PIC18Fxxx αφου θελω 2 USART σε ενα PIC αλλα αν το συνδεσω στην αλλη σειριακη θυρα θα διαβάζω με τα δεδομένα με τον readcom() σωστα?

 

 

>printf("%02x",number);

εκτος απο αυτην την printf() καμια αλλη? να στελνουμε π.χ στην PORTA τον h'05'

 

Είπες ότι ξέρεις assembly σε PIC και ότι έχεις συνδέσει PIC με GPS. Ποιόν PIC;

Γιατί θέλεις να στείλεις τα δεδομένα στο PC και να ξαναπάρεις απαντήσεις πίσω (και δεν τα κάνεις στον PIC)

εχω συνδεσει ενα gps garmin σε εναν PIC16F876 αποθηκευα τις προτασεις και ενεργοποιουσε καποιες πορτες αλλα δεν ειχα αρκετο χωρο στην μνημη του PIC

Δημοσ.

μπορεις να γραψεις πως σκεφτεσαι την συναρτηση readcom() που θα διαβάζει τις πορτες του pic ή απο την σειριακή θυρα τα δεδομένα του gps?

ανάγνωση απο σειριακή:

έχει άπειρα link στο internet [google is your friend;)], σ'αυτό την ονομάζει getch() τη συναρτηση που διαβάζει απο τη buffer της σειριακή (την οποία φυσιολογικά τη γεμίζει ένα interrupt service routine).

 

εκτος απο αυτην την printf() καμια αλλη? να στελνουμε π.χ στην PORTA τον h'05'
γιατί, τι πρόβλημα έχει η printf; Αν γράψω δικιά μου έκδοση, θα ζητάς λεπτομέριες για το πως δουλεύει εκείνη.

 

Όταν έχεις πρόβλημα μνήμης με assembly και 8K words (που είναι περισσότερα απο 8kbytes), κάποιο λάθος έχεις κάνει...

Με pic18f1320 (8kbytes rom,256bytes ram) και C, υπάρχει κώδικας που χειρίζεται gsm modem με αποστολή και λήψη sms, έχει πάνω του ρελέ με αντλία και ηλεκτροβάνες (κάνει αυτόματο πότισμα με γεωτρηση), ζητά περιοδικά απο τον πάροχο κινητής τηλεφωνίας το υπόλοιπο του λογαριασμού, στέλνει feedback στον ιδιοκτήτη και φυσικά παραμετροποιήται απο τον ιδιοκτητη με sms.

 

Πρώτα μάθε καλά τα εργαλεία σου και μετά μπες στα βαθιά.

Κάνε κανένα προγραμματάκι στο pc να στέλνει στη σειριακή.

Κάνε κανένα firmware σε pic να διαβάζει σειριακή και αν τελειώνοντας αυτά τα δυο, έχεις κάποιο πρόβλημα τα λέμε πάλι.

 

Εχει φτάσει να γραφω σεντονια χωρις να είμαι βέβαιος αν κατάλαβες κάτι.

Δημοσ.
καταλαβαινω πολλα.....οκ επανερχομαι μετα......

αυτό δεν είναι αρκετό feedback για να το διασταυρώσω! Και συνεχίζω να έχω αμφιβολίες...

 

(ξέχασα να σου πω ότι ο ιδιοκτήτης του αυτοματισμού που περιέγραψα, είναι στις Σέρρες - που αναγράφει και το profile σου)

Δημοσ.

η πτυχιακη που εκανα για την κτηση του πτυχιου μου ηταν " πλοηγηση αυτοκινητου μεσω gps" αυτην θα την κατωχυρωνα ως εβρεσυτεχνια αλλα σκεφτομαι να την αναβαθμισω γιατι σε εναν PIC 16F876 δεν χωρανε εστω ο ποιο μικρος χαρτης και ο ελεγχος 2 βηματικων κινητηρων η αποθηκευση των συντεταγμενων και ο ελεγχος του, που θα πηγαινει σε καθε διευθυνση.........

Δημοσ.

Μπορείς να βάλεις pic18f4550 με τους χάρτες σε ένα usb στικάκι. Αν πάλι δεν φτάνει η ROM, πέρνεις κανένα απο τα γαϊδουράκια με τα 256Kbytes (ή και παραπάνω) και usb διασύνδεση.

 

---------- Προσθήκη στις 13:50 ---------- Προηγούμενο μήνυμα στις 13:42 ----------

 

Υπάρχει και η δυνατότητα χρήσης σειριακής eeprom 128Kbytes (24c1024) αλλά δεν ξέρω αν αρκεί η ταχύτητα της για την περίπτωση σου.

Δημοσ.

ξερει κανεις να μου πει σε ποιές βιβλιοθήκες της C++ ειναι οι συναρτήσεις

 

α) bioscom();

β)

>CreateFile( gszPort,
  GENERIC_READ | GENERIC_WRITE,
                 0,
                 0,
                 OPEN_EXISTING,
                 0,
                 0);

γ) τι ειναι το HANDLE και τι πρεπει να κανω για να τον δεχτει ο Compiler της C++ Builder??? και αν μπορει να τον δεχτεί ο compiler Borland C++ v 5.02??

 

d)SetCommState(); & getCommState();

Δημοσ.

Ποιο handler? Αν λες αυτο που σου επιστρεφει η CreateFile.... Με λιγα λογια, ειναι αντιστοιχο του FILE pointer. πχ FILE *file = fopen(..) HANDLE file = CreateFile(..)

ΥΓ αν πας με CreateFIle ξεχνα τα fread/write etc. Δες εδω

Δημοσ.

εχω βρει 2-3 μεθοδους που κανουν serial communication αλλα το θεμα ειναι οτι δεν δινουν τις βιβλιοθηκες που πρεπει να συμπεριλαβω π.χ

>
#include <windows.h>
#include <bios.h>
.
.
.

και ολα νομιζω προερχονται απο msdn library....

Δημοσ.

Στην MSDN, πχ αν πατησεις αυτη τη συναρτιση σου λεει κατς κατω το τι θελει πχ

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

WinBase.h (include Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

Δημοσ.

και πως μπορω να τις κατεβασω αυτες τις βιβλιοθήκες? αυτες δεν ειναι στις standar βιβλιοθηκη της C++ σωστά? άρα πρεπει να την κατεβασω και να την βάλω στο φακελο στο οποίο υπαρχουν τα αρχεια του project μου?

Δημοσ.

αυτην η βιβλιοθηκη μπορει να χρησιμοποιείται απο τον Builder μονο ή και απο την απλη C++?

συμπεριλαμβανεται στο project

 

>#include "kernel32.dll" 
      ή
#include <kernel32.dll>

 

στo παρακατω post δεν εχει ομως τετοια διευκρινηση

 

http://msdn.microsoft.com/en-us/library/ms810467.aspx

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...