-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin.
stu.neva.ru!aioe.org!peer01.ams4!peer.am4.highwinds-media.com!news.highwinds-me
dia.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.ne
ostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: 74HCT245 jako port wejściowy - nie działa, choć powinien
Newsgroups: pl.misc.elektronika
References: <5f3e204e$0$520$65785112@news.neostrada.pl>
From: Atlantis <m...@w...pl>
Date: Tue, 25 Aug 2020 18:00:46 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
Thunderbird/68.11.0
MIME-Version: 1.0
In-Reply-To: <5f3e204e$0$520$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=utf-8
Content-Language: pl
Content-Transfer-Encoding: 8bit
Lines: 31
Message-ID: <5f4535af$0$536$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.27.20.46
X-Trace: 1598371247 unt-rea-a-02.news.neostrada.pl 536 83.27.20.46:32970
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 2500
X-Received-Body-CRC: 459153783
Xref: news-archive.icm.edu.pl pl.misc.elektronika:756589
[ ukryj nagłówki ]Ok, wygląda to tak, jakby faktycznie winę za niestabilne działanie
układu ponosiło przepełnienie stosu. Zamiast wywoływać funkcję
key_update() z pętli głównej, umieściłem tam odpowiadający jej fragment
kodu (cc65 na chwilę obecną jest dość ubogim kompilatorem, wśród jego
ograniczeń znajduje się m.in. brak funkcji inline). Wszystko zaczęło
działać.
Trochę mnie to dziwi, bo:
- Nie mam w tym kodzie głęboko zagnieżdżonych funkcji. Funkcje
key_update() była wywoływana bezpośrednio z pętli głównej, ona sama
wywołuje tylko funkcję millis() - wzorowaną na Arduino funkcję
zwracającą ilość taktów systemowych generowanych w przerwaniu (ze
względu na niskie taktowanie są one zwiększane co 20 ms, a nie 1 ms).
- Sprzętowy stos 6502 jest co prawda niewielki, ale cc65 generuje
własny, programowy stos.
- Pamięci jest sporo jak na taki układ (8kB) i jak na razie zbyt mocno
jej nie wykorzystuję. Najwięcej zużywają chyba bufory dla UART-a (2x 256
bajtów). Jest też kilka pomniejszych buforów i trochę zmiennych. Aż
sprawdziłem, czy przypadkiem łańcuch tekstowe podawane jako argumenty
funkcji nie trafiają przypadkiem do RAM-u, ale w generowanym przez
kompilator kodzie asemblerowym są oznaczone jako .rodata.
Gdyby kogoś szczególnie interesowała ta zagadka, to wrzuciłem kody
źródłowe na githuba,
To jest ten problematyczny:
https://github.com/marekw1986/RetroEG
A tutaj działający:
https://github.com/marekw1986/TalkingClock
(Definicja key_update w io.c)
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
Najnowsze wątki
- 2025-07-21 cashback
- 2025-07-21 Pomarańczowy rakietnyj on de telefon ;)
- 2025-07-21 Gdańsk => Kotlin Developer <=
- 2025-07-21 Warszawa => Sales Executive / KAM <=
- 2025-07-21 Gdańsk => Programista Kotlin <=
- 2025-07-21 Białystok => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-21 opornosc falowa
- 2025-07-21 Katowice => Key Account Manager IT <=
- 2025-07-21 Wrocław => Controlling systems Consultant <=
- 2025-07-21 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-20 Absurdalny zakaz fotografowania będzie nowelizowany
- 2025-07-20 Takie tam...
- 2025-07-20 https://newsgrouper.org/pl.soc.prawo blokuje posty: 154 posts blocked.
- 2025-07-20 Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- 2025-07-20 Tani zakup z ali?