Sari la conținut
ELFORUM - Forumul electronistilor

PORTA ATMEGA64 related


Vizitator -SQD-

Postări Recomandate

Vizitator -SQD-

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
  • Răspunsuri 4
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • adynis

    1

  • nana

    1

  • script22

    1

Top autori în acest subiect

Vizitator -SQD-

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

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
  • 3 luni mai târziu...

* 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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări