Vizitator -SQD- Postat Mai 4, 2011 Partajează Postat Mai 4, 2011 Bună, tuturoram incercat sa realizez un program de test - si anume sa "plimb" pe fiecare pin din PORTA (al microcontrollerului ATMEGA64) cate un LED si prezinta o comportare ciudata. Dupa ce m-am saturat de analizat codul am implementat acelasi cod pentru PORTC si a mers fara probleme. imi poate explica si mie ce am omis din datasheet ? si cum pot rezolva aceasta problema ... intrucat chiar am nevoie si de acest PORTA.multumesc anticipat,-SQD- Link spre comentariu
adynis Postat Mai 4, 2011 Partajează Postat Mai 4, 2011 Ce comportament ciudat? Cam cum e portiunea de cod care se ocupa de "plimbare" ? Link spre comentariu
Vizitator -SQD- Postat Mai 5, 2011 Partajează Postat Mai 5, 2011 asta e codul: /*** PB4 ---------* | - * 1 2 * - | * PB3 --------* | - * 3 4 * - |* PB2 --------* LED1 - PA4 source, PA3 sink. restul pull-ups.* LED2 - PA3 source, PA4 sink. restul pull-ups.* LED3 - PA3 source, PA2 sink. restul pull-ups.* LED4 - PA2 source, PA3 sink. restul pull-ups.*/#include <avr/io.h>#include <util/delay.h> #ifndef F_CPU#define F_CPU 8000000UL#endif #define DELAY_TIME 1000#define N_LED 4 struct leds { uint8_t mDDRA; uint8_t mPORTA;} ledData[] = { { 0b00011000, 0b11110111 }, { 0b00011000, 0b11101111 }, { 0b00001100, 0b11111011 }, { 0b00001100, 0b11110111 },}; int main(){uint8_t i; for(;;) { for(i = 0; i < N_LED - 1; i++) { DDRA = ledData[i].mDDRA; PORTA = ledData[i].mPORTA; _delay_ms(DELAY_TIME); } for(i = N_LED - 1;i > 0; i--) { DDRA = ledData[i].mDDRA; PORTA = ledData[i].mPORTA; _delay_ms(DELAY_TIME); } }} dupa cum spuneam pe PORTC merge bine se aprind: LED1-2-3-4-3-2-1-..., iar pe PORTA se comporta ciudat in sensul ca o data la 3 secunde se aprinde doar LED1. vreo idee ? -SQD- Link spre comentariu
nana Postat Mai 5, 2011 Partajează Postat Mai 5, 2011 Am verificat ochiometric codu pare ok. Singura varianta software care iti ramane sa nu mearga pe portul A, este sa fie activa XRAM. Altfel este ceva hardware, poate ai ars portul respectiv, vezi sa limitezi curentul prin leduri-le alea pentru ca pe portul A in special nu poti sa ai curenti mai mari de 100mA respectiv 40mA pe pin. in total pe toate iesirile (vezi ca scrie in subsol datasheet la electrical caracteristic). Link spre comentariu
script22 Postat August 11, 2011 Partajează Postat August 11, 2011 * LED1 - PA4 source, PA3 sink. restul pull-ups.* LED2 - PA3 source, PA4 sink. restul pull-ups.* LED3 - PA3 source, PA2 sink. restul pull-ups.* LED4 - PA2 source, PA3 sink. restul pull-ups.LED2 - PA3 source, PA4 sink. restul pull-ups.* LED3 - PA3 source, PA2 sink. restul pull-ups.ai pus de 2 ori pa3 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum