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



Teraz jest 11 maja 2026, o 06:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 23 lis 2014, o 21:59 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Witam,

Testuję sobie prosty kod wykorzystujący przerwanie INT0. Mój problem polega na tym, że pętla FOR w przerwaniu wykonuje się jakby "połowę razy". Dioda ma mignąć szybko 5 razy, a miga tylko 2 razy. Siedzę już nad tym 2 godzinę i nic nie mogę wymyślić :cry: Pomożecie?
EDIT: całość pisana na ATtiny13

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 lis 2014, o 22:13 
Offline
Użytkownik

Dołączył(a): 11 lut 2014
Posty: 27
Pomógł: 2

Nie używamy opuznien w przerwaniach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 22:24 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

:shock: Matko Boska Mirkowa Blubukowa! :shock:


Wywal że te delaye z przerwania jak najszybciej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 22:32 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

miki23 napisał(a):
Nie używamy opuznien w przerwaniach.

Tylko dla testu, a test ma działać.

Nefarious19 napisał(a):
Wywal że te delaye z przerwania jak najszybciej.

Jak wyżej, to jest tylko dla testu, a chciałbym, żeby on działał :|

Zdaję sobie sprawę, że jest to złe podejście, ale póki co mój program nie musi się tym przejmować 8-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 22:39 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

teres napisał(a):
Tylko dla testu, a test ma działać.



Nawet dla testów tak się nie robi Panie Kolego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 22:45 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Nefarious19 napisał(a):
teres napisał(a):
Tylko dla testu, a test ma działać.

Nawet dla testów tak się nie robi Panie Kolego.

Dlaczego?
Nefarious19 napisał(a):
Pozatym co ta za definicja zmiennej char? Tam ma być uint8_t a nie zmienna znakowa char... Pomyśl ile dziesiętnie to jest char i = 1. Spójrz to tabeli ascii

Oj chyba tutaj się mylisz, poniżej definicja typów z <stdint.h>: Standard Integer Types

Cytuj:
Exact-width integer types
Integer types having exactly the specified width
typedef signed char int8_t
typedef unsigned char uint8_t
typedef signed int int16_t
typedef unsigned int uint16_t
typedef signed long int int32_t
typedef unsigned long int uint32_t
typedef signed long long int int64_t
typedef unsigned long long int uint64_t


Jak widzisz, zamiast int8 można użyć zamiennika jakim właśnie jest char.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 22:56 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

teres napisał(a):
Oj chyba tutaj się mylisz, poniżej definicja typów z <stdint.h>: Standard Integer Types


Masz racje, pomyliło mi się to dlatego wyedtyowałem post i usunąłem ten wpis.

teres napisał(a):
Dlaczego?


Bo na czas delaya blokujesz cały program i nic on przez ten czas nie robi. Nie wiem czy ma to jakieś konsekwencje w przerwaniu od INT ale takie kwiatki w innych przypadkach mogą wykrzaczyć cały program.

------------------------ [ Dodano po: 8 minutach ]

Sprawdź teraz.

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


Autor postu otrzymał pochwałę


Ostatnio edytowano 23 lis 2014, o 23:13 przez Nefarious19, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 23:06 

Pomógł: 0

Tu jest błąd ;)
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
  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 23:14 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

wwojtek napisał(a):
Tu jest błąd ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



No dokładnie ;) wkleiłem koledze poprawiony kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 23:15 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Nefarious19 napisał(a):
teres napisał(a):
Dlaczego?

Bo na czas delaya blokujesz cały program i nic on przez ten czas nie robi. Nie wiem czy ma to jakieś konsekwencje w przerwaniu od INT ale takie kwiatki w innych przypadkach mogą wykrzaczyć cały program.

O tym wiem, dopuściłem się tego tylko w teście :)
Nefarious19 napisał(a):
Sprawdź teraz.

Dzięki działa 8-)
wwojtek napisał(a):
Tu jest błąd ;)

8-)

To teraz mam pytanie, co robiłem źle? Tzn. dlaczego nie mogę w ten sposób zmienić stanu portu w procedurze przerwania, a w pętli w Main mogę :?:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 23:32 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

teres napisał(a):

To teraz mam pytanie, co robiłem źle? Tzn. dlaczego nie mogę w ten sposób zmienić stanu portu w procedurze przerwania, a w pętli w Main mogę


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


Po pierwsze program należy pisać ładnie Panie Kolego. Więc nawiasy by się przydały przy XOR'ach

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


Po drugie Kolega dwa razy używa XOR'a po rząd. Jak to wygląda po wejściu w tą pętle?

Proszę bardzo:

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


Koledze migała dioda ale co dwa obiegi pętli :)

------------------------ [ Dodano po: 3 minutach ]

a, i delay = 500 to nie 5 sekund a 500 milisekund ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2014, o 23:41 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Nefarious19 napisał(a):
Po pierwsze program należy pisać ładnie Panie Kolego. Więc nawiasy by się przydały przy XOR'ach

No może... całkiem możliwe, a tak serio, to już ten test pisałem "na kolanie" bo się wkurzałem niedziałającym projektem.

Nefarious19 napisał(a):
Po drugie Kolega dwa razy używa XOR'a po rząd. Jak to wygląda po wejściu w tą pętle?
Proszę bardzo:(...)
Koledze migała dioda ale co dwa obiegi pętli :)

Dzięki, łopatologicznie mi to opisałeś. Przy okazji zobaczyłem, że w głównej pętli też mam poprawkę (dioda migała co 1s, a nie co 0,5s).

Nefarious19 napisał(a):
a, i delay = 500 to nie 5 sekund a 500 milisekund ;)

"na kolanie" ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2014, o 08:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Kolego Nefarious19, czy to na pewno prawda? ;)

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


Nie pwinno być przypadkiem coś takiego...?

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

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lis 2014, o 09:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 paź 2014
Posty: 42
Pomógł: 5

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: 24 lis 2014, o 10:14 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

Przepraszam Koledzy. Macie racje. Wczoraj przed snem doszło do mnie że głupotę napisałem. Już nie chciało mi się wstawać i poprawiać. Wiedziałem o co chodzi ale pomylilo mi sie rozwinięcie operatora ^=. Ale wstyd. :)

Przepraszam za zamieszanie.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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