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



Teraz jest 13 lis 2024, o 15:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 23 mar 2023, o 13:45 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

Hej zwracam się o pomoc ponieważ już nie mogę wyjaśnić zjawiska, które zachodzi z moją attiny13. Pewnie mam błąd w programie, ale nie mogę się go doszukać.

Napisałem prosty programik do włączania taśmy ledowej, sterowania PWM oraz jest wykorzystany jeden przycisk.
W pętli głównej wymieram przyciskiem 100% świecenia lub 50% świecenia na biało.
Jeśli podczas włączania zasilania trzymam przycisk to wchodzę do wyboru innych kolorów.
Ustawienia koloru zapisuję w pamięci EEPROM, aby po uruchomieniu odczytać zmienne 8-bitowe ledr, ledg, ledb.

Ogólnie wszystko działa według założeń, po włączeniu zasilania mam kolor taki jaki był wybrany poprzednio.

ALE...

Niestety jak testuję i losowo np. po 5-15 włączeniach zasilania taśma nagle świeci innym kolorem, albo na 50% zamiast na 100%, albo jak mam wybrany biały kolor to zaświeci na błękitny, albo nawet wejdzie ustawienie którego nie mam w prgramie np. czerwony świecący na 10%, itp.
Na początku myślałem, że mam problem ze stosem bo program zajmował 88,3%, więc go odchudziłem i obecnie zajmuje 76,6%:

----------------------------------------
Device: attiny13

Program: 784 bytes (76.6% Full)
(.text + .data + .bootloader)

Data: 7 bytes (10.9% Full)
(.data + .bss + .noinit)

EEPROM: 3 bytes (4.7% Full)
(.eeprom)

----------------------------------------

Czy jest mi ktoś w stanie pomóc? Czy problem jest z moim wsadem czy problem jest gdzieś indziej?

MCU: AtTiny13
F_CPU: wewnętrzny oscylator 9 600 000 Hz (wyłączony CKDIV)

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


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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2023, o 16:59 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

Spróbuj po funkcji led_and_key_init(); dać niewielkiego delaja tak z 5ms.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2023, o 13:35 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

@tonygryps zrobiłem tak jak zaproponowałeś i trochę się poprawiło. Już nie wchodziły mi tak często inne kolory po włączeniu zasilania, ale jednak zjawisko występowało.

Zmieniłem ostatecznie funkcję do ustawienia koloru bo bardzo mi się nie podobała, była nieoptymalna i wydawała mi się podejrzanie. Dodatkowo nie wpisywała do zmiennych ram_cfg.ledr, ram_cfg.ledg, ram_cfg.ledb wartości kolorów i moim zdaniem to był ten błąd.

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


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


Jak widać znaczna różnica :P mocno odchudziło to kod :lol: Po tej zmianie, dziwnego efektu wyświetlania przypadkowych kolorów już nie ma.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2023, o 09:08 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

Cytuj:
Jednak ten delay musi być, bo jak go wyrzuciłem to znowu co jakiś czas inne kolory wchodziły po restarcie.

Chodzi o to żeby dać trochę czasu na ustalenie się stenów na pinach procka , możesz jeszcze dać podciąganie rezystorami tych pinów od przycisków tak z zakresu 10kom do 47kom.



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