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



Teraz jest 30 mar 2026, o 20:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 27 sie 2014, o 13:56 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Witam

Robię programowy PWM na ATtiny2313 ale nie można ustawić TIMER0 jaki mam 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.



Kod:
../main.c: In function 'main':
../main.c:34:2: error: 'TCCR0A' undeclared (first use in this function)
../main.c:34:2: note: each undeclared identifier is reported only once for each function it appears in
../main.c:35:2: error: 'TCCR0B' undeclared (first use in this function)
../main.c:36:2: error: 'OCR0A' undeclared (first use in this function)
../main.c:37:15: error: 'OCIE0A' undeclared (first use in this function)
make: *** [main.o] Error 1


Dzięki za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2014, o 14:44 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

utworzył projekt nowy i działa :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2014, o 19:56 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

I jeszcze jedno pytanie. Jak korzystać z korekcji gamma nie rozumiem tego makra
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jak go używać w pentli głównej



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2014, o 21:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 lut 2014
Posty: 96
Lokalizacja: Łódź
Pomógł: 6

To makro działa w taki sposób (jak zresztą każde makro utworzone dyrektywą # :P), że w każdym miejscu w Twoim kodzie źródłowym, gdzie napisałeś
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Zaś sama instrukcja kryjąca się pod rozwinięciem tego makra to instrukcja pobierająca jeden bajt spod danego adresu (w pamięci Flash) i zwracająca jego wartość (której potem możesz użyć np. do podstawienia, choćby: OCR0A = pgm_read_byte(&gamma_correctionR[jakaś_liczba]); ).

Jako argument pgm_read_byte przyjmuje adres i, jak widać na powyższym przykładzie, adres ten otrzymuje. Jest to adres elementu tablicy gamma_correctionR o indeksie jakaś_liczba (w moim przykładzie).


A zatem zamiast pisać tę długą wersję pgm_read_byte...itd. możesz napisać np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co spowoduje wpisanie do rejestru OCR0A wartości z szesnastego elementu tablicy gamma_correctionR zapisanej w pamięci programu.



Załóżmy że masz diodę podłączoną do procka anodą (czyli wystawienie stanu wysokiego na pinie powoduje jej zapalenie). Jeśli chcesz go używać w pętli do rozjaśniania diody w taki sposób, że, powiedzmy, stopień jasności będzie zmieniał się co 50 ms i masz nie więcej niż 8-bitową rozdzielczość skoków jasności (max 256 poziomów, wliczając 0 - stan wygaszenia), to możesz to zrobić tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chyba teraz bez trudu dopiszesz sobie tuż za tą pętlą drugą pętlę, która tym razem będzie diodę ściemniać :P Możesz skorzystać z wyinkrementowanej zmiennej "i", żeby tym razem ją zdekrementować do zera.

Oczywiście jeśli masz diodę podłączoną do pinu katodą, to powyższa instrukcja będzie diodę wygaszać, a nie rozjaśniać :)

A... i nie zapomnij podłączyć do projektu biblioteki util/delay.h :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2014, o 23:16 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Dzięki za pomoc, już tego rozumie i Panu Mirkowi z przykotowanie fajnego programiku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2015, o 09:49 
Offline
Nowy

Dołączył(a): 21 wrz 2015
Posty: 4
Pomógł: 0

Pozwólcie, że się podepnę.
Jakoś dwa tygodnie temu zacząłem kombinować z C i AVR. Korzystam z Blue Book`a. I mam mkAVR Calculator.

Póki co wszystko szło gładko aż do teraz.

Napisałem sobie dla ATTINY13 PWM`a

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


No i działa. Wsjo jest OK. Dioda sie powoli rozjaśnia a potem powoli gaśnie.
Jednak w mkAVR Calculatorze jest korekcja Gamma, która też chciałem przetestować.

No i przerobiłem powyższy mini programik na taki:

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


No i niestety cały czas mam w Eclipse błąd "Syntax error" przed
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A po próbie kompilacji w konsoli mam:

Kod:
10:44:27 **** Incremental Build of configuration Release for project PWM_tiny13 ****
make all
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny13 -DF_CPU=1200000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
../main.c:11:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'PROGMEM'
 const uint8_t gamma_correctionR[] PROGMEM = {
                                   ^
../main.c: In function 'main':
../main.c:35:7: warning: implicit declaration of function 'pgm_read_byte' [-Wimplicit-function-declaration]
       OCR0A=GAMMAR(i);
       ^
make: *** [main.o] Błąd 1

10:44:28 Build Finished (took 399ms)


Podpowiecie całkowicie zielonemu co zrąbałem i jak to naprawić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2015, o 10:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Brakuje pliku nagłówkowego:
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: 21 wrz 2015, o 12:16 
Offline
Nowy

Dołączył(a): 21 wrz 2015
Posty: 4
Pomógł: 0

No przecież....

Teraz się kompiluje bez problemów. Dzięki!



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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