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



Teraz jest 12 lis 2024, o 17:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 29 ] 
Autor Wiadomość
PostNapisane: 6 sty 2013, o 14:41 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Witam!

Męczę mały problem i nie mogę dojść o co chodzi. Otóż chce wykonać przełącznik do odbiornika rc który poprzez wykrycie odpowiedniej długości sygnału będzie mi załączał lub wyłączał urządzenie. Oto mój kod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w czym może tkwić problem? procesor to attiny13 taktowany wew oscylatorem 9,6 MHz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
możesz kolego opisać na czym polega twój problem oraz jaki sygnał podajesz na wejście INT0 ??

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:20 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Problem polega na tym, że nie działa funkcja ustawienia stanu wysokiego na PB3. Podaje sygnał o częstotliwości ok 50hz i o czasie trwania 1 impulsu od około 1ms do 2ms czyli sygnał pwm



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:23 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

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


wytłumacz mi jak to ma według Ciebie zadziałać.
PinB1 to jak rozumiem w aTinny jest do IC0? Nie chce mi się teraz tego sprawdzać, ale po kodize tak wnioskuje. Może warto by było go podciągnąć do VCC. Podejrzewam że chciałeś to zrobić ale coś Ci nie wyszło bo zastosowałaś bardzo trudny do odczytu zapis :
Cytuj:
PORTB = 0b00000100;

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:34 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

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

aczkolwiek problem nie jest w dalszym ciągu rozwiazany



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:43 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
nie widzę w kodzie załączenia przerwań globalnych sei();

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 15:58 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

wrzucam kod po poprawkach lecz w dalszym ciągu nic się nie dzieje.

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

Zauważyłem ze procesor jest Tiny13A czy może mieć to znaczenie? Po podciągnięciu zasilania do pinu wejściowego jest dziwne napięcie w granicach 1.5V.

staneq napisał(a):
To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.


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

A nie jest to zerowanie licznika?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 16:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 cze 2012
Posty: 171
Pomógł: 5

Witam,
to może inaczej, małymi kroczami. Najpierw sprawdź czy w ogóle generują ci się przerwania zew. np. zapalając diodę. Później sprawdź timer.

Pozdrawiam
R.L.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 16:51 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

KBCH napisał(a):

staneq napisał(a):
To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.


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

A nie jest to zerowanie licznika?


Jest ale tylko w pewnych warunkach. Jeżeli tak ma być tzn że nie zrozumiałem o co Ci chodzi.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 16:55 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Ja jestem noga z programowania dlatego pytam tylko, jestem wdzięczny za wszystkie sugestie i podpowiedzi.
Jak Twoim zdaniem powinno to wyglądać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 17:28 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

Nie wiem dokładnie co chcesz uzyskać. Czytam i czytam ale nie potrafię tego zrozumieć.
Zrozumiałem tylko że masz mierzyć czas impulsu (jak mniemam z kodu w stanie niskim) i ustawić 1 na pinie wyjściowym jeżeli długość ta będzie mieścić się w przedziale <800;1350) w przeciwnym razie ustawić na 0
Jakbyś mógł napisać to tak jasno jak się tylko da i być może jakiś algorytm (jeśli masz a jeśli nie to napisz go sobie to Ci znacznie ułatwi sprawę)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 17:45 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Well, I'm no Servo expert, but...

If the RC receiver channel is for driving a servo then the signal is likely a series of pulses.

A pulse occurs about once every 20 mSec.

The width of the high time of the pulse is about 1 to 2 mSec.

A pulse width of 1.5 mSec generally positions the servo to the middle of its full range of travel, (e.g. 90 degrees for a 0 to 180 degree range servo).

One could use the micro to read in the pulses and measure their width.

If the pulse width is < 1.25 mSec, (Full left rudder = about 1.0 mSec), then turn On the lights.

If the pulse width is > 1.75 mSec, (Full right rudder = 2 mSec), then turn Off the lights.

If the micro has nothing else to do then it could read the pulse width in the Main Loop.

