PDA

Επιστροφή στο Forum : ΑΡΧΑΡΙΟΣ ΣΤΟΥΣ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ



athalex
11-02-06, 10:48
Καλημερα σε ολους,εχω αγορασει εδω και 2 χρονια περιπου απο την Αγγλια εναν programmer της ELNEC τον JETPROG.εχω προγραματισει ολων των ειδων τα τσιπακια (μνημες) που εχουν μεσα οι εγκεφαλοι των αυτοκινητων με προγραμματα που αγοραζω απο Γερμανια και Αυστρια και Ιταλια.οποτε βαζετε στο site κανα αρχειο xeh το φορτωνω στο προγραμμα και μου λεει οτι ειναι οκ και οτι εχει CHECKSUM ενα νουμερο.απλα περιμενει να βαλω τσιπακι να προγραμματισει.αυτο που θελω εγω τωρα ειναι αν υπαρχουν καπου οδηγιες για καποιον ασχετο σαν εμενα για να αρχισω να μαθαινω να φτιαχνω προγραμματακια,πχ να αναβει ενα λεντακι ,ξερω οτι ειναι πολυ δυσκολο αλλα το βλεπω πολυ δημιουργικο,καθε βοηθεια δεκτη,

gsmaster
11-02-06, 15:17
Όντως είναι πολύ δημιουργικό να φτιάχνεις εφαρμογές με μικροελεκτές.

Το πρώτο βήμα είναι να ξεκινήσεις να μάθεις να κάνεις τα βασικά σε assembly πχ να ανάβοσβήνεις λαμπάκια σε αυτό θα σε βοηθήσει πολύ το pic in greek (http://pic-in-greek.freewebpages.org/) κατέβασε το να το έχεις σαν σημείο αναφοράς για να μάθεις τις βασικές εντολές.

Μετά αν δεις ότι σ'αρέσει και θες, παίρνεις έναν compiler και συνεχίζεις με πιο περίπλοκα προγράμματα. Μπορείς βέβαια να ξεκινήσεις και κατευθείαν με compiler χρησιμοποιώντας κάποια demo έκδοση. Συνήθως υπάρχουν απλά παραδείγματα που σε βοηθούν να ξεκινήσεις

Γενικά στο ιντερνετ υπάρχουν πολλοί οδηγοί για να ξεκινήσεις για πολλούς μικροελεκτές. Γράφοντας στο google "PIC tutorial" θα βρείς αποτελέσματα.

Φυσικά τα παραπάνω ισχύουν και για άλλες οικογένειες μικροελεκτών (πχ AVR, motorola....)

athalex
12-02-06, 11:50
Σε ευχαριστω για την βοηθεια φιλε Γιαννη,απο τα λιγα που διαβασα πρεπει να μαθω καποια γλωσσα προγραμματισμου,απο οτι θυμαμε στο ΤΕΙ μας μαθεναν κατι γλωσσες και ημουν αρκετα καλως,αρα δεν πιστευω να δυσκολευτω παρα μα παρα πολυ,τα tutorial τα διαβαζω τα καταλαβαινω αλλα δεν εχω μια βαση στον προγμραμματισμο,εχεις να προτεινεις κατι?

savnik
13-02-06, 08:27
Όντως είναι πολύ δημιουργικό να φτιάχνεις εφαρμογές με μικροελεκτές.
Το πρώτο βήμα είναι να ξεκινήσεις να μάθεις να κάνεις τα βασικά σε assembly
Υπάρχει κάποιο πρόγραμμα γι'αυτό; (όπως π.χ. visual basic)


Μετά αν δεις ότι σ'αρέσει και θες, παίρνεις έναν compiler
Μπορείς να αναφέρεις κάποιον.
Τώρα στα γεράματα μου φαίνεται θα αρχίσω να μαθαίνω προγραμματισμό.

gsmaster
13-02-06, 14:09
Συνήθως για Assembly δίνει κάθε εταιρία δωρεάν τουλάχιστον τον assembler.
πχ για την Microchip το MPLAB για την Atmel το AVRStudio. Συνήθως στα Tutorial αναφέρονται αναλυτικά αυτά.

Αν αποφασίσεις να ασχοληθείς με αυτό, αναγκαστικά πρέπει να μάθεις προγραμματισμό. Δεν γίνεται αλλιώς.

Απο Compilers υπάρχουν πολλοί. Ρίξε μια ματια στην ενότητα "Μικροελεκτές (http://www.hlektronika.gr/phpBB2/viewforum.php?f=37)" Εγώ με μια ματιά βρήκα τα:
Γλώσσες για pic (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=2331)
Compilers για PIC (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=1813)

;)

