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



Teraz jest 29 mar 2024, o 12:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 29 kwi 2012, o 09:12 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Witam
W miarę już ogarnąłem timery. I teraz chcę zrobić taki projekt.
Polega on na tym że program do jego obsługi chcę umieścić w timerze 2 a nie w programie głównym
Ten program poniżej chcę umieścić w timerze 2. Timer będzie miał przerwanie co 1ms
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zmienna czas jest sterowana z głównego programu
I właśnie próbuję ale nie mogę sobie poradzić włożyć tego programu do timera.
Chcę go mieć w timerze ponieważ w programie głównym będą inne funkcje które będą ciągle chodziły a ten program ma chodzić nie zależnie od programu
Tylko że w timerze nie może być opóźnienia delay i dlatego mam ten poważny kłopot bo jak widać w programie delay jest sporo :(
w zmiennej czas będzie liczba z zakresu 0-255
Czy da się takie coś zrobić? i jak?
Na marginesie powiem ze ten program obraza silnikiem krokowym. Bo ja chcę żeby 2 silniki chodziły nie zależnie dlatego bym program do sterowania 1 silnikiem umieścił w timerze0 a drugim w timerze2
Proszę o pomoc

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2012, o 10:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

ale że niby jak ??
bo nie rozumiem jak chcesz coś umieścić w timerze0 i Timerze1
przecież timerem generujesz sobie przerwanie, a nie w nim umieszczasz program....

Chyba raczej chcesz to robić na przerwaniach , a nie w timerze ....

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2012, o 10:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Lepiej zarzuć tutaj cały kod. Bo wątpię, że ktokolwiek będzie w stanie coś z "tego" pomóc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2012, o 12:29 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Zmieniłem koncepcje i udało mi się zrobić
Temat do zamknięcia

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2012, o 14:41 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

No ok ale niestety przedstawię KARDYNALNE błędy jakie popełniłeś żebyś wiedział o co chodzi i na przyszłość ich unikał jak OGNIA:

1. NIGDY w przerwaniu nie stosuj poleceń _delay_xx() - NIGDY !

2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

Nawet jeśli jakoś to poprawiłeś ale nadal stosujesz takie dziwne rzeczy to niestety - będziesz miał kłopoty :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2012, o 12:04 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

mirekk36 napisał(a):
2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

A to dlaczego?
I jeżeli mam tego nie stosować to jak zmieniać opóźnienie za pomocą zmiennej?
Aktualnie to zmienna pobierana z adc jest wprowadzana do tej delayx i ładnie tak jak obrócę potencjometr to tak szybko silnik krokowy chodzi.
Jest jakaś inna funkcja opóźniająca gdzie można stosować za czas zmienną?

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2012, o 12:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Janadamis napisał(a):
mirekk36 napisał(a):
2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

A to dlaczego?


A to ciekawe? Piszesz tak jakbyś nie miał mojej książki pod ręką - w której nie dość że wyjaśniałem o co chodzi i powtarzać tutaj się nie będę bo musiałbym książkę przepisywać a szkoda czasu .... to tylko przypomnę, że jak nie doczytasz dlaczego - to sporo przykrych niespodzianek cię czeka - a później pojawisz się jak nie na tym to na innym forum i zadasz typowe pytania np:

"a dlaczego jak użyłem _dleay_ms() to nagle po kompilacji program w pamięci flash rozrósł się o 2-3kB ???"

albo jeszcze inne ..... no cóż - to jest temat strasznie często wałkowany i przeze mnie wyjaśniany już nawet nie tylko na elektrodzie ale i na tym forum wielokrotnie

Tak samo i na tym forum i w książce masz przykłady jak obejść tą niedogodność - o ile można to nazwać niedogodnością - jeśli do pozbycia się jej wystarczy dosłownie jedna linijka - we własnej funkcji np:

while( ms-- ) _delay_ms(1);

jak tego użyć? tak jak mówiłem - masz o tym w książce nie tylko napisane i opisane ale także przykłady w kodach programów na DVD.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2012, o 12:57 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Ok
Faktycznie przypominam sobie kilka sposobów które były opisane w książce :)
a więc już wszystko wiem.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2012, o 13:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

W takim razie przypomnę ci jak zrobić własną funkcję do której możesz już spokojnie przekazywać opóźnienie w ms czy us

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


napisanie takiej funkcji jak widzisz jest proste jak drucik

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 kwi 2012, o 14:49 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Dzięki
Przy da się :)

_________________
Programowanie to styl życia :D



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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