If the micro has other things to do then one could use interrupts to time the pulse.



z tego co wywnioskowałem to impuls trwa od 1ms do 2 z przerwą co około 20ms czyli wynika z tego ze gdy jest stan 1 to nic się nie dzieje gdy jest 0 licznik ten wewnętrzny zlicza te 20ms + licznik zewnetrzny który zlicza długość tego impulsu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 19:24 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

No dobra napisałem coś takowego i... Nie działa;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zapwne pomyliłem nazwę któregoś z rejestrów ale nie wiem którego. Prosze o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 20:00 
Offline
Moderator
Avatar użytkownika

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

staneq napisał(a):
Nie wiem dokładnie co chcesz uzyskać. Czytam i czytam ale nie potrafię tego zrozumieć.
Zrozumiałem tylko że masz mierzyć czas impulsu (jak mniemam z kodu w stanie niskim) i ustawić 1 na pinie wyjściowym jeżeli długość ta będzie mieścić się w przedziale <800;1350) w przeciwnym razie ustawić na 0
Jakbyś mógł napisać to tak jasno jak się tylko da i być może jakiś algorytm (jeśli masz a jeśli nie to napisz go sobie to Ci znacznie ułatwi sprawę)


Ja też już wcześniej obserwowałem ten temat ale też przyznam że nie rozumiałem za bardzo o co chodzi więc się nie odzywałem. Teraz z końcówki widzę że chodzi chyba o badanie czasu impulsu jako do serwo. OK już jaśniej ...

no ale o co chodzi w ostatnim poście ??? :(

Panowie jak podajecie jakiś kod - to nie piszcie proszę:

"I NIE DZIAŁA"

skąd ja czy ktoś może wiedzieć co koledze nie działa ??? no tak nie można opisywać problemu - jest sobie odpalone przerwanie CTC, ma migać dioda. To co to znaczy NIE DZIAŁA ? jaki jest efekt ? dioda miga? nie miga, świeci ale słabiej? przerwanie nie działa? jakiś błąd w kompilatorze ??? no bo tracimy tylko troszkę czas :(

ważne jest aby dobrze zadać pytanie - to wtedy szybciej można udzielić odpowiedzi. Tyle że autor zwykle wiedząc wszystko o swoich założeniach , schemacie itp zakłada że inni też to skądś wiedzą .... tylko ciekawe skąd?

no i teraz jakie jest pytanie w ogóle - ??? proszę bardziej sprecyzować temat - wtedy jeśli będę w stanie to postaram się pomóc ok ?

_________________
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: 6 sty 2013, o 20:09 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Okej, na wstępie przepraszam.

Problem jest następujący, założyłem sobie, że zrobię włącznik PWM który po dostaniu określonej długości impulsu ustawi na pinie PB3 stan 0 lub 1. Niestety nie ustawia się stan 1 (bo 0 cały czas panuje), w czasie kompilacji nie ma błędu wiec zacząłem szukać problemu małymi kroczkami jak doradził jeden z kolegów. Napisałem przerwanie CTC dioda niestety nie miga



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2013, o 20:20 
Offline
Moderator
Avatar użytkownika

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

a to teraz rozumiem więcej a porada oczywiście była bardzo cenna jak widać ;) bo można sobie pisać wielki program ale co z tego jak jeden z mniejszych bloczków jak przerwanie nie działa ;) no to trza szukać błędu - w kodzie

nota PDF w łapki i do roboty ;)

.... no ale jak się popatrzy do PDF'a to szybko się okaże że ten kod wyżej jest poprawnie napisany jeśli chodzi o odpalenie tego przerwania. Niestety SZKOLNY błąd - a prawie w KAŻDYM swoim poradniku VIDEO pokazuję jak ja zaczynam sobie pisać szkielet programu - przypomnę tutaj ale chyba po raz ostatni ;) nie mówiąc że i w pierwszej książce to wałkuję na jej samym początku

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


