Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 lut 2025, o 00:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 27 kwi 2015, o 22:57 
Offline
Nowy

Dołączył(a): 27 kwi 2015
Posty: 8
Pomógł: 0

Witam serdecznie, mam następujący problem. Programuję procesor atmega128a, mam do niej podpięty kwarc 16MHz, fuse bity mam zadeklarowane tak jak na rys1.

Obrazek

W konfiguracji kompilatora mam podpięte że częstotliwość pracy będzie 16MHz (-DF_CPU=16000000UL), również w pliku z funkcją main mam deklarację define F_CPU 16000000UL czyli według mnie z tym jest wszystko w porządku.

Problem pojawia się gdy chcę z funkcji main wyjść do podprogramu i wrócić, jak widać na rys2. w funkcji main mam funkcję initSPI(); w linii 16, jest wywoływana derektywa CALL z miejscem mojego podprogramu w pamięci, wszystko jest ok.
Obrazek

Wskaźnik stosu zmniejszył się o 2 czyli jest ok, ale do pamięci nie została zapisana poprawna wartość miejsca powrotu, zostały jakieś śmieci, adres powrotu powinien być w komórkach 10FC i 10FB.

Obrazek

Prosiłbym o wyrozumiałość, od niedawna mam styczność z procesorami avr. Jeżeli potrzebujecie dodatkowych informacji proszę pisać śmiało, zależy mi na rozwiązaniu tego problemu bo męczę się już długo i już nie wiem czego się chwycić.

Pozdrawiam i dziękuję za wszelkie sugestie.

EDIT: zastanawia mnie również dlaczego wskaźnik stosu po wywołaniu programu jest ustawiony na 10FD, domyślam się że komórki 10FE i 10FD tworzą adres powrotu z funkcji main zapisany przez cstartup (który z resztą też nie jest poprawny) natomiast do czego jest ostatnia wolna komórka pamięci, ta sierota na końcu 10FF?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2015, o 07:47 
Offline
Użytkownik

Dołączył(a): 21 mar 2015
Posty: 25
Pomógł: 3

Atmega128A ma bit kompatybilności z Atmega103 (wydaje mi się że jest on domyślnie włączony).
Może to dawać dziwne efekty.

Marek


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2015, o 07:53 
Offline
Nowy

Dołączył(a): 27 kwi 2015
Posty: 8
Pomógł: 0

Potwierdzam że jest coś takiego (na screenie tego dobrze nie widać ale fuse nazywa się M103C(albo jakoś podobnie)) i rzeczywiście u mnie jest zapalony, po powrocie z pracy przetestuję go bez tego bitu (z resztą bez sensu jest u mnie zapalony). Dziękuję za sugestię.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2015, o 15:42 
Offline
Nowy

Dołączył(a): 27 kwi 2015
Posty: 8
Pomógł: 0

Dziękuję, to rozwiązało mój problem. Piwo dla Pana.

EDIT: temat do zamknięcia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO