PDA

Επιστροφή στο Forum : Πρόβλημα με AVR



Panoss
27-02-06, 18:12
Λοιπόν...έγραψα το εξής πρόγραμμα για ένα AT90S1200, να ανάβει δύο leds, το ένα συνδεδεμένο στο PORTB και το άλλο στο PORTD. Αλλά ανάβει μόνο αυτό στο PORTB. Γιατί συμβαίνει αυτό? Άλλαξα το MCU με άλλο μπας κι ήταν καμμένο το PORTD αλλά τίποτα. Μέτρησα με το βολτόμετρο το PD0 αλλά δε βγάζει ρεύμα. Αντίθετα το PB7 βγάζει ρεύμα κανονικά. Δοκίμασα με όλα τα πινς του PORTD αλλά τα ίδια.
Τι μπορεί να συμβαίνει?
Το πρόγραμμα είνα το εξής απλούστατο:
Από κάτω το κύκλωμα.


.include "d:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\1200def.inc"
.def temp=r16

.cseg

loop:
ldi temp,0b11111111 ;
out DDRD, temp ;PortD all outputs
sbi PORTD,pd0 ;Set το pd0(pin 2) για να ανάψει το led 2


out DDRB,temp
sbi portb,pb7 ;Set το pb7(pin 19) για να ανάψει το led 1
rjmp loop

shoco
28-02-06, 08:38
βαλε το led ετσι ωστε ο AVR μολις κανει το pin 0 να αναβει το led. Αν θυμαμαι καλα δε μπορει να οδηγει τοσο μεγαλο ρευμα

Panoss
28-02-06, 09:40
Και το pin PB7 πώς το οδηγεί?
Το led έτσι κι αλλιώς χρειάζεται ελάχιστο ρεύμα.
Το θέμα είναι ότι όταν αλλάζω την τιμή σε οποιοδήποτε πιν του PORTD, και έχω καθορίσει το PORT ως έξοδο με το DDRD, ΔΕΝ αλλάζει η τάση.

shoco
28-02-06, 10:21
PORTD = 0
DDRD = ff

PDx = 1

Panoss
28-02-06, 10:39
Τελικά ήταν βλακεία δικιά μου. Ο AVR μια χαρά δουλεύει! Απλώς εγώ έκανα τη ΜΕΓΑβλακεία να φορτώνω λάθος .hex αρχείο στο MCU!!! Μάλιστα το 'κανα καμια 50ριά φορες..σωστός εε???

ΕΥΚΛΕΙΔΗΣ
28-02-06, 10:59
Πάντως ο εν λόγω micro είναι κατηργημένος...

gsmaster
28-02-06, 19:04
Aν θες να χαρείς για πολύ τον μΕ σου, βάλε και καμια αντίσταση σε σειρά με το led ;)