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



Teraz jest 27 mar 2026, o 15:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 8 lut 2016, o 20:23 
Offline
Nowy

Dołączył(a): 04 paź 2013
Posty: 7
Pomógł: 0

Witam

Wymyśliłem sobie prościutki układzik na Attiny10.
Tzw. RC-Switch.

Na wejściu (PB0) podawany jest PWM w zakresie 1000-2000us (w praktyce może wystąpić 750-2300).
Wyjście PB2 steruje bramką mosfeta czyli interesuje nas tylko stan niski i wysoki.
Czyli gdy na PB0 jest PWM <1500us ustawiamy stan niski, gdy >1500 stan wysoki.

Z racji tego, że attiny10 ma 1kB pamięci zaprogramować go "trzeba" w C (lub asm ... ).

I tutaj bardzo proszę o małą pomoc.

Po przeczytaniu "dataszita" wychodzi, że nazwy rejestrów są inne i o ile pod arduino program już dawno byłby napisany (ehhh ta wygoda) to tutaj do roboty jest "trochę" więcej i niewiem czy jestem na dobrej drodze.

Na początku wymyśliłem aby "dopisać" sobie coś na kształt "micros();" w arduino i na tej podstawie zliczać microsekundy stanu wysokiego na PB0 i powiązać to z PCINT0.

Zacząłem się jeszcze wgłębiać w rejestry i .... trochę tego do ustawienia jest ...

Drugi wariant to INT0 (i tutaj też są jeszcze maski etc.) ale to wymagało by zmiany na PB2 wejścia.

Proszę o małą podpowiedź w tej materii (procka nie zmienię ;) )
Jeżeli gdzieś się już temat przewinął to proszę o wskazówkę (szukałem dość długo ale nic pod attiny4/5/9/10).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2016, o 14:03 
Offline
Nowy

Dołączył(a): 04 paź 2013
Posty: 7
Pomógł: 0

W tzw. międzyczasie wygenerowałem to:

#define F_CPU 8000000UL <--- TEGO NIGDY NIE WPISUJE SIĘ W KODZIE - pamiętaj o tym - szczególnie na tym forum - mirekk36

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


Po zaprzęgnięciu do sprawdzania symulatora, wychodzi, że "powinno" działać. Problem jest najprawdopodobniej jest z poprawnym odmierzaniem "czasu" w tym przypadku z 1us.
Gdzie jest błąd ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2016, o 18:15 
Offline
Nowy

Dołączył(a): 04 paź 2013
Posty: 7
Pomógł: 0

dziękuję za "F_CPU"

w międzyczasie uint_8t zostało poprawione na prawidłowe uint_16t ale to nadal nie to ...
szukam dalej



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

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Jak może być spełniony warunek dla t jeżeli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
do t wpisujesz wartość ze zmiennej 8 bitowej?

Dodatkowo, nie wpływa to na działanie, ale dlaczego tak zrobiłeś z tym fragmentem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

t używasz tylko lokalnie, więc po co volatile. A jak wyłączasz na wszystkie sprawdzenia t przerwania (a nie tylko na przepisanie wartości z tPulse) to jaki sens ma takie przepisywanie?

Także jak sterujesz PB2 tylko z jednego miejsca, to dawanie funkcji switch_on() i switch_off() jest trochę nieoptymalne. Albo dodaj inline do niej albo zrób te przełączanie w #define.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2016, o 18:30 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2605
Pomógł: 129

Tak z ciekawości to rozwiń co masz na myśli piszac PWM a podajesz długość czasu zamiast wspolczynnika wypelnienia? Zmienia sie Tobie jego częstotliwość?

Sent from my mobile.



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

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

To wygląda jakby miał być odbierany sygnał sterowania serwa. Ma on okres do 20ms a czas trwania stanu jeden określa położenie serwa. Czyli mamy trochę inaczej opisanego PWM. I pewnie chodzi o wyłapanie przekroczenia jakiego zakresu wychylenia.

--
Pozdrawiam,
Robert



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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