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



Teraz jest 17 sie 2026, o 15:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 5 wrz 2014, o 22:47 
Offline
Nowy

Dołączył(a): 01 wrz 2014
Posty: 14
Pomógł: 0

Witam. Skleciłem sobie taki kod


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

który ma mi ładnie migać diodami przy zmiennym opóźnieniu. Problem jest taki, że w error list dostaję
Kod:
Error   1   invalid storage class for function '__vector_1'   C:\Users\a\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\GccApplication6.c   24   14   GccApplication6
, i za nic w świecie nie wiem jak to ugryźć. Dodam że jestem początkującym. Uc to atmega8.

@Edit.

Przepraszam za złe sformatowanie, poprawiłem.



Ostatnio edytowano 6 wrz 2014, o 10:58 przez Pixello, łącznie edytowano 3 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2014, o 22:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Ciężko się w kodzie rozeznać ponieważ nie wstawiłeś go zgodnie z zasadami panującymi na forum tj. w znacznikach SYNTAX C kolorujących składnię.

Z tego co na szybko i z grubsza widzę to procedura obsługi przerwania powinna znaleźć się poza główną funkcją programu "main()".
Zmienna "time" musi być zmienną globalną lub lepiej statyczną dla funkcji obsługi przerwania. Natomiast "numerdiody" nie musi mieć modyfikatora volatile.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2014, o 04:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Na początek kolega proponuję, jakąkolwiek książkę do języka C, jeżeli stricte mikrokontrolery, to niebieska książka p. Mirka. To jedziemy :) :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Jest dużo lepsze, jeszcze w połączeniu z makrodefinicjami, jeżeli kiedykolwiek będziesz cokolwiek modyfikował w takim kodzie (albo wykorzystać napisane funkcje programu w innym kodzie).

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


Nie jestem pewny, ale ja bym celował w rejestr GIMSK

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


Jak kolega wyżej podpowiada bez volatile - niu używasz zmiennej w przerwaniu.

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


Również jak kolega wyżej wspomniał, wywal obsługę przerwania poza main.

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


Ja bym zmienił na klasycznego while(1), tak chyba każdy ma zakodowane i widać odrazu, że pętla główna programu.

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


Zamień na:

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


Oraz na koniec return:

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


Poprawnie jest:

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


z Niebieskim pozdRowieniem,
Doman89


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2014, o 07:07 
Offline
Nowy

Dołączył(a): 01 wrz 2014
Posty: 14
Pomógł: 0

Witam,
Dziękuję za podpowiedź, ale po odpowiedzi kolegi atmel kod już działa, miałem później problem z _delay_ms, ale go rozwiązałem stosując pętlę porównywającą licznik pętli do wartości z tablicy, a w oczekiwanie wstawiłem stałą. Bardzo dziękuję za rady. Mam pytanie. W datashecie atmegi8 jest wpis na temat
Kod:
General Interrupt
Control Register – GICR
. Nie mogę znaleźć nic o GIMSK. Nie wiem dlaczego, ale mi bardziej odpowiada zapis szesnastkowy, ew dwójkowy portów.

Jeszcze raz dziękuję za pomoc i pozdrawiam
Pixello



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2014, o 07:23 
Offline
Nowy

Dołączył(a): 01 wrz 2014
Posty: 14
Pomógł: 0

Dziękuję za pomoc, kolega doman89 mnie trochę zdezorientował. Problem został rozwiązany.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2014, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Pixello napisał(a):
Dziękuję za pomoc, kolega doman89 mnie trochę zdezorientował. Problem został rozwiązany.


Na początek wielkie sorki, mogłem lekki zamęt wprowadzić :P, ale po północy człowiek się położył, wstał po 4 rano, bo do Torunia na mecz się wybierał :) Na szybkiego pisałem więc walnąłem babola.

Co do delay masz zdefinowane F_CPU i ustawioną optymalizację na -Os ?
Jeżeli nie to: KLIK

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 wrz 2014, o 01:44 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 38
Lokalizacja: Jaworzno
Pomógł: 2

doman89 napisał(a):
(...)
Oraz na koniec return:

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


Poprawnie jest:

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


z Niebieskim pozdRowieniem,
Doman89


Tak z ciekawości zapytam - dlaczego poprawnie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 wrz 2014, o 08:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Oba sposoby są równie poprawne. Jest to raczej kwestia kosmetyczna niż funkcjonalna.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 wrz 2014, o 08:33 
Offline
Moderator
Avatar użytkownika

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

gordo napisał(a):
Tak z ciekawości zapytam - dlaczego poprawnie ?


WARTO wyjaśnić - a mówię też o tym sporo w Bluebooku ... tylko chyba nie każdy to załapał a przynajmniej nie od razu ...

co to znaczy w C ? tzn zapis poniżej ?

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


to znaczy WYRAŻENIE .... w nawiasy okrągłe można "ubrać" cokolwiek ... i będzie to zawsze wyrażeniem, które przyjmie jakąś wartość .... poniżej przykłady kilku różnych wyrażeń ;)

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


ale równie dobrze wyrażeniem może być funkcja

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


a także zwykła zmienna

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


czy stała dosłowna

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


zatem co stoi na przeszkodzie żeby napisać:

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


??? ;) ... mam nadzieję, że teraz już jaśniej ?

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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