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



Teraz jest 26 gru 2024, o 01:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 28 cze 2013, o 17:06 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

Witam,
wziąłem się za naukę języka c z książki Pana Mirka :). Przeczytałem ją od początku do rozdziału z programowaniem wyświetlacza 7 segmentowego (jedno z pierwszych ćwiczeń praktycznych), przepisałem kod, kliknąłem kompiluj i jest błąd. Programuje w eclipse na ATmege8. Czy powiedzcie gdzie popełniłem błąd? :(

Podkreśla: TCCR2, OCR2 i TIMSK


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


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


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



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

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 17:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Definicje z d_led.h
uint8_t cyfry[15] PROGMEM
daj do d_led.c, a w d_led.h daj jedynie deklaracje
extern uint8_t cyfry[] PROGMEM;

Nie definiuj zmiennych w wielokrotnie includowanych plikach nagłówkowych. Na dobrą sprawę to nie definiuj ich w jakichkolwiek plikach nagłówkowych. W nagłówkach umieszczaj jedynie deklaracje.

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 17:46 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

@barney
Wielkie dzięki pomogło. :D

------------------------ [ Dodano po: 15 minutach ]

Niestety nie działa. Żadna dioda się nie zapala
PORTD nie "pobiera prądu". Obok
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

są 4 robaczki z czymś w tle i jak się na to najedzie to pokazuje
"Problem description: Symbol 'TCCR2' could not be resolved" i tak poklei dla OCR2 i TIMSK.
Jak podłączę któryś kabelek podłączony z Portu D do uziemienia to zapala się 1(w zależności od kabelka) dioda z 7.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 18:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 maja 2012
Posty: 256
Pomógł: 3

To czas wrócić do rozdziału o Timerach ;)
Czemu zapisujesz tak w ogóle tak: (1<<01)? Mirek uczy inaczej :)
W jakim trybie używasz tego timera i jak jest on wybrany? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 18:17 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

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

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


i jak zapisze np. "TCCR0 |= (1<<WGM01);" to podkreśla całą linijkę a jak zapiszę TCCR0 |= (1<<1); to podkreśla tylko "TCCR0" :|
Timera używam w trybie CTC ale na timerze2 bo timer0 go nie posiada ;) to ATmega8.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 18:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 maja 2012
Posty: 256
Pomógł: 3

No to myk, lecimy po kolei ;)
Datasheet Atmegi8 masz przed oczyma mam nadzieję? :) Jeśli nie, to otwieraj i ustawimy wszystko razem.
W takim razie znajdź proszę rozdział "8-bit Timer/Couter2 with PWM and Asynchronous Operation", a następnie podrozdział "8-bit Timer/Counter Register Description".

Bo musisz pamiętać, że inny Timer może być konfigurowany inaczej ;)
Jak już jesteśmy tam gdzie napisałem, to lecimy po kolei.
Na pierwszy ogień idzie TCCR2. Chcesz pewnie ustawić ten timer w trybie CTC? No to w takim razie musimy ustawić WGM21. (Zauważ proszę, że tak jak Timer0 masz WGM0x, Timer1 ma WGM1x, tak Timer2 ma WGM2x).
Będąc przy TCCR2 widzimy jeszcze, że można ustawić preskaler. No to lecimy tak jak Mirek w książce robił. Chcemy 1024 to musimy ustawić CS22, CS21 i CS20 ;)
OCR2 jest dobrze.
No i na koniec dochodzimy do TIMSK. Tutaj co chcemy? Chcemy Timer/Counter2 Output Compare Match Interrupt Enable, a to jak widać jest Bit 7 - OCIE2. Ten też bit ustawiamy.
Teraz powinno ruszyć :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 18:37 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

Otworzyłem datasheet zorientowałem się że mam źle i sam zaczołem poprawiać po czym ajek napisałeś :D dzięki wielkie już kończę poprawiać.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 18:41 
Offline
Moderator
Avatar użytkownika

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

JuzoPL napisał(a):
Otworzyłem datasheet zorientowałem


Matko, jedyna ... z córką ;)

dopiero teraz otworzyłeś datasheet ???? ... masakra ;) ... a co ja w książce piszę i wszędzie w każdym poradniku video trąbię ????

zanim otworzysz projekt jakikolwiek - to pierwsze co to datasheet w łapki .... mam nadzieję że po takiej lekcji kolega zapamięta to na ZAWSZE ;)

_________________
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: 28 cze 2013, o 18:46 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

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


Podkreśla TCCR2, OCR2, TIMSK, OCIE2
Wielkie dzięki bo kompletnie inaczej zrozumiałem datasheet
Ogólnie przeprogramowałem ale nie pomogło, żadna dioda nie świeci.

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

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

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

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

to przestaje podkreślać OCIE1A/OCIE1B. :|

EDIT:
Mam małe pytanko. Gdzie znaleźć nazwę timeru którą nalęży wpisać do ISR(nazwa){} której nie ma w pliku iom(cyferki od nazwy ATmegi).h który znajduje się w \WinAVR-20100110\avr\include\avr\ ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 19:30 
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

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

Źle pobierasz wartości z pamięci programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nazwę przerwania i nazwy rejstrów masz w Eclipse w zakładce AVR Device Explorer. Jak nie masz jej włączonej to z menu górnego Window->Show View->Other...->AVR->AVR Device Explorer

Jak podkreślenia są bezpodstawne to należy wejść na chwilę do ustawień zmienić procesor na inny kliknąć Apply i zmienić z powrotem na Atmega8

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 19:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
W main.c po "sei()" nie trzeba jeszcze while(1) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 19:50 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2013
Posty: 12
Lokalizacja: Radzymin
Pomógł: 0

Mam dobrą i złą wiadomość.
Dobra --> pokazuje cyferki :o
Zła --> jest to 9599 lol.

------------------------ [ Dodano po: 6 minutach ]

Naprawione

------------------------ [ Dodano po: 11 minutach ]

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

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


Dziękuję za pomoc wszystkim. :)
I Mirku do datasheet będę zaglondał częściej ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2013, o 20:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 maja 2012
Posty: 256
Pomógł: 3

Zjadłeś ~ w jednym miejscu ;) Ale w programie masz raczej dobrze, bo inaczej znów by Ci źle pokazywało ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A zauważ, że ten błąd, który był ostatnim, Krauser już wyżej wypominał ;)



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

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