# Συζήτηση Κυκλωμάτων > Κυκλώματα για Η/Υ >  >  Πρόγραμμα για USB

## ALAMAN

Καλησπέρα!
Ψάχνω κάποιο πρόγραμμα με C++ για επικοινωνία με τη USB θύρα.
Να μπορώ να στέλνω δεδομένα και να τα λαμβάνω.
Πχ να ανάβω ένα led με χρονική καθυστέρηση κλπ.
Ή αντίστροφα να στέλνω παλμούς με μια συχνότητα και να τα διαβάζω στο πρόγραμμα.
Υπάρχει κάτι τέτοιο;
Βρήκα κάτι αντίστοιχο για πλακέτες βασιζόμενες σε μικροελεγκτή AVR και PIC από το ελέκτορ αλλά είναι πολύ περίπλοκο το πρόγραμμα.
Θέλω κάτι πολύ απλό ώστε να μπορέσω να καταλάβω και πως λειτουργεί.

Επίσης στα pin της θύρας...
Το data+ και data- είναι έξοδος και είσοδος αντίστοιχα;

Βρήκα ένα πινακάκι στο internet.
Pin	Name	Cable color	Description
1	VCC	Red	+5 V
2	D−	White	Data −
3	D+	Green	Data +
4	GND	Black	Ground

----------


## tasosmos

Το πιο απλο που μπορεις να κανεις ειναι να παρεις ενα ftdi ή αντιστοιχο ολοκληρωμενο κ να το πεταξεις πανω στην πλακετα σου. Ετσι ειναι ακριβως σαν να εχεις συνδεσει τον μΕ μεσω σειριακης κ κανεις ακριβως τα ιδια. Ουτε προγραμμα για το πισι χρειαζεται να γραψεις ουτε τπτ, χρησιμοποιεις ενα terminal κλασικα.

Στο επομενο επιπεδο ειναι το να παρεις εναν μΕ με hardware usb πχ at90usb σειρας.

Και φυσικα τελος software usb οπου για να κανεις κατι ολοτελα δικο σου πρεπει να φας πολυυυ χρονο μονο για να διαβασεις τις προδιαγραφες του usb, ασε το να φτιαξεις απο το 0 κατι που να δουλευει...


Τελος οχι, τα D+,- δεν ειναι εισοδος κ εξοδος...

----------


## ALAMAN

Ευχαριστώ για την απάντηση.
Σκοπός μου είναι να δουλέψω με την USB θύρα και όχι να κάνω κάτι συγκεκριμένο.
Φυσικά δεν θα το φτιάξω απ το 0. Θέλω ένα μικρό πρόγραμμα που να κάνει αυτή τη δουλειά στο οποίο θα βασιστώ για να φτιάξω κάτι δικό μου.
Αυτό που δεν ξέρω είναι το τί είναι αυτό που θα χρειαστώ να βάλω μέσα στο πρόγραμμα. Βιβλιοθήκη; κάποιο αρχείο;  :Confused1: 
Έτσι ώστε να ξέρω ότι με την τάδε συνάρτηση στέλνω ένα bit στην έξοδο ή απλά την ενεργοποιώ (μόνιμο λογικό 1). Και μετά χρησιμοποιόντας αυτήν να φτιάξω μια δική μου για να στείλω παλμούς με κάποια συχνότητα ή οτιδήποτε άλλο.

----------


## pet

Εχω χρησημοποιήσει αυτό στο παρελθόν σε συνεργασία με μικροεπεξεργαστή.
Νομίζω δεν δουλεύει με windows>XP , αλλά δουλεύει σε Ljnxu

----------


## ALAMAN

> Εχω χρησημοποιήσει αυτό στο παρελθόν σε συνεργασία με μικροεπεξεργαστή.
> Νομίζω δεν δουλεύει με windows>XP , αλλά δουλεύει σε Ljnxu



Ποιό ενοείς;

Εγώ το μόνο που βρήκα είναι 2 προγράμματα για σύνδεση με πλακέτες AVR και PIC μέσω USB.
Λειτουργικά είναι πολύ καλά, γραμμένα σε Visual studio (C++) και μέσω του προγράμματος μπορείς να ελέγχεις διάφορες θύρες ή να
βλέπεις πού υπάρχουν δεδομένα κλπ.
Αλλά είναι λίγο περίπλοκα και δεν μπορώ να βρώ το κομάτι του κώδικα που αφορά την επικοινωνία με τη θύρα USB.
Δηλαδή εφόσον πατηθεί το κουμπί για να δώσει σήμα στην θύρα USB ποιά συνάρτηση χρησιμοποιεί κλπ.

----------


## ALAMAN

> Τελος οχι, τα D+,- δεν ειναι εισοδος κ εξοδος...



Από τα 4 pin τα 2 είναι τροφοδοσία.
Αν τα υπόλοιπα 2 (D+, D-) δεν είναι για είσοδο κ έξοδο τότε τί είναι;

----------


## georgz

> Από τα 4 pin τα 2 είναι τροφοδοσία.
> Αν τα υπόλοιπα 2 (D+, D-) δεν είναι για είσοδο κ έξοδο τότε τί είναι;



Μεταφορά δεδομένων.

----------


## tasosmos

Δεν ειναι οπως στην σειριακη που εχεις ξεκαθαρα εισοδο κ εξοδο οπως γραφεις στο 1ο σου ποστ, και τα 2 χρησιμοποιουνται ταυτοχρονα.

----------


## ALAMAN

Κατάλαβα.
Τελικά κανένα μικρό πρόγραμμα για αυτή τη δουλειά υπάρχει;

----------


## lastid

Λοιπόν...
Το πρωτόκολλο USB ορίζει πολύ περισσότερα από το RS232. Π.χ. όταν μία συσκευή USB συνδεθεί, θα πρέπει να αναφέρει ποια είναι, τί τύπος είναι, σε τί ταχύτητα μιλάει, πόσο ρεύμα πιθανόν να τραβήξει, τί δυνατότητες δίνει, κλπ κλπ. Όλα αυτά μέσω των D+ και D-, με συγκεκριμένα ηλεκτρικά σήματα και συγκεκριμένα πακέτα δεδομένων. 
Η διαδικασία λοιπόν δεν είναι απλή. Απλοποιείται όμως μέχρι αηδίας εφόσον θα χρησιμοποιήσεις μικροελεγκτή (Microchip,Atmel,κλπ) με ενσωματωμένη hardware θύρα USB. Κατά την εκκίνηση τότε, το πρόγραμμά μας γράφει στους ειδικούς καταχωρητές της USB κάποιες τιμές και αφήνει τον μικροελεγκτή να μιλήσει αυτός με το θηρίο. 
Το τί θα γράψουμε στους registers καθορίζει και την συμπεριφορά του περιφερειακού μας και θα μπορούσαμε να το πούμε ότι είναι ο "προγραμματισμός της USB". 
Κατά τον προγραμματισμό αυτό, λέμε στον μικροελεγκτή αν θα συμπεριφέρεται σαν μία τυποποιημένη συσκευή (σειριακή, εκτυπωτής, δίσκος) ή αν θα κάνει κάτι άλλο. Η εξομοίωση της τυποποιημένης σειριακής συσκευής (serial port emulation) ενδείκνυται για το πρώτο μας (και δεύτερο και τρίτο) πρόγραμμα, γιατί:
- Δεν απαιτεί να γράψουμε και να εγκαταστήσουμε driver. Τα Windows (ή το Linux, ή ο Mac, ή...) ξέρουν πως να μιλάνε σε μία κυρία, ε...., σε μία σειριακή συσκευή, γιατί έχουν ενσωματωμένους τους drivers για αυτές τις δουλειές.
- Απαιτεί πανεύκολο προγραμματισμό από πλευράς PC. Φτιάχνουμε ένα πρόγραμμα που να μιλάει με σειριακή, κάνοντας ότι ακριβώς θα κάναμε με μία RS232. Ακόμη και το HyperTerminal των Windows μπορούμε να χρησιμοποιήσουμε σαν τερματικό. Η μόνη διαφορά μπορεί να είναι π.χ. ότι θα μιλάμε με την COM20 αντί της COM1.
- Αν γράφουμε σε μία καλή γλώσσα για τον μικροελεγκτή, αυτή θα έχει συνήθως και ένα παράδειγμα σειριακής USB. Το τροποποιούμε ελαφρά ώστε να κάνει τη δουλειά που θέλουμε και έχουμε έτοιμο το πρόγραμμά μας.

Ερωτήσεις:
1. Ποιον μικροελεγκτή σκέφτεσαι να χρησιμοποιήσεις?
2. Σε ποια γλώσσα για τον μικροελεγκτή γράφεις ή σκέφτεσαι να γράψεις?

Αν χρησιμοποιήσεις PIC18Fxxxx και CCS C, να σου στείλω τον δικό μου κώδικα.

----------


## navar

Γιώργο όσες custom λύσεις έχω δεί στην δουλειά μου , δουλεύουν με Ftdi , max232 κλπ !
δέν έχει πέσει στην αντίληψη μου κάτι με απευθείας usb!
και θέλω να πιστεύω πως είναι πολύ πιο δύσκολο απο προγραμματιστική άποψη να διαχειρηστής και να γράψεις κώδικα για USB θύρα !

edit και με πρόλαβε με ενα λεπτό διαφορά ο Δημήτρης και σου έδωσε ολοκληρωμένη απάντηση !!!

----------


## ALAMAN

Θα χρησιμοποιήσω max232

----------


## ALAMAN

Τους PID/VIP αριθμούς για το FT232 πού μπορούμε να τους βρούμε;

----------


## Thanos10

Αν βαλεις π.χ εναν πικ της σειρας usb 18F2550 δεν ειναι αναγκη να βαλεις το ΜΑΧ232.

----------


## ALAMAN

Δεν έχω pic programmer.
Αν βάλω μΕ θα βάλω AVR και μάλλον αυτόν. http://www.atmel.com/dyn/resources/p...ts/doc7593.pdf
Αλλά μετά το θέμα είναι πως τον προγραμματίζεις. Με το STK500 που έχω δεν είναι συμβατός.

----------


## tasosmos

Οι at90usb εχουν περασμενο bootloader απο το εργοστασιο. Δλδ αν θες να περασεις προγραμμα και μονο δεν χρειαζεσαι εξωτερικο προγραμματιστη. Το προβλημα ειναι οτι δεν μπορεις να αλλαξεις fuses κτλ.

Παντως υπ'οψιν οτι με τον συγκεκριμενο μΕ ισως εχεις κι αλλο ενα προβλημα αν δεν εισαι εξοικειωμενος με smd, παρολο που το pitch του ειναι σχετικα μεγαλο (0,8mm) ειναι 64πινος οποτε και παλι θελει μια πειρα για να τον κολλησεις...

Τελος εδω κ κανα μηνα εχουν εξαφανιστει απο την αγορα αυτα τα μοντελα κ μαλλον θα πρεπει να περιμενεις καναδυο μηνες για διαθεσιμοτητα.

----------


## GeorgeVita

> Τους *PID/VIP* αριθμούς για το *FT232* πού μπορούμε να τους βρούμε;



www.ftdichip.com
Η αναζήτηση για '*PID*' δίνει διάφορα αποτελέσματα όπως αυτό το .pdf
Εκεί γράφει ότι τα defaults για *FT232* είναι: *VID=0x0403* και *PID=0x6001*

G

----------


## ALAMAN

Ναι τα βρήκα!
Ευχαριστώ.

Το FT232 αν του στείλουμε 1 byte, μπορούμε μετά να διαβάσουμε αυτό το byte παράλληλα ή μόνο σειριακά;

----------


## ALAMAN

Βρήκα αυτό.
http://www.chinwah-engineering.com/U..._Software.html

Αν κατάλαβα καλά μπορούμε να έχουμε 256 καταχωρητές των 8 bit και να τους διαβάζουμε παράλληλα;
Δηλαδή χωρίς να διαβάσουμε το chip μπορούμε να γράψουμε 256 bytes;

Τα σήματα ελέγχου CBus0 - CBus4 δεν κατάλαβα πως χρησιμοποιούνται.
Το CS ενεργοποιεί/απενεργοποιεί το chip;
Το CLK λογικά θα είναι κρύσταλλος. Πώς θα συνδεθεί στο 1 πιν;

Το FT232R με το FT232RL έχει καμιά διαφορά;

----------


## navar

> Τελος εδω κ κανα μηνα εχουν εξαφανιστει απο την αγορα αυτα τα μοντελα κ μαλλον θα πρεπει να περιμενεις καναδυο μηνες για διαθεσιμοτητα.



τι σου κάνει το PS3 και τα hack του !!!!!!

----------


## ALAMAN

Μπορούμε να βρούμε πληροφορίες σχετικά με το πρωτόκολλο USB 2.0;
Δηλαδή πως δουλεύει από πλευράς hardware, τί γίνεται όταν συνδέεται μια συσκευή πως ξεκινάει η επικοινωνία
πως επιλέγεται η ταχύτητα πότε στέλνονται τα δεδομένα κλπ...

Πήρα το FT232RL. Θα το κολλήσω σε μια πλακέτα με ακίδες για να μπαίνει στο ράστερ και θα ξεκινήσω κάποια πειράματα.
Στο software όμως τί γίνεται;
Δηλαδή χρειάζομαι ένα πρόγραμμα που θα χρησιμοποιεί τους αριθμούς VID PID για την επικοινωνία;
Ψάχνω κάποιο έτοιμο για να τροποποιήσω.

----------


## somone

Για usb διαβάζεις αυτό http://www.lvr.com/usbc.htm . Υπάρχει και καινούρια έκδοση που γράφει και για USB 3

Τα VID και PID τα χρειάζεται κυρίως ο driver της usb συσκευής. Τι ακριβώς θέλεις να φτιάξεις; Αν θέλεις απλά να πειραματιστείς και να μάθεις ξεκινάς με HID (μπορείς να κοιτάξεις στο google για διάφορα project). Υπάρχουν και κάποια προγράμματα νομίζω για HID usb devices με τα οποία μπορείς να στείλεις δεδομένα στη συσκευή σου, έτσι έχεις να ασχοληθείς μόνο με την κατασκευή σου.

----------


## ALAMAN

Ναι θέλω να πειραματιστώ με το HID και ψάχνω open source προγράμματα γραμμένα σε visual C++.
Χρησιμοποιώ το visual studio και πάνω σ' αυτόν θέλω να φτιάξω έναν driver ή τουλάχιστον να τροποποιήσω κάποιον έτοιμο
που είναι και πιο εύκολο, για να φτιάξω μια επικοινωνία δεδομένων μεταξύ του pc και του FTDI το οποίο θα στέλνει δεδομένα σε
ένα κύκλωμα. Φυσικά δεν με ενδιαφέρει η ταχύτητα. Απλά για να ξέρω πού βρίσκομαι κάθε φορά, πρέπει να ξέρω λίγο πως
δουλεύει η USB και πως επικοινωνεί το FTDI.
Κυρίως το FTDI. Πρέπει να ξέρουμε πόσα byte μπορώ να στέλνω κάθε φορά ή πώς αλλιώς μπορώ να τα στέλνω σ' αυτό.
Δηλαδή μπορώ να φορτώσω κάποια δεδομένα σε έναν μονοδιάστατο πίνακα (ας πούμε 8byte) και να στείλω όλο τον πίνακα στο FTDI;
Και μετά αφού αποθηκευτούν τα δεδομένα στη μνήμη του FTDI πώς μπορώ να τα πάρω σειριακά ή παράλληλα για να τα δώσω
σε έναν μΕ ή σε μια μνήμη;

----------


## ALAMAN

Το FT232*RL* τί διαφορά έχει με το FT232*R*

----------


## GeorgeVita

> Το FT232*RL* τί διαφορά έχει με το FT232*R*



 Το FT232R είναι FT232Rx όπου x=package.
FT232*RL* είναι σε * SSOP28* ενώ το FT232*RQ* είναι σε *QFN-32* (βλέπε datasheet).

Οσον αφορά τα drivers και το πρόγραμμα στο PC. Εφόσον μπορούν να συνδεθούν στο USB port και το σύστημα να τα αναγνωρίσει αυτόματα ως VCP (Virtual Com Port), γιατί να μη μείνει έτσι και να συνδέσεις απλά το μC στα UART pins; Μετά ανοίγεις την πόρτα (λ.χ. /dev/ttyUSB0 ή com7) και κάνεις απλά σειριακά I/O τύπου RS232.
(Σημ: ιδέα είναι δεν το έχω δοκιμάσει)

G

----------


## tasosmos

Δουλευει κανονικα αυτο που προτεινει ο Γιωργος, δοκιμασμενο και μαλλον μακραν ο ευκολοτερος τροπος να κανεις κατι με μΕ μεσω usb.  :Smile:

----------


## herctrap

απλως κανεις πειραματα με την USB?;
ή εχεις καποιο project στο νου σου?

----------


## ALAMAN

Έχω πολλά project στο νου μου για τη USB.
Χρησιμοποιείται πάρα πολύ από πολλές συσκευές οπότε γιατί να μην μάθουμε πώς δουλεύει και
να φτιάξουμε κάτι που θα χρησιμοποιεί μια τέτοια θύρα.
Όπως κάποια θέματα που έχει στο forum με έλεγχο εισόδων/εξόδων μέσω σειριακής/παράλληλης.
Γιατί να μην υπάρχει και κάτι αντίστοιχο με τη USB;
Πχ. Θα μπορούσαμε να φτιάξουμε ένα σύστημα μέτρησης με μια πλακέτα που θα συνδέεται μέσω USB στο pc
στέλνοντας δεδομένα τα οποία θα απεικονίζονται σε μια φόρμα.
Φυσικά σκέφτομαι να το κάνω όπως είπε ο Γιώργος (GeorgeVita), αλλιώς δεν υπάρχει λόγος να χρησιμοποιείς το FT232.
Αυτό που ήθελα να πω πριν όμως είναι το πως διαχειρίζονται τα δεδομένα μέσα στο FT. Υπάρχει κάποια μνήμη
που μπορεί να κρατήσει X byte όσο το pc στέλνει δεδομένα; Δηλαδή μπορούμε να φορτώσουμε στη μνήμη του FT (αν έχει) τα δεδομένα
και να τα πάρουμε όποτε θέλουμε ή πρέπει να τα στέλνεις και να τα λαμβάνεις σε πραγματικό χρόνο;
Ψάχνοντας λίγο πριν βρήκα κάποιους drivers για το συγκεκριμένο chip γραμμένους με C++ στο Visual Studio αλλά μου βγάζαν κάτι σφάλματα.
Θα το κοιτάξω αργότερα αυτό. Εγώ πήρα 2 κομμάτια, θα τα κολλήσω σε πλακέτα με ακίδες για να μπαίνει σε ράστερ και μετά θα ψάξω
να βρω driver που να το αναγνωρίζει.

----------


## herctrap

μιας και το ειδα παλι σημερα

οριστε
http://www.hlektronika.gr/forum/showthread.php?t=53056

επισης ψαξε και για Arduino αν δεν ασχολησε με καποιον uC

----------


## ALAMAN

Το arduino και το αναπτυξιακό της Texas τί να τα κάνω;

----------


## herctrap

λαθος για το αναπτυξιακο της TI το μπερδεψα με ενα αλλο ποστ του Γιωργου που δεν μπορω να το βρω τωρα

αλλα λεω οτι αν δεν ασχολησε με uC και τωρα θα αρχισεις η αναπτυξιακη πλακετα Arduino με το ft232 της FTDI (γιατι το βγαζουν μονο σε SMD - εμας δεν μας σκεφτονται?) ειναι μια καλη αρχη με μεγαλο support απο το site/forum τους

να τι εκανα εγω με αυτο
*Usb instrument cluster for racing simulators
* 
ή απο μια προχειρη αναζητηση 
*PySerial Arduino Control over USB*

*Collin's Lab: USB Hacking with Arduino*

----------


## ALAMAN