savnik
13-02-06, 19:44
Συνήθως για Assembly δίνει κάθε εταιρία δωρεάν τουλάχιστον τον assembler.
πχ για την Microchip το MPLAB για την Atmel το AVRStudio. Συνήθως στα Tutorial αναφέρονται αναλυτικά αυτά.

Αν αποφασίσεις να ασχοληθείς με αυτό, αναγκαστικά πρέπει να μάθεις προγραμματισμό. Δεν γίνεται αλλιώς.

Απο Compilers υπάρχουν πολλοί. Ρίξε μια ματια στην ενότητα "Μικροελεκτές (http://www.hlektronika.gr/phpBB2/viewforum.php?f=37)" Εγώ με μια ματιά βρήκα τα:
Γλώσσες για pic (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=2331)
Compilers για PIC (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=1813)

;)
Έχω κατεβάσει αυτά τα προγράμματα
1)Crownhill Proton (Picbasic Plus)
2)CCS PCWH PIC C Compiler.3.190
3)MikroC 2.0.0.1
ποιό είναι το πιο ευκολο για αρχή;

gsmaster
13-02-06, 20:26
Καλό είναι να διαλέξεις ανάλογα με την προηγούμενη εμπειρία σου σε γλώσσες προγραμματισμού υψηλού επιπέδου (Basic, C, C++, Pascal...).
Αν δεν έχεις κάποια τετοια εμπειρία τότε δοκίμασε τους όλους, μέχρι να βρείς κάποιον να σε βολέβει.

savnik
13-02-06, 20:52
Καλό είναι να διαλέξεις ανάλογα με την προηγούμενη εμπειρία σου σε γλώσσες προγραμματισμού υψηλού επιπέδου (Basic, C, C++, Pascal...).
Αν δεν έχεις κάποια τετοια εμπειρία τότε δοκίμασε τους όλους, μέχρι να βρείς κάποιον να σε βολέβει.
Είχα ασχοληθεί παλιά με Visual Basic v6.0 αλλά ποιός τα θυμάτε
Για να καταλάβω μερικά πράγματα και για να μην ψάχνομε θα κάνω μερικές ερωτήσεις.
1) Η assemply είναι γλώσσα προγρμματισμού;
2)Για να προγραμματίσω εναν PIC εκτός απο την γλώσσα πρέπει να ξέρω και τις εντολές του PIC;
3)Έστω ότι γράφω τον κώδικα , πως τον δοκιμάζω αν είναι σωστός;
4)Πως μετατρέπω τον κώδικα σε hex αρχείο;
5)Στο MPLAB IDE τι γλώσσα γράφουμε;

Προς το παρόν αυτά τα λίγα γιατί είμαι εντελώς άσχετος με αυτό το αντικείμενο

athalex
15-02-06, 22:00
Τις ιδιες αποριες εχω και εγω με σενα,
υπαρχει κανα βιβλιο απο καμια σχολη να το παρουμε να διαβασουμε τιποτα?
απο γλωσσα προγραμ. ειμαι της γνωμης να αρχισουμε μια και να προσπαθησουμε να την μαθουμε,γιατι αν αρχισουμε με ολες τοτε δεν προκειτε να καταλαβουμε τιποτα,εγω απο οτι διαβασα εδω μεσα η CCS πρεπει να ειναι σχετικα ευκολη,
μετα η CCS αναλαμβανει να την μετατρεψει σε γλωσα μηχανης?

gsmaster
16-02-06, 01:48
Τις ιδιες αποριες εχω και εγω με σενα,
υπαρχει κανα βιβλιο απο καμια σχολη να το παρουμε να διαβασουμε τιποτα?
απο γλωσσα προγραμ. ειμαι της γνωμης να αρχισουμε μια και να προσπαθησουμε να την μαθουμε,γιατι αν αρχισουμε με ολες τοτε δεν προκειτε να καταλαβουμε τιποτα,εγω απο οτι διαβασα εδω μεσα η CCS πρεπει να ειναι σχετικα ευκολη,
μετα η CCS αναλαμβανει να την μετατρεψει σε γλωσα μηχανης?

Το έχω πεί και αλλού το ίντερνετ είναι γεμάτο google is your friend... (http://www.google.gr/search?hl=el&q=pic+tutorial)



Καλό είναι να διαλέξεις ανάλογα με την προηγούμενη εμπειρία σου σε γλώσσες προγραμματισμού υψηλού επιπέδου (Basic, C, C++, Pascal...).
Αν δεν έχεις κάποια τετοια εμπειρία τότε δοκίμασε τους όλους, μέχρι να βρείς κάποιον να σε βολέβει.
Είχα ασχοληθεί παλιά με Visual Basic v6.0 αλλά ποιός τα θυμάτε
Για να καταλάβω μερικά πράγματα και για να μην ψάχνομε θα κάνω μερικές ερωτήσεις.
1) Η assemply είναι γλώσσα προγρμματισμού;
2)Για να προγραμματίσω εναν PIC εκτός απο την γλώσσα πρέπει να ξέρω και τις εντολές του PIC;
3)Έστω ότι γράφω τον κώδικα , πως τον δοκιμάζω αν είναι σωστός;
4)Πως μετατρέπω τον κώδικα σε hex αρχείο;
5)Στο MPLAB IDE τι γλώσσα γράφουμε;

Προς το παρόν αυτά τα λίγα γιατί είμαι εντελώς άσχετος με αυτό το αντικείμενο

1) H assembly είναι κάτι σαν γλώσσα. Είναι γλώσσα χαμηλού επιπέδου*, είναι ότι πιο κοντινό σε γλώσσα μηχανής, παρακάτω είναι τα νούμερα (άνοιξε ένα .hex αρχειο και θα καταλάβεις)

2) Πρέπει να ξέρεις τις εντολες του Compiler. Δηλαδή μόνο με ότι ξέρεις απο C δεν μπορείς να πεις ότι θα ποργραμματίσεις μΕ. Κάθε Compiler έχει και δικά του "κόλπα" και τις παραξενιές του.

3) Τον τρέχεις! Ο πιο συνηθισμένος τρόπος είναι να το κατεβάσεις στο τσιπάκι και να το δοκιμάσεις. Υπάρχουν βέβαια και simulators, για assembly στους PIC μπορείς να χρησιμοποιήσεις το MPLAB, για γλώσσα υψηλού επιπέδου δεν ξέρω τι υπάρχει. Άσε που με την εξοποίωση στο PC χάνεις λίγο την μπάλα αν πας σε μεγάλο πρόγραμμα...

4) Είται ο Assembler είτε ο Compiler σου εξάγουν .hex αρχείο έτοιμο να το κατεβάσεις στον μΕ.

5) Στο MPLAB χωρίς να βάλεις τίποτα άλλο, γράφεις Assembly. Μπορείς όμως αν χρησιμοποιήσεις Compiler ο οποίος υποστηρίζεται απο το MPLAB, να τον χρησιμοποιήσεις μέσα απο το ΜPLAB. Δεν κερδίζεις και πολλά, εκτός αν έχεις προγραμματιστή της microchip

*Λέγοντας χαμηλού επιπέδου εννοούμε ότι είναι κοντά σε γλώσσα μηχανής. Κάθε εντολή αντιστοιχίζεται σε ένα OPCODE έναν κώδικο, έναν 16δικό αριθμό στην ουσία, και αυτό περνάει στον μΕ. Υψηλού επιπέδου είναι οι γλώσσες που υπάρχει Compiler που μεταφράζει τον κώδικα που γράφουμε σε γλώσσα μηχανής. Οι compilers γενικά παράγουν μεγαλύτερο αρχείο .hex αλλά η εξοικονόμηση χρόνου συγγραφής κώδικα είναι ένα μεγάλο πλεονέκτημα.

