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



Teraz jest 9 kwi 2026, o 19:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 lut 2016, o 14:13 
Offline
Nowy

Dołączył(a): 19 sty 2016
Posty: 8
Pomógł: 0

Cześć
Waham się w jakim dziale napisać - w C czy Asm.
Zajrzałem do dump-a asm programu napisanego tylko w C i zastanowiło mnie, że nie znalazłem ładowania wskaźnika stosu: SPL/SPH (dajmy wystarczy SPL bo tiny13 ma 64RAMu).
Są tam przerwania TIMERa, podprogramy (czyli pełno push,pop,ret,rcall,..). Program niby działa jak powinien.
Popatrzyłem w notę Attiny12 i tam na str.3 jest diagram i "Hardware stack", ok - to rozumiem.

Ale w datasheet Attiny13a jest "Stack pointer" a na stronie 8 napisane:
"During interrupts and subroutine calls, the return address Program Counter (PC) is stored on the Stack. The Stack is effectively allocated in th e general data SRAM, and consequently the Stack size is only imited by the total SRAM size an d the usage of the SRAM. All user programs must initialize the SP in the Reset routine (before subroutines or interrupts are executed)."

Czy wskaźnik SP jest w tych prockach (t13) ustawiany sprzętowo na RAMEND? (przepraszam, nie mam teraz dostępu na warsztat bo można by było w sumie sobie gdzieś wyrzucić wartości SPL do zmiennych i jakoś odczytać).
bo w pkt. 4.5 datasheetu jest: "This Stack space in the data SRAM is automaticall defined to the last address in SRAM during power on reset.
Czy jest to jakaś wada/brak deklaracji w programie/kompilatorze?

Czego nie rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2016, o 17:17 
Offline
Użytkownik

Dołączył(a): 13 lut 2015
Posty: 99
Pomógł: 6

"Program counter" i "Stack pointer" to nie to samo.

edit:
wrzuć .lss tego kodu.

_________________
AVR-UART-lib
AVR-FAST-ENCODER
RFM7x-lib



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2016, o 23:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 237
Lokalizacja: Rzeszów
Pomógł: 11

U mnie kompilator go ustawia:

Składnia: [ Pobierz ] [ Ukryj ]
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Aczkolwiek w nocie katalogowej (str. 11, p. 4.5.1) jest coś takiego jak "Initial Value: 1 0 0 1 1 1 1 1" (159 lub 9F), czyli koniec pamięci SRAM.


Autor postu otrzymał pochwałę

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lut 2016, o 09:16 
Offline
Nowy

Dołączył(a): 19 sty 2016
Posty: 8
Pomógł: 0

Ah!, mea culpa. Mnie także ustawia, tylko nakręciłem się i szukałem w tekście literek SP/SPL/SPH :) (coś na wzór "ldi SPL,xx").
Dzięki za zajrzenie.
BTW: w nocie dla megi8 jest initial 0/0 , hmm pewnie dlatego małe sprzeczności w datasheet (copy&paste?), czyli (jak zwykle) zawsze trzeba dokładnie sprawdzać noty.

[edit] A wracając do przyczyn, już wiem czego nie rozumiałem, hardware stack (w avr) zrozumiałem jako brak możliwości ustawienia programowo wartości SP /i chyba to się pokrywa?/ tzn.ustawiane przez procek na koniec RAMEND i tyle, a "software" jako możliwe do ustawienia ..i jadąc dalej skojarzyłem ładowanie jako jakieś LD ESP, xx (z intela) - czyli instrukcje asm ladującą wskaźnik procka (instrukcją) a nie rejestr(!) + kłania się że jeszcze nie nauczyłem się mnemoników Asm z Avr, no i w dodatku 10 lat już na intelu nie pisałem w asm (teraz głównie python) - więc zapomniałem i poruszam się we mgle.

@jnk0le: i?



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 4 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO