Πρόβλημα με Imagecraft AVR Compiler

J

Jack / / ani

Guest
Hi all,

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

# include <io2313v.h>
# include <macros.h>

char const num [] = (0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80)?

void wait () (?)

void main ()
(
unsigned int i? / var * Καθυστέρηση * /
unsigned char j? / * LED var * /

while (1)
(/ * Loop forever * /

για j = (0? j <8? j ) / * Blink LED 0,1,2,3,4,5,6,7 * /
(
PORTB = num [j]?
/ * Output με LED Λιμάνι * /
for (i = 0? i <10000? i ) / * Καθυστέρηση για το 1000 Counts * /
(
wait ()? / * λειτουργία αναμονής κλήσεων * /
)
)
)
)

όταν συγκεντρώνει το αρχείο αυτό να βρω αυτό το hex

: 020000000EC030
: 140016000102040810204080CFEDD0E0CDBFDEBFC051D04021
: 14002A000AEA08830024E0E6F0E010E0E036F10711F00192F7
: 14003E00FBCF0083EEE1F0E0A0E6B0E010E0EE31F10721F094
: 14005200C89531960D92F9CF02D0FFCF089519C0442715C0B9
: 1400660086E190E0242E3324280E391EE22DF32DC89508BA2B
: 14007A006627772703C0EEDF6F5F7F4F6031E7E27E07C8F381
: 0A008E004395483048F3E6CF08958B
: 00000001FF

Η δοκιμή αυτή hex από AT90S2313 προγραμματισμό, αλλά δεν είναι εργάσιμη, τα LED δεν αναβοσβήνει καθόλου!
Μπορώ να σας παρακαλώ να μου δώσετε hex / πηγαίο κώδικα για μια επαλήθευση / δοκιμαστεί το πρόγραμμα για να αναβοσβήνει LED, έτσι ώστε να μπορώ να πάρω διαβεβαίωσε ότι προγραμματιστής και UC μου δουλεύουν μια χαρά.Είμαι newbie στην AVR και είναι επείγον.

Ευχαριστώ για κάθε απάντηση / προτάσεις.

 
Na początku maja br. media obiegła wiadomość o kradzieży danych 1,3 miliona francuskich klientów operatora Orange. Coraz więcej firm pada ofiarą ukierunkowanych ataków hakerów. Dotyczą one nie tylko korporacji, ale w dużej mierze sektora MŚP. Utrata poufnych informacji to prawdziwa katastrofa biznesowa, oznacza straty finansowe i kładzie się cieniem na wizerunku firmy.

Read more...
 