savnik
16-02-06, 08:24
Σε ευχαριστώ για τισ απαντήσεις σου.
Εχω κατεβάσει ενα σωρο pic tutorial και αλλα τόσα προγράμματα
Κατά την γνώμη σου με τι είναι πιο εύκολο να αρχίσω(και πιο προγραμμα) . για να μην ψάχνομε άσκοπα.
Πιο πολύ με ενδιαφέρει ο προγραμματισμός των PIC16f84A και PIC16F628A.
Θέλω να τους χρησιμοποιήσω για τα 511-5020-5050-5512-6057-1057 , με λίγα λόγια για RF κατασκευές.(PLL-TUNER).

Αυτός ο κώδικας με τι είναι γραμένος;


-- includes...
include 16f877_4
include jlib
include hd447804
include i2c

const byte tsa5511 = 0b_1100_000 -- tsa5511 I2C adress
- ------- pushs buttons --- & light ----------------------------
var volatile bit set is pin_c6
var volatile bit up is pin_b6
var volatile bit down is pin_b7

pin_c6_direction = input -- set button
pin_b6_direction = input -- up button
pin_b7_direction = input -- down button

-- --------------------------------------------------------------
var byte invoer , flow , fhi , rlow , rhi , qlow , qhi
var byte dummy , eerste, tweede , derde -- tbv setfreq
var byte step , potin , potin1 , teller -- tbv setfreq
var byte lamp -- leds status
var byte cp , pll_setting -- pll

-- ---------------------------------------------------------------
procedure intro is -- INTROTEXT

HD44780_line1
hd44780 = "R" hd44780 = "t" hd44780 = "c" hd44780 = "O"
hd44780 = "r" hd44780 = "i" hd44780 = "o" hd44780 = "n"
HD44780_line2
hd44780 = " " hd44780 = "F" hd44780 = "M" hd44780 = " "
hd44780 = "P" hd44780 = "L" hd44780 = "L" hd44780 = " "
delay_1s
hd44780_clear
end procedure -- INTROTEXT
-- ---------------------------------------------------------------
procedure pll is
HD44780_line2
print_decimal_1( hd44780 , derde , " " )
print_decimal_2( hd44780 , eerste , "0" )
hd44780 = "."
print_decimal_1( hd44780 , tweede , "0" )
hd44780 = "M" hd44780 = "H" hd44780 = "z"
i2c_write_2 ( tsa5511 , rhi , rlow )

delay_10ms
end procedure

δεν τον έβαλα όλο γιατί είναι μεγάλος
Στην αρχή εκεί που λεει -- includes... τι σημαίνουν αυτά;

gsmaster
16-02-06, 15:08
Πάντως δεν είναι σε C.

τα includes υπάρχουν στις περισσότερες γλώσσες, και συμπεριλαμβάνουν ότι έχει το αρχείο. Δηλαδή γράφοντας "include αρχείο" είναι σαν να γράφεις ότι έχει μέσα αυτό το αρχείο.

athalex
25-02-06, 21:23
Φίλε Γιάννη σε ενοχλώ ξανά(και μάλλον τώρα πια πιο συχνά).
Αποφάσισα να ασχοληθώ με τους ST62 γιατί βρήκα όλη την βιβλιογραφία .
Ήδη αγόρασα το πρώτο μου βιβλίο και πραγματικά είναι πολύ κατατοπιστικό.
Το έχει γράψει ένας Έλληνας ο κ. Δημήτρης Κρεμμυδιωτης και το έχει γράψει για κάποιους σαν και μένα.
Όντως είναι πολύ ωραίο να προγραμματίζεις.

savnik
25-02-06, 22:33
Πάντως δεν είναι σε C.

τα includes υπάρχουν στις περισσότερες γλώσσες, και συμπεριλαμβάνουν ότι έχει το αρχείο. Δηλαδή γράφοντας "include αρχείο" είναι σαν να γράφεις ότι έχει μέσα αυτό το αρχείο.
Τελικά βρήκα σε τι γλώσσα είναι
Είναι σε JAL και άρχισα το διάβασμα γιατί μου φάνηκε πιο εύκολη και απλή.
Ένα απλό παράδειγμα σε JAL για να αναβοσβήνει ενα LED

include 16f628_4
include jlib
pin_a0_direction = output
forever loop
pin_a0 = on
delay_10ms
pin_a0 = off
delay_10ms
end loop

Και σε asm το ιδιο

list p=PIC16f628

; note: the f628 config is still fixed!
__CONFIG H'3F62'
ORG 0000
goto __main
ORG 0004
ORG 0004
__interrupt: ; 0004
__main: ; 0004
; var H'020:000' transfer_bit
; var H'020:000' transfer_byte

;; 276 : var byte trisa
; var H'021:000' trisa

;; 277 : var byte trisb
; var H'022:000' trisb

;; 284 : trisa = all_input
movlw H'FF'
movwf H'21'

;; 286 : trisb = all_input
movlw H'FF'
movwf H'22'

;; 580 : var byte _port_a_buffer
; var H'023:000' _port_a_buffer

;; 016 : pin_a0_direction = output
bcf H'21',0
call _3146__vector

;; 019 : forever loop
w_11357_ag: ; 000A

;; 022 : pin_a0 = on
bsf H'23',0
call _5922__vector

;; 355 : procedure delay_10ms( byte in x = 1 ) is
movlw H'01'

;; 025 : delay_10ms
call _9319__vector

;; 028 : pin_a0 = off
bcf H'23',0
call _5922__vector

;; 355 : procedure delay_10ms( byte in x = 1 ) is
movlw H'01'

;; 031 : delay_10ms
call _9319__vector
goto w_11357_ag

;; 003 : idle_loop: page goto idle_loop
as_11360_idle_loop: ; 0013
goto as_11360_idle_loop
_9319__vector: ; 0014

;; 355 : procedure delay_10ms( byte in x = 1 ) is
; var H'024:000' x
p_9319_delay_10ms: ; 0014
movwf H'24'

;; 356 : _delay_100us( x, 100, 1 )
movf H'24',w
movwf H'25'
movlw H'64'
movwf H'26'
movlw H'01'
goto _8759__vector
e_9319_delay_10ms: ; 001B
_8759__vector: ; 001B

;; 230 : procedure _delay_100us( byte in x, byte in y, byte in z ) is
; var H'025:000' x
; var H'026:000' y
; var H'027:000' z
p_8759__delay_100us: ; 001B
movwf H'27'

;; 284 : var byte minus_one = -1
; var H'028:000' minus_one
movlw H'FFFFFFFF'
movwf H'28'

;; 286 : var byte xx, yy
; var H'029:000' xx
; var H'02A:000' yy

;; 290 : local loop_x, loop_y, loop_z, loop_w
; const H'023' loop_w

;; 293 : loop_z:
as_8960_loop_z: ; 001E

;; 296 : movfw y
movf H'26',w

;; 297 : movwf yy
movwf H'2A'

;; 298 : loop_y:
as_8957_loop_y: ; 0020

;; 301 : movfw x
movf H'25',w

;; 302 : movwf xx
movwf H'29'

;; 303 : loop_x:
as_8954_loop_x: ; 0022

;; 305 : movlw inner_iterations
movlw H'17'

;; 307 : loop_w:
as_8963_loop_w: ; 0023

;; 308 : addwf minus_one, w
addwf H'28',w

;; 309 : skpnc
skpnc

;; 310 : goto loop_w
goto as_8963_loop_w

;; 313 : decfsz xx, f
decfsz H'29',f

;; 314 : goto loop_x
goto as_8954_loop_x

;; 317 : decfsz yy, f
decfsz H'2A',f

;; 318 : goto loop_y
goto as_8957_loop_y

;; 321 : decfsz z, f
decfsz H'27',f

;; 322 : goto loop_z
goto as_8960_loop_z
e_8759__delay_100us: ; 002C
return

;; 682 : procedure pin_a0'put( bit in x at _port_a_buffer : 0 ) is
p_5922__pin_a0__put_t: ; 002D
_5922__vector: ; 002D
; var H'023:000' x
p_5922_put: ; 002D

