tqfp64

Feb 18, 2007 9 Replies

witam



wczoraj przutowa³em i pierwszy raz uruchomi³em atmege128 w obudowie tqfp64. Z lutowaniem tak drobnego rastru mia³em problem wiêc atmege przylutowa³em jak nastêpuje: pocynowa³em pola lutownicze, umie¶ci³em atmege na miejscu i powoli przejecha³em grotem (temp. 270oC) po wszystkich nó¿kach. Nie dodawa³em wiêcej cyny, bo sprawdzi³em, ¿e rezystancja miêdzy goldpinami a pinami uk³adu jest blika 0Ohm.



Bez problemu odczytuje i zapisuje fusy bits oraz odczytuje pamiêæ. Dziwne jest, ¿e co pare zapisów pokazuje siê b³±d weryfikacji przy 100% (chyba -



24), ale program jest w pamiêci (pewnie dlatego, ¿e krótki). (U¿ywam PonyProg2000)

Napisa³em krótki program, który generuje 1kHz na wszystkich portach. I z tym jest problem. Czêstotliwo¶æ mierze multimetrem. I tu jest problem. Raz uda siê odczytaæ 1kHz na portach, a raz nie. Kilkakrotny reset czasami pomaga. Raz uda³o mi siê bezpo¶rednio na pinie odczytaæ prawid³ow± czêstotliwo¶æ, a na odpowiednim goldpinie nie. A czasami nawet na pinach pokazuje 0Hz.



Czy sposób polutowania uk³adu jest ¼ród³em problemów?


U¿ytkownik "ThomasN" snipped-for-privacy@serwer.jakis.pl> napisa³ w wiadomo¶ci news:er98jq$h3t$ snipped-for-privacy@inews.gazeta.pl...

Tak i nie Jak przewodz± ³apki i nie ma zwaræ, to jeszcze mog³e¶ go przegrzaæ, albo masz "brudn±" p³ytkê (ze zwieraj±cymi ³apki paprochami). Jednak stawiam na b³êdny program, skoro czasami dzia³a.

Program jest zbyt prosty na b³êdy, ale mo¿e czego¶ nie widze. Pó¼niej w asm napisze dla pewno¶ci. Oto kod:

#define F_CPU 16000000UL #include <avr/interrupt.h>

#include <avr/io.h>

#define nop() asm volatile ("nop")

unsigned int V;

ISR(TIMER1_COMPA_vect) { if (V == 0) { PORTA = 0b10101010; PORTB = 0b10101010; PORTC = 0b10101010; PORTD = 0b10101010; PORTE = 0b10101010; PORTF = 0b10101010; PORTG = 0b10101010; } else { PORTA = 0b01010101; PORTB = 0b01010101; PORTC = 0b01010101; PORTD = 0b01010101; PORTE = 0b01010101; PORTF = 0b01010101; PORTG = 0b01010101; } V = !V; }

int main(void) { DDRA = 0xFF; PORTA = 0xFF; DDRB = 0xFF; PORTB = 0xFF; DDRC = 0xFF; PORTC = 0xFF; DDRD = 0xFF; PORTD = 0xFF; DDRE = 0xFF; PORTE = 0xFF; DDRF = 0xFF; PORTF = 0xFF; DDRG = 0xFF; PORTG = 0xFF; V = 0x0;

OCR1AH = (unsigned char)((F_CPU/(2*1UL*1000)-1)>>8); OCR1AL = (unsigned char)(F_CPU/(2*1UL*1000)-1);

TIMSK = 1<<OCIE1A; TCCR1A = (0<<WGM11)|(0<<WGM10); TCCR1B = (0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10); sei(); for(;;) { nop(); } }

Jeszcze jedno. Jak usun±c te zwarcia poprzez paprochy, których nie widze.

polutowania takze, a jestes pewine polaczen? sa kondensatory blokujace? solidna masa? wszystkie VCC i GND polaczone odpowiednio razem?

Przej¶cia s± - sprawdza³em multimetrem.

A¿ trzy - przy ka¿dym vcc i avcc.

prawie ca³a bottom layer to masa - tylko 6 innych ¶cie¿ek i vcc.

Na ka¿dym pinie atmegi vcc i gnd jest odpowiednie napiêcie.

Teraz jest jeszcze gorzej. Atmega chodzi tylko na wewnêtrznym oscylatorze. Za ka¿dym razem jak prze³±cze na zewnêtrzny kwarc tracê po³±czenie z uk³adem i muszê pod³±czyæ zewnêtrzny sygna³ zegarowy. Wypróbowa³em dwa inne kwarce, ale efekt ten sam.

Użytkownik ThomasN napisał:

Spróbuj ustawić bit CKOPT. Często miałem przypadki, że bez ustawienia tego bitu kwarc się nie wzbudzał albo chodził na jakiejś dziwacznej czastocie.

Pozdrawiam Grzegorz

ten bit chyba koniecznie trzeba ustawiæ dla kwarców powy¿ej 8MHz. Doda³em wiêcej cyny na nó¿ki XTAL i pomog³o - przynajmniej narazie. Uda³o siê poprawnie ze wszystkich portów odczytaæ te¿ generowan± czêstotliwo¶æ 1kHz.

Po polutowaniu uk³adu i pierwszych testach przyci±³em laminat no¿yczkami do prawid³owych wymiarów. Mo¿e po³±czenia lutowane tego za bardzo nie lubi±?

Czasem te¿ pomaga przylutowanie obudowy kwarca do masy. Sprawd¼ te¿ czy aby na pewno masz prawid³owo wlutowane kondensatorki przy³±czone do kwarca.

Pawe³

Niestety mój multimetr mierzy poprawnie dopiero od nF i bez pod³±czonej pojemno¶ci pokazuje oko³o 80pF. Gdy mierze te 22pF to pokazuje 100pF, czyli o te 20pF wzrasta wskazanie. Jednek gdy wlutowa³em atmege zacza³ pokazywaæ nieskoñczon± pojemno¶æ (czyli powy¿ej mF, ale rezystancja jest powy¿ej MOhm), ale to pewnie przez atmege.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required