Από μΕ κάτι ξέρω.
Μπορεί να μην χρησιμοποιήσω μΕ, μπορεί να βάλω κάποια μνήμη που θα γράφεται από το FTDI ή στο κομμάτι της
επεξεργασίας να βάλω κάποιο ψηφιακό κύκλωμα. Γιαυτό θέλω να ασχοληθώ μόνο με το FTDI και τον driver του.

----------


## herctrap

παλι καποιο ποστ εχει κανει ο γιωργος για καπιο νεο ic παρομοιο με αυτο της ftdi το οποιο εχει και epprom και i/o επανω

αυτο
http://www.hlektronika.gr/forum/show...highlight=ftdi

και αυτο που εψαχνα πριν
http://www.hlektronika.gr/forum/show...highlight=ftdi

----------


## GeorgeVita

> Έχω πολλά project στο νου μου για τη USB... έλεγχο εισόδων/εξόδων ...



Ακριβώς αυτό δοκιμάζω με το MCP2200 και PIC μικρής δυναμικότητας/τιμής.
G

----------


## ALAMAN

> Ακριβώς αυτό δοκιμάζω με το MCP2200 και PIC μικρής δυναμικότητας/τιμής.
> G



Χρησιμοποιείς κάποιον driver για το pc;

----------


## ALAMAN

Παράλληλα όπως η θύρα του μΕ δεν μπορούμε να πάρουμε τα δεδομένα του FT232RL?

----------


## herctrap

μα τα δεδομενα που παιρνεις ειναι οτι στελνεις απο ενα hypper terminal για παραδειδμα

πως θα τα διαβασεις χωρις καποιον uC

----------


## ALAMAN

Με ψηφιακό κύκλωμα;
Read/Write σαν την μνήμη δεν είναι;
Ενδιάμεση μνήμη μεταξύ USB Port και πλακέτας.
Κάτι τέτοιο δεν είναι;

----------


## herctrap

http://en.wikipedia.org/wiki/Uart

δεν γνωριζω κατι παραπανω

----------


## xaralampis

το USB γενικα ειναι βαθεια νερα
στο usb.org μπορεις να βρεις δωρεαν τα επισημα specs
το ft232 ειναι σχεδιασμενο για σειριακη επικοινωνια περιφερειακου - PC
χρειαζεσαι δηλαδη εξυπνο περιφερειακο (π.χ. AVR) με UART
υπαρχει και το ft245 που μοιαζει με το 74LS245
απο το site της fdti μπορεις να βρεις το αντιπροσωπο στην Ελλαδα
ειναι καπου στη πλατεια Βαθης
εχει ετοιμοπαραδοτα modules με headers 0.1 γυρω στα 25€

αν δεν εχεις μεγαλες απαιτησεις μπορεις να κανεις USB device με ενα
κλασσικο AVR με software
δες
http://www.obdev.at/products/vusb/index.html

και ενα κυκλωμα με το AVR 90S2313, 4 keys USB keypad για PC

----------


## ALAMAN

Επαναφέρω το θέμα μιας και άρχισα να το ξαναψάχνω εφόσον δεν ασχολήθηκα τελικά...
Ψάχνω κάποιο πρόγραμμα με σχηματικό ταυτόχρονα (software - hardware δηλαδή) που να υποστηρίζει το FT232RL
ή τουλάχιστον κάτι που να επικοινωνεί μέσω USB εκτός από PIC βέβαια.
Στο ίντερνετ βρήκα διάφορα κυκλωματάκια αλλά δεν ξέρω από πλευράς software πώς θα τα δουλέψω.
Στην ουσία θέλω να έχω κάποιες βασικές ρουτίνες στο software για ανάγνωση και αποστολή δεδομένων μέσω USB

----------


## herctrap

Uart

http://sites.google.com/site/qeewiki...vr-guide/usart

----------


## ALAMAN

Αυτό όσον αφορά τον μικροελεγκτή που δουλεύει με το FT232.
Από το pc πώς θα στέλνονται τα δεδομένα;
Δηλαδή με ποιά σειρά και πώς θα συγχρονίζονται;

----------


## tasosmos

Δεν χρειαζεται καποιο ιδιαιτερο προγραμμα, οποιοδηποτε τυπου terminal.
Για σχηματικο βλεπε το datasheet του ftdi.

----------


## ALAMAN