;; 683 : _port_a_flush
goto _5068__vector
e_5922_put: ; 002E
_5068__vector: ; 002E
p_5068__port_a_flush: ; 002E

;; 587 : var volatile byte port_a at 5 = _port_a_buffer
; var H'005:000' port_a
movf H'23',w
movwf H'05'
e_5068__port_a_flush: ; 0030
return

;; 364 : procedure pin_a0_direction'put( bit in d at trisa : 0 ) is
p_3146__pin_a0_direction__put_t: ; 0031
_3146__vector: ; 0031
; var H'021:000' d
p_3146_put: ; 0031

;; 365 : _trisa_flush
goto _2770__vector
e_3146_put: ; 0032
_2770__vector: ; 0032
p_2770__trisa_flush: ; 0032

;; 298 : bank movfw trisa
movf H'21',w

;; 299 : tris 5
tris H'05'
e_2770__trisa_flush: ; 0034
return

END

athalex
25-02-06, 22:38
Αγαπητε Νικολα μπηκες και εσυ στην μπριζα?

savnik
25-02-06, 22:42
Αγαπητε Νικολα μπηκες και εσυ στην μπριζα?
Ασε μια εβδομάδα τώρα έχω ρίξει πολύ διάβασμα και πολύ ψάξιμο στο internet

original_mos
13-04-11, 19:28
καλησπέρα σας

για να μην ανοίγω άλλο θέμα θα ήθελα σας παρακαλώ να με βοηθήσετε σε κάτι αν μπορείτε....

Θέλω να λάβω κάποια byte από την σειριακή (αυτό το έχω κάνει) και αυτά τα byte θέλω να τα αποθηκεύσω στην εσωτερική ή στην εξωτερική RAM του 8051 ώστε να τα διαβάζω μετά και να τα εμφανίζω είτε σε μια οθόνη είτε σε ένα led bar. Έχω γράψει αυτό τον κώδικα αλλά δεν βλέπω φως στην πόρτα δύο που είναι τo led bar. Τα 25 byte τα λαμβάνω σίγουρα γιατί τα βγάζω στην LCD χωρίς να τα έχω αποθηκεύσει !!

Δείτε τι παίρνω στην οθόνη από την απευθείας μετάδοση χωρίς να έχω αποθηκεύσει κάπου τα δεδομένα που παίρνω από την σειριακή.

19666

Το κομμάτι του κώδικας που έχω γράψει για αυτή την δουλειά είναι το παρακάτω:


NEXT1:
CLR A
JNB RI,$ ;Wait for 8051 to set the RI flag.
MOV A,SBUF ;Read the character from the serial port.
CLR RI
MOV DPTR,#0FE00H
MOVX @DPTR,A
INC DPTR
DJNZ R0,NEXT1

CALL ECHO

ECHO:
MOV R0,#25
MOV DPTR,#0FE00H
MOVX A,@DPTR
MOV P2,A
CALL DELAY
INC DPTR
DJNZ R0,ECHO
RET

picdev
17-04-11, 11:20
δεν ασχολουμαι και πολυ με assemply ,αλλα απο mikroC ξερω οτι για να εμφανισεις κατι σε μια τετοια οθονη πρεπει να το κανεις με το κωδικα ascii, στο κωδικα ascci καθε χαρακτηρας έχει ένα νουμερο, πχ για να εμφανισεις το νουμερο "0" πρεπει να δωσεις στην
lcd του το 48,και παει λέγοντας.
Μια απλή τεχνική είναι να προσθετεις το 48, σε καθε ψηφιο που θες να εμφανισεις,(στο 48 ειναι το 0)

xazopartalos
12-08-13, 00:14
Γεια και πάλι στο forum έχω κάνει αυτή (http://spider.dnsdojo.net/SpiderProjects/index.php/3x3x3_LED_Cube) την κατασκευουλα και δεν μπορώ να την δω να δουλεύει προγραμματίζω το pic άλλα δεν μπορώ να βγάλω άκρη.
Σε ένα σημείο στο site λέει να κάνω κλήση του εφέ στο main loop ξέρει κάποιος τι και πως πρέπει να γίνει??????