a kolega co ? ..... widzi różnicę ? bo to właśnie pewnie przez ten NIBY drobny szczegół jak to kolega napisał NIE DZIAŁA - bo rzeczywiście - tak kolega chciał pisząc swój kod żeby nie działało


Autor postu otrzymał pochwałę

_________________
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: 6 sty 2013, o 20:39 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Faktycznie po dodaniu pętli nieskończonej PB3 zmienia stan:) no to teraz przyjrzę się mojemu początkowemu programowi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2013, o 22:38 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Czy mógłbym prosić o pomoc w analizie pewnego kodu który znalazłem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Moja interpretacja jest taka ze timer0 dodaje do zmiennej length wartość 255 co czas zgodny z cyklem zegara czyli 1.2MHz poniewaz nie widzę na razie prescalera.
Gdy stan wejściowy na pinie PB0 j== 1 zmienna length jest zerowana rejestr TCNT0 jest zerowany i prescaler ustawiany jest na 64 czyli zlicza co 18750Hz i zaczynany jest pomiar długości tego impulsu. Następnie gdy na pinie PB0 pojawi się stan niski zatrzymywany jest timer0. I teraz mój dylemat, jeśli TCNT0 jest > od 32 to zmienna new= 0 a jak TNCT0 jest< od 32 to zmienna new=1.Następnie jeśli new ==1 i toggle==1 to toggle=0, beeping=1 w przeciwnym razie gdy togle!=1 toggle=1 a beeping=0.

Moje pytania to:
1.czy prawidłowo interpretuje kod?
2.skąd się wzięła wartość 32 i jest ona wyznacznikiem do porównania TCNT0?
3.Wiem ze zmienna toggle służy do zmiany stanu ale jak skoro nie jest użyta w żadnej innej funkcji.
4.co daje nam dodawanie do zmiennej length wartości 255?

Z góry wybaczcie ze zadaje pewnie banalne pytania lecz jak mówiłem jestem noga z programowania i uważam ze lepiej sie zapytać niż nauczyć się jakiś złych nawyków



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2013, o 10:19 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1. Nie. Timer0 jest zatrzymany. Dopiero po zmianie stanu na PB0 jest uruchomiony.
2. 32 wynika z czasu 1,7ms (czas na początku pliku inny niż w komentarzu dalej). ( 1 / ( 1,2MHz/64 ) )*32
3. toogle to zmienna pomocnicza i jest używana w ISR (PCINT0_vect).
4. po pierwszym wciśnięciu timer ciągle działa i co 13,6ms się przepełnia generując sygnał przerwania. Biorąc po uwagę liczby 3000 i 255 to po 12 takich przerwaniach za pierwszym razem (za drugim będzie inaczej bo length nie jest zerowane) ustawiona zostanie flaga beeping

Jeśli nie chcesz się uczyć złych nawyków to wywal cały ten kod do kosza bo:
-rejestry ustawiane są w beznadziejny sposób (liczby dziesiętne, nie używane nazwy bitów w rejestrach)
-beeping nie jest z modyfikatorem volatile
-jak będziesz chciał coś zmienić to czekają cię powtórne obliczenia

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2013, o 22:56 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Ponownie borykam się z problemem gdyż tym razem postanowiłem sprawdzić przerwania zewnętrzne. Zadanie jest proste za pomocą przerwań zewnętrznych zliczmy impulsy, jesli jest ich jakaś tam ilość to zmienia stan na innej nóżce. W moim wypadku wyzwolenie odbywa się przy zboczu narastającym. Impulsy generuje przez ne555 f=ok1Hz. Podłączyłem PB0 rezystorem 30k masę i podaje impulsy. Problem jest taki, że nie liczy mi tyle ile chce impulsów, zlicza ich zdecydowanie za dużo i za każdym razem inną ilość. Przedstawiam kod, w czym może tkwić problem? Dodam jeszcze ze procesor to atmega8
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: 11 sty 2013, o 11:14 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1. Używając w kodzie bit_is_set(PINB,PB0) odchodzisz od tego co sam robisz na początku definiując wejścia i wyjścia. Lepiej tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

2. Nie wiem też po co właściwie tak robisz. Zauważ, że jak ustawisz coś na porcie (PORTx) to jak chcesz natychmiast odczytać ten stan (PINx) to musisz odczekać jedną instrukcję np. nop
3. Jeśli chodzi o dostęp do zmiennych volatile, które są większe niż 8 bitów to nie należy tego robić jak masz w kodzie, ponieważ długa zmienna nie zostanie odczytana w jednym takcie zegara tylko zajmie to więcej czasu, a przerwanie może zostać zgłoszone w trakcie tego odczytu, zmieni wartość zmiennej, ale odczyt może być błędny. Przykładowo masz liczbę 16 bitową 0x00FF. Podczas odczytu celem porównania do rejestrów trafi przykładowo najpierw 0x00 potem przerwanie zwiększy liczbę o 1. Liczba ma wartość 0x0100 i w kolejnym odczycie do drugiego rejestru trafi 0x00. Co będzie skutkowało błędem, bo porównasz liczbę 0x0000 zamiast 0x00FF lub 0x0100, a powiedzmy, że sprawdzałeś warunek if (liczba>2), który tym razem pomimo, że prawdziwy, będzie uznany za fałszywy.
Poprawnie w kodzie należy tak zrobić:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sty 2013, o 20:03 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

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


Oczywiście wkradł się mój błąd ponieważ przerwanie jest od sygnału podanego na PD2 a nie od PB0 gdyż jest to wyjście. Stąd pewnie wynikają twoje wątpliwości. Co do dostępu, spróbuje zmienić i zobaczymy co z tego wyjdzie. Powinno być tak
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: 12 sty 2013, o 20:06 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Znowu ja, tym razem chce wzbogacić swoją wunkcję o licznik impulsów w danym czasie. Dlatego Timer1 odlicza mi czas 1s a przerwania zewnętrzne te właśnie impulsy. Założenie jest takie ze jeśli jest mniej niż 5 impulsów ustawia mi sie stan 1(choć i tak tam jest ale to nie ważne) a jak wiecej to ustawia sie stan 0. Niestety nie ustawia się stan 0 pomimo wiekszej ilości impulsów. Problem wynika z tego ze nie wiem jak dokońca to zapisać, jeśli ktoś mógłby mnie naprowadzić byłbym wdzięczny
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

tzn układ działa aczkolwiek połowicznie po resecie jesli podam liczbę wiekszą niż 5 impulsów na sekundę dioda nie gaśnie natomiast po resecie jesli podam wiesza liczbe niz 5 impulsów dioda gaśnie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2013, o 21:42 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

jak OCR1A jest równe 0 to program od razu po odblokowaniu przerwania wejdzie w tą procedurę, a tam wyłączasz inne przerwanie (INT0, ale w paskudny sposób) i nie zliczasz już impulsów.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2013, o 12:33 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Czyli jak rozumiem muszę użyć nie trybu CTC a Normal i przerwania od przepełnienia? W jaki inny sposób mogę wyłączyć INT0? zadeklarować funkcje do wyłączania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2013, o 13:36 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Ok, dzięki Antystatyczny, poprawię kod. A co do pierwszej części mojego pytania mam racje, że trzeba ustawić w tryb normal oraz przerwanie od przepełnienia?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2013, o 14:18 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

O to chodzi, że nie bardzo kumam którą linijkę mam zmienić. Chodzi o ponowne włączenie licznika int0 o ile mniemam ale w której linijce mogę go włączyć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2013, o 14:34 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 49
Pomógł: 0

Niestety zmiana kolejności nie wiele dała gdyż objawy są te same co wcześniej czyli po resecie jeśli jest wiecej niż 5 to dioda zgaśnie, znowu reset jeśli mniej to nie. Jak dioda zgaśnie i podam mniej niż 5 to nie zaświeci się ponownie. Wybaczcie ze was tak męczę ale sam raczej nie dojdę w czym jest błąd gdyż słaby zemnie programista



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

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