> Δεν χρειαζεται καποιο ιδιαιτερο προγραμμα, οποιοδηποτε τυπου terminal.
> Για σχηματικο βλεπε το datasheet του ftdi.



Θέλω κάτι σε στυλ visual studio με γραφικό περιβάλλον.

----------


## ALAMAN

Υπάρχει κάποιο tutorial USART για τον ATmega8535;
Για το FT232R βρήκα εδώ κάποια example.
http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/VC++.htm

κατέβασα το example 2 αλλά δεν μπόρεσα να καταλάβω τι φιλοσοφία για το πως γίνεται η επικοινωνία.

----------


## ALAMAN

Ξέρει κανείς πώς μπορώ να προγραμματίσω τον AT90USB1287;
Υπάρχει κάποιος προγραμματιστής γιαυτόν; Δεν θέλω να αγοράσω κάποιον έτοιμο, ψάχνω για την φθηνότερη λύση.
Μάλλον θα ασχοληθώ μ' αυτόν γιατί με το FT232 δεν βρήκα άκρη...

----------


## navar

γιατί κάτι μου λέει οτι αυτός δεν χρειάζεται κάν προγραμματηστήρι ?
νομίζω οτι κάνεις κάποιο μικρό κύκλωμα και τον γράφεις κατευθείαν απο την usb , εκτός και αν χρειάζεται κάποιον bootloader για αρχή και τον ρίξεις απο καμιά παράλληλη !

----------


## ALAMAN

Ναι μάλλον έτσι γίνετε αλλά θα τον κοιτάξω αργότερα αυτόν.
Τελικά έκανα κάτι με το FT232.

Έγραψα το παρακάτω πρόγραμμα σε έναν ATmega8535.
Σύνδεσα τον μικροελεγκτή με το FT232 μέσω USART και έστειλα δεδομένα
μέσω hyper terminal και ο μικροελεγκτής μου τα έστελνε πίσω κανονικά!
Το θέμα είναι ότι στην for(;;) που τρέχει συνέχεια τα δεδομένα που παίρνει ο μικροελεγκτής
δεν τα εμφανίζει στη θύρα που έχω βάλει.
ήθελα να δώ κάθε φορά τί δεδομένα στέλνω στον μικροελεγκτή γιατί στο τέλος αυτό που θέλω να κάνω
είναι να στέλνω 1byte τη φορά αλλά θέλω να γνωρίζω αυτό το byte γιατί ο μικροελεγκτής θα κάνει κάτι 
ανάλογα με το byte που πήρε.
Σίγουρα έχω κάποιο λάθος στο πρόγραμμα γιατί ο μικροελεγκτής παίρνει κανονικά τα δεδομένα και τα στέλνει πίσω άρα δουλέυει σωστά!






```
#include <stdint.h> 
#include <avr/io.h> 

/* Prototypes */ 
void InitUART( unsigned char baudrate ); 
unsigned char ReceiveByte( void ); 
void TransmitByte( unsigned char data ); 

/* Main - a simple test program*/ 
void main( void ) 
{ 
   InitUART( 25 ); /* Set the baudrate to 19,200 bps using a 3.6864MHz crystal */ 
   DDRA=0xFF; 

   for(;;)        /* Forever */ 
   { 
      TransmitByte( ReceiveByte() ); /* Echo the received character */
       PORTA = UDR;
       
   } 
} 

/* Initialize UART */ 
void InitUART( unsigned char baudrate ) 
{ 
    
   UBRRL = baudrate;                  /* Set the baud rate */
   UCSRB = ( (1<<RXEN) | (1<<TXEN) );  /* Enable UART receiver and transmitter */ 
} 

/* Read and write functions */ 
unsigned char ReceiveByte( void ) 
{ 
   while ( !(UCSRA & (1<<RXC)) )    /* Wait for incomming data */ 
      ; 
           /* Return the data */ 
   return UDR; 
} 

void TransmitByte( unsigned char data ) 
{ 
   while ( !(UCSRA & (1<<UDRE)) ) 
      ;                          /* Wait for empty transmit buffer */ 
   UDR = data;                  /* Start transmittion */ 
}
```

----------

