NM7010A i ATMega 128

Aug 15, 2009 10 Replies

Witam,



Walczê z uruchomieniem uk³adu Ethernetowego na M128 i NM7010A. Program pisze w Bascom AVR. Niestety program wiesza mi siê przy Config TCPIP. NM7010A uruchomi³em ju¿ z M32 ale chcia³em u¿yæ M128. Pytanie dlaczego to nie dzia³a skoro uk³ad poza M128 jest prawie taki sam? Poza tym ¿e u¿ywaj±æ M32 u¿ywa³em SCL, SDA i INT0 a w M128 INT0=SCL, wiêc u¿ywam SCL, SDA i INT2.



Pierwszy raz uzywam M128 i póki co jestem zaskoczony ka¿d± jej zmiana:-) Zaczynaj±æ od tego ¿e ISP nie idzie przez SPI jak w M32 i ni¿szych.



Mo¿e TWI nie dzia³a mi bo jeszcze o czym¶ nowym w M128 nie wiem? Czyta³em manuala i nie widze nic co by wskazywa³o ¿e mam gdzie¶ b³±d.



Niestety chwilowo nie mam nic innego pod rek± na I2c, ¿eby sprawdziæ komunikacje np z eeprom.



Mo¿e kto¶ bardziej do¶wiadczony w M128, ma jak±¶ sugestie?



Pozdrawiam Micha³



Zrobi³em prosty test ze zmian± stanu PD.0 i PD.1 co 1s. Wynik negatywny. Teraz pytanie czy to problem w konfiguracji M128 czy zd±¿y³em ubiæ TWI. Inne porty w M128 dzia³aj± bez zastrze¿eñ.

Rezonator dzia³a prawid³owo, UART dzia³a dzia³a prawid³owo.

Pozdrawiam Micha³

A jaki wpływ ma mieć TWI na sterowanie portem IO?? Albo uwaliłeś port, albo masz skonfigurowany jako TWI i proca g**** obchodzi, co mu wpisujesz do rejestru PORTD ;)... A swoją drogą - może uruchom toto na Mega32, ale z wykorzystaniem innego przerwania (int2, jeśli posiada, albo int1).. to wtedy wyjdzie, czy winny jest Twój soft, czy coś nie tak z Megą128 (np. uszkodzony egzemplarz)...

Pozdrawiam Konop

Michał pisze:

Wyłączyłeś tryb kompatybilności z Atmega103?

Mam ATMEGA128 Mode.

Przy tescie ze zmiana stanu portów PD.0 i PD.1 wy³±czy³em u¿ycie biblioteki TWI, wiêc powinno dzia³aæ. Kupi³em w³a¶nie drug± M128 i zabieram siê za testy.

Pozdrawiam Micha³

Biblioteki?? :P... Wiesz, nie wiem, jakiej biblioteki używasz, pewnie ma ona funkcję w stylu TWI init, ale upewnij się, czy NIE WŁĄCZASZ tego TWI w jakimś innym miejscu kodu. Dokładniej - rejestr TWCR, bit TWEN (2) ma być ustawiony na 0. W przeciwnym wypadku rejestr PORTD nie ma wpływu na stan pinów wyjściowych...

Pozdrawiam Konop

Dla testu napisa³em program, który ma tylko zmieniaæ stan portów PD.0 i PD.1 Ustawione s± jako wyj¶cia, maj± pullupy 10k. Ca³y czas na wyj¶ciu mam +5V.

Inne porty np PD.5 i PD.6 dzia³aj± bez zarzutu.

W miedzy czasie kupi³em drug± M128 i uniwesalna PCB. Objaw ten sam, wiêc co¶ w konfiguracji M128 mi krzaczy.

Je¶li chodzi o FuseBity config jest w linku:

formatting link
Pozdrawiam Micha³

Rozumiem, że zmiana z PD0 na PD5 polega po prostu na zmianie linii w stylu: PORTD |= (1<<0); na linię PORTD |= (1<<5); i że to wystarczy do zadziałania/niezadziałania, tak?? I ze program to w sumie prosta pętla i nic więcej w nim nie ma??!!

Albo w konfiguracji albo w kompilacji ;)... tak swoją drogą -sprawdź jeszcze raz, dokładnie, od nowa, czy na pewno sprawdzasz właściwe piny, czy nie masz jakiejś prostej głupoty, czy wgrywasz właściwy plik HEX itp ;)... Drugie pytanie - czego używasz do programowania?? Programmera jakiegoś, czy wgrywasz bootloadera?? Bo różnica jest spora - bootloader zapewne nie robi twardego resetu (chyba, że przez watchdoga), tak więc raz ustawiony rejestr nie będzie "kasowany" :/... dla 100% pewności wpisałbym w programie linię: TWCR = 0;

Sorry za trochę głupie uwagi, ale z tego co piszesz, to wszystko powinno działać ;)... dlatego szukam jakiegoś głupiego błędu po prostu...

Pozdrawiam Konop

Oto program testowy: $regfile "m128def.dat" $crystal = 8000000

Twcr = 0 Rel1 Alias Portd.0 Rel2 Alias Portd.1 Rel3 Alias Portd.5 Rel4 Alias Portd.6

Config Pind.0 = Output Config Pind.1 = Output Config Pind.5 = Output Config Pind.6 = Output

Do Toggle Rel1 Toggle Rel2 Toggle Rel3 Toggle Rel4 Waitms 1000 Loop

Robie to niestety w Bascomie AVR, wiêc plik idzie dobry. Sprawdzi³em ustawienia kompilatora i nigdzie nie ma u¿ytych portów D.

Doda³em linie TWCR = 0, efekt ten sam. Wszystkie linie posiadaj± pullupy 10k. Uzywam programatora STK200/300.

BTW TWI te¿ mi nie dzia³a, pod³±cza³em pod TWI na zmianê 24C04 oraz NM7010A. Niestety NM7010A zadzia³a tylko na TWI, dlatego muszê to uruchomiæ. Przy testch TWI u¿ywa³em pullupów 10k oraz 4k7 - bez efektów. Je¶li chodzi³o by o pamiêæ EEPROM u¿y³bym innych portów i po sprawie.

Wielkoktornie u¿ywa³em M32 i nie mia³em nigdy problemów. Przy M128 zaskoczy³o mnie programowanie ISP. Przyznajê siê, ¿e polecia³em bez czytania PDF co przyp³aci³em kilkoma godzinami nad zmian± PCB:-) Teraz po lekturze PDFa nie widzê przyczyn takiego zachowania uk³±du.

Pozdrawiam Micha³

Uff uruchomi³em uk³ad. Napisa³em zupe³nie nowy program i ruszy³y porty PD.0 i PD.1 Dlaczego wczoraj nie chodzi³y nie wiem, nie bylo tam nic wiecej poza tym co tu napisa³em.

Napisa³em te¿ od zera obs³uge TWI i wszystko zadzia³a³o.

Dziêki za uwagi i pomoc.

Pozdrawiam Micha³

Uwaga dla potomnych u¿ywaj±cych Bascoma do M128 i NM7010A. Nie wiem dlaczego (nie mam czasu szukaæ) ale u¿ywaj±c INT2 co chwile TWI wywala siê. Zmieni³em na INT3 i dzia³a super.

Pozdrawiam Micha³

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required