main ()
(

while (1)
(
int count?
PORTB = 0xFF?
για (count = 0? count <1000? count )?
PORTB = 0x00?
για (count = 0? count <1000? count )?
)
)

 
Νομίζω ότι αυτό είναι αυτό που προσπαθεί να εφαρμόσει:void main (void)
(

int count?
int temp?

DDRB = 0xff?
PORTB = 0?

για (?

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />για (temp = 0? temp! = 8? temp )
(
PORTB = 1 <<temp?
για (μητροπολιτική = 0? count <1000? count )?
)
)

 
Ευχαριστώ για την απάντηση.Μπορείτε σας παρακαλώ να επισημάνω γιατί πάνω από το πρόγραμμά μου δεν λειτουργεί, έτσι ώστε να μπορώ να καταλάβω δικό μου λάθος.Υποθέτω ότι το πρόβλημα το I / O δήλωση μητρώο κατεύθυνση λείπει.Όπως και στα ΣΜΕ χρησιμοποιούμε TRISA και TRISB για να ορίσετε το pin όπως I / O.Αν δεν κάνω λάθος Artem είχε προτείνει να προστεθεί DDRB μητρώο για την ίδια purpose.But είμαι ακόμα σύγχυση, θα ήθελα ακόμη να έχει λίγο περισσότερη διευκρίνιση!

Ευχαριστώ και πάλι

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

Maui

 
Καλημέρα Jack / / ani,

Όπως Artem προτείνει δεν χρειάζεται το array num.Είναι αρκετό να στροφή αριστερά τη μεταβλητή temp.Ρύθμιση DDRB μητρώο είναι ένα πρέπει αν οδηγείτε το LED άμεσα.Αν οδηγείτε τους μέσω ενός οδηγού (δηλαδή ένα τρανζίστορ NPN) δεν χρειάζεται να ενοχλούν, εφόσον η εσωτερική MOS pull-up αντίσταση θα την πηγή ρεύματος σε προκατάληψη τρανζίστορ σας (100 uA αν οδηγείτε απευθείας το τρανζίστορ βάση? Η βάση θα float όταν θα γράψετε 0 για PORTx δεδομένα μητρώο? θυμάμαι DDRB δεν είχε οριστεί σε 1, το λιμάνι σας συμπεριφέρεται ως εισροή).

Σύμφωνα με hex αρχείο πήρα αυτό αποσυναρμολογημένο Κωδικός:
Κωδικός:

;------------------------------------------------- ------------------------

. cseg

. org 0

;------------------------------------------------- ------------------------

avr000F rjmp? 0000 C00E

άγνωστο? 0001 FFFF

άγνωστο? 0002 FFFF

άγνωστο? 0003 FFFF

άγνωστο? 0004 FFFF

άγνωστο? 0005 FFFF

άγνωστο? 0006 FFFF

άγνωστο? 0007 FFFF

άγνωστο? 0008 FFFF

άγνωστο? 0009 FFFF

άγνωστο? 000A FFFF

MULS R16, R17? 000B 0201

SBC R0, R4? 000C 0804

και r1, r0? 000D 2010

ld R4, Z? 000E 8040

avr000F: LDI YL, 0xDF? 000F EDCF

LDI YH, 0x00? 0010 E0D0

out SPL, YL? 0011 BFCD

έξω SPH, YH? 0012 BFDE

subi YL, 0x10? 0013 51C0

SBCI YH, 0x00? 0014 40D0

LDI R16, 0xAA? 0015 EA0A

st Y, R16? 0016 8308

CLR r0? 0017 2400

LDI ZL, 0x60? 0018 E6E0

LDI ZH, 0x00? 0019 E0F0

LDI R17, 0x00? 001A E010

avr001B: CPI ZL, 0x60? 001B 36E0

cpc ZH, R17? 001C 07F1

breq avr0020? 001D F011

st Z , r0? 001E 9201

avr001B rjmp? 001F CFFB

avr0020: st Z, R16? 0020 8300

LDI ZL, 0x1E? 0021 E1EE

LDI ZH, 0x00? 0022 E0F0

LDI XL, 0x60? 0023 E6A0

LDI XH, 0x00? 0024 E0B0

LDI R17, 0x00? 0025 E010

avr0026: CPI ZL, 0x1E? 0026 31EE

cpc ZH, R17? 0027 07F1

breq avr002D? 0028 F021

lpm? 0029 95C8

adiw ZL, 0x01? 002A 9631

st X , r0? 002B 920D

rjmp avr0026? 002C CFF9

avr002D: rcall sub0030? 002D D002

avr002E: rjmp avr002E? 002E CFFF

;------------------------------------------------- ------------------------

sub002F: ret? 002F 9508

;------------------------------------------------- ------------------------

sub0030: avr004A rjmp? 0030 C019

avr0031: CLR ρ20? 0031 2744

rjmp avr0048? 0032 C015

avr0033: LDI R24, 0x16? 0033 E186

LDI R25, 0x00? 0034 E090

mov r2, ρ20? 0035 2E24

CLR R3? 0036 2433

προσθέστε r2, R24? 0037 0E28

ADC R3, R25? 0038 1E39

mov ZL, r2? 0039 2DE2

mov ZH, R3? 003A 2DF3

lpm? 003B 95C8

έξω PORTB, r0? 003C BA08

CLR R22? 003D 2766

CLR R23? 003E 2777

rjmp avr0043? 003F C003

avr0040: sub002F rcall? 0040 DfEE

subi R22, 0xFF? 0041 5F6F

SBCI R23, 0xFF? 0042 4F7F

avr0043: CPI R22, 0x10? 0043 3160

LDI ZL, 0x27? 0044 E2E7

cpc R23, ZL? 0045 077E

brlo avr0040? 0046 F3C8

Φ.Π.Α. ρ20? 0047 9543

avr0048: CPI R20, 0x08? 0048 3048

brlo avr0033? 0049 F348

avr004A: rjmp avr0031? 004A CFE6

ret? 004B 9508. έξοδος

 
Ευχαριστώ όλους για τις χρήσιμες προτάσεις.Τελικό πρόγραμμα μου ως Artem προτείνεται είναι σαν αυτό.Τώρα μπορώ να δω LED λαμπερό λαμπρά, αλλά το πρόβλημα που έχει όλα λάμψη την ίδια στιγμή που έβαλα στο τροφοδοτικό και στη συνέχεια, ποτέ δεν λάμπουν και πάλι!

# include <io2313v.h>
void main (void)
(
int count?
int temp?
DDRB = 0xff?
PORTB = 0?

για (?

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />για (temp = 0? temp! = 8? temp )
(
PORTB = 1 <<temp?
για (count = 0? count <10000? count )?
)

)

Εδώ είναι η δεκαεξαδική

: 020000000AC034
: 14001600CFEDD0E0CDBFDEBFC051D0400AEA08830024E0E6B7
: 14002A00F0E010E0E036F10711F00192FBCF0083E6E1F0E07C
: 14003E00A0E6B0E010E0E631F10721F0C89531960D92F9CFFD
: 1400520001D0FFCF8FEF87BB222428BA4427552701E010E05B
: 14006600242F352F11D008BB662777276F5F7F4F6031E7E20A
: 14007A007E07D4F34F5F5F4F4830E0E05E0761F7E9CF089580
: 0E008E00222321F0000F111F2A95FACF0895AA
: 00000001FF

Παρακαλώ να με βοηθήσει.

Ευχαριστώ και πάλι

 
Jack / / ani έγραψε:

Ευχαριστώ όλους για τις χρήσιμες προτάσεις.
Τελικό πρόγραμμα μου ως Artem προτείνεται είναι σαν αυτό.
Τώρα μπορώ να δω LED λαμπερό λαμπρά, αλλά το πρόβλημα που έχει όλα λάμψη την ίδια στιγμή που έβαλα στο τροφοδοτικό και στη συνέχεια, ποτέ δεν λάμπουν και πάλι!# include <io2313v.h>

void main (void)

(

int count?

int temp?

DDRB = 0xff?

PORTB = 0?για (?
<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
για (temp = 0? temp! = 8? temp )

(

PORTB = 1 <<temp?

για (count = 0? count <10000? count )?

))Εδώ είναι η δεκαεξαδική: 020000000AC034

: 14001600CFEDD0E0CDBFDEBFC051D0400AEA08830024E0E6B7

: 14002A00F0E010E0E036F10711F00192FBCF0083E6E1F0E07C

: 14003E00A0E6B0E010E0E631F10721F0C89531960D92F9CFFD

: 1400520001D0FFCF8FEF87BB222428BA4427552701E010E05B

: 14006600242F352F11D008BB662777276F5F7F4F6031E7E20A

: 14007A007E07D4F34F5F5F4F4830E0E05E0761F7E9CF089580

: 0E008E00222321F0000F111F2A95FACF0895AA

: 00000001FFΠαρακαλώ να με βοηθήσει.Ευχαριστώ και πάλι
 
Είμαι χρησιμοποιώντας 4MHz cryatal.

 
Μπορείτε να επισυνάψετε το αρχείο hex έτσι Ιγ είναι ένα πείραμα;

 
Καλημέρα Jack / / ani

Ως συνήθως εγώ θα αποσυναρμολογηθεί μετά το πρόγραμμα σύμφωνα με το νέο αρχείο hex σας.
Σε κόκκινο χρώμα τονίζεται το αντίστοιχο οδηγίες για την καθυστέρηση Γ (για (count = 0? Count <10000? Count )

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />Επειδή XTAL σας είναι 4MHz, αυτό σημαίνει ότι ένας κύκλος εκπαίδευσης των 250 ns.
Έτσι έχετε μια καθυστέρηση 7 κύκλων ns x 250 x 10.000 = 17,5 ms
Πολύ σύντομο χρονικό διάστημα για να δείτε το περπάτημα LED.
Δεδομένου ότι έχετε δηλώσει τη μεταβλητή temp όπως int μπορείτε να πάρετε το μέγιστο 65535.
Χρησιμοποιώντας τον ίδιο βρόχο με βάση την ανακοίνωση μπορείτε να πάρετε μια μέγιστη καθυστέρηση των 115 ms.
Εξακολουθεί να είναι πολύ σύντομη.
Επειδή είστε έξυπνος μεταξύ των λαών που χρησιμοποιούνται για τη διαχείριση ίδιο τον, εγώ δεν θα σας δείξει πώς να αυξήσουν την καθυστέρηση.

BTW, κοιτάξτε τον κωδικό αντιστάθμιση μεταξύ 0049 και 004A,
και μεταξύ αντιστάθμιση 003F και 0043.
Αυτό συμβαίνει γιατί έχετε δηλώσει ως μεταβλητή temp int αντί unsigned char.
Θα σας ανάγκασε τον compiler να χρησιμοποιήσει ένα ζευγάρι μητρώο, αν και τα 8 είναι εύκολο να ενταχθούν σε ένα byte.
Και μπορείτε να δείτε ένα από τα περιορισμός πυρήνα AVR.Όταν έχετε να συγκρίνετε μια λέξη, για το υψηλό byte που θα πρέπει να χρησιμοποιήσετε CPC.
Εφόσον δεν μπορείτε να χρησιμοποιήσετε μια άμεση σταθερή είστε αναγκασμένοι να φορτώσετε ένα αχρησιμοποίητο μητρώο (ματιά offset 0042)

;------------------------------------------------- ------------------------
. cseg
. org 0
;------------------------------------------------- ------------------------
avr000B rjmp? 0000 C00A
άγνωστο? 0001 FFFF
άγνωστο? 0002 FFFF
άγνωστο? 0003 FFFF
άγνωστο? 0004 FFFF
άγνωστο? 0005 FFFF
άγνωστο? 0006 FFFF
άγνωστο? 0007 FFFF
άγνωστο? 0008 FFFF
άγνωστο? 0009 FFFF
άγνωστο? 000A FFFF
avr000B: LDI YL, 0xDF? 000B EDCF
LDI YH, 0x00? 000C E0D0
out SPL, YL? 000D BFCD
έξω SPH, YH? 000E BFDE
subi YL, 0x10? 000F 51C0
SBCI YH, 0x00? 0010 40D0
LDI R16, 0xAA? 0011 EA0A
st Y, R16? 0012 8308
CLR r0? 0013 2400
LDI ZL, 0x60? 0014 E6E0
LDI ZH, 0x00? 0015 E0F0
LDI R17, 0x00? 0016 E010
avr0017: CPI ZL, 0x60? 0017 36E0
cpc ZH, R17? 0018 07F1
breq avr001C? 0019 F011
st Z , r0? 001A 9201
rjmp avr0017? 001B CFFB
avr001C: st Z, R16? 001C 8300
LDI ZL, 0x16? 001D E1E6
LDI ZH, 0x00? 001E E0F0
LDI XL, 0x60? 001F E6A0
LDI XH, 0x00? 0020 E0B0
LDI R17, 0x00? 0021 E010
avr0022: CPI ZL, 0x16? 0022 31E6
cpc ZH, R17? 0023 07F1
breq avr0029? 0024 F021
lpm? 0025 95C8
adiw ZL, 0x01? 0026 9631
st X , r0? 0027 920D
rjmp avr0022? 0028 CFF9
avr0029: sub002B rcall? 0029 D001
avr002A: rjmp avr002A? 002A CFFF
;------------------------------------------------- ------------------------
sub002B: ser R24? 002B EF8F
έξω DDRB, R24? 002C BB87
CLR r2? 002D 2422
έξω PORTB, r2? 002E BA28
avr002F: CLR ρ20? 002F 2744
CLR R21? 0030 2755
avr0031: LDI R16, 0x01? 0031 Ε 001
LDI R17, 0x00? 0032 E010
mov R18, ρ20? 0033 2F24
mov R19, R21? 0034 2F35
rcall sub0047? 0035 D011
έξω PORTB, R16? 0036 BB08
CLR R22? 0037 2766
CLR R23? 0038 2777

avr0039: subi R22, 0xFF? 0039 5F6FSBCI R23, 0xFF? 003A 4F7FCPI R22, 0x10? 003B 3160LDI ZL, 0x27? 003C E2E7cpc R23, ZL? 003D 077Ebrlt avr0039? 003E F3D4

subi ρ20, 0xFF? 003F 5F4F
SBCI R21, 0xFF? 0040 4F5F
CPI R20, 0x08? 0041 3048
LDI ZL, 0x00? 0042 E0E0
cpc R21, ZL? 0043 075E
Brně avr0031? 0044 F761
avr002F rjmp? 0045 CFE9
ret? 0046 9508
;------------------------------------------------- ------------------------
sub0047: TST R18? 0047 2322
breq avr004D? 0048 F021
LSL R16? 0049 0F00
rol R17? 004A 1F11
Δεκέμβριος R18? 004B 952A
rjmp sub0047? 004C CFFA
avr004D: ret? 004D 9508

. έξοδος

 
Τέλος κατάλαβα το πρόβλημα που οφειλόταν σε αυτό το nonsence http://www.blitzlogic.com/led_90.htm σχηματικό, κάνοντας δύναμη για επαναφορά σε λάθος δρόμο!

 
Ναι, αυτό είναι ένα κακόγουστο αστείο.
Απλά swap R2 με το C3.

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

 
Jack / / ani έγραψε:

RESET pin είναι ενεργό χαμηλή, αυτό σημαίνει ότι πρέπει να κατεδαφιστεί για να καταστεί δυνατή έδαφος, αλλά εδώ είναι ακριβώς το αντίθετο!
Γιατί?
Είμαι ή παίρνουν κάτι λάθος;
 

Welcome to EDABoard.com

Sponsor

Back
Top