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



Teraz jest 2 kwi 2026, o 16:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 8 lut 2017, o 14:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2017
Posty: 48
Pomógł: 4

Cześć
Mam 2 pytania dotyczące przerwań w C.
ATmega8
F_CPU=8MHz
1.W trybie NORMAL MODE, Timer1, ustawiłem preskaler na 256, wobec czego wpisałem wartość do rejestru TCNT1=0x85ED.W wyniku czego licznik przepełnia się co 1s.Jednakże gdy podłączyłem diodę to zmienia stan co 2s, a nie co 1s.Dodam, że stan diody zmieniam na przeciwny w procedurze przerwania;pętla while jest pusta.Dlaczego miga co 2s a nie co 1s?

2.W trybie CTC wszystko działa pięknie.Ustawiłem żeby dioda migała co 1s i miga.Ale jasność jej świecenia jest bardzo słaba,dlaczego?

Dziękuje uprzejmie za odpowiedź



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 14:58 
Offline
Użytkownik

Dołączył(a): 27 lut 2013
Posty: 230
Pomógł: 4

A nie jest czasem tak, że Ty zmieniasz jej stan co sekundę poprzez toglowanie np.?
Wtedy masz taki efekt, że dioda zapala się po sekundzie, potem po sekundzie gaśnie i znowu po sekundzie się zapala . Optycznie wychodzi co dwie sekundy. Musiał byś zmieniać jej stan co pół sekundy aby mieć pożądany przez Ciebie efekt ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 16:24 
Offline
Użytkownik
Avatar użytkownika

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

Witam
michaeleagle napisał(a):
Dziękuje uprzejmie za odpowiedź...

michaeleagle napisał(a):
W trybie CTC wszystko działa pięknie.Ustawiłem żeby dioda migała co 1s i miga.Ale jasność jej świecenia jest bardzo słaba,dlaczego?

Na razie zamieść kod bo tam tkwi odpowiedź, a na jego przykładzie wyjaśnimy bo opisywanie co CHCIAŁEŚ zrobić nie wiele nam mówi; tym bardziej Ty nie wiele na tym skorzystasz.
Podpowiedź kol.michal1210 jest jak najbardziej słuszna, ale sam widzisz że pojawia się zgadywanie co tam naskrobałeś.
...no i to raczej do działu rybnego a nie od razu PROGRAMOWANIE ;) - tylko od razu nie przepraszaj - ja tak na przyszłość :)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 17:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2017
Posty: 48
Pomógł: 4

Wstawiam kod do 2 pytania, o natężenie świecenia diody LED

Kod:
//pliki biblioteczne
#include <avr/io.h>
#include <avr/interrupt.h>

//definicje preprocesora
#define LED (1<<PC5)
#define LED_CHANGE PORTC ^= LED   //zmiana stanu diody


//funkcja główna
int main(void)
{
   //inicjalizacja procesora
   TCCR1B |= (1<<WGM12);   //tryb CTC
   TCCR1B |= (1<<CS12);   //preskaler 256
   OCR1A = 31249;   //wartośc porównania
   TIMSK |= (1<<OCIE1A);   //włączenie przerwania od porównania

   sei();   //włączenie globalnej obsługi przerwań

   //pętla główna
   while(1);

}//koniec main

//procedura obsługi przerwania od porównania
ISR(TIMER1_COMPA_vect)
{
   LED_CHANGE;
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 17:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1041
Lokalizacja: Trójmiasto
Pomógł: 190

A pokaż kolego w tym swoim kodzie, w którym to miejscu ustawiasz pin procka jako wyjście (ten do którego masz diodę podłączoną). I swoją drogą też nie napisałeś jak tą diodę podłączyłeś katodą czy anodą do procka i przez jaki rezystor (i czy wogule przez rezystor) i jakim napięciem zasilasz całość...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 18:12 
Offline
Użytkownik
Avatar użytkownika

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

Witam
xentis napisał(a):
w którym to miejscu ustawiasz pin procka jako wyjście

No i widzisz - to nie jest sprawa ustawienia CTC; dlatego tak ważny jest kod.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2017, o 09:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 lut 2017
Posty: 48
Pomógł: 4

Dziękuję bardzo
Rzeczywiście zapomniałem o ustawieniu rejestru kierunku w 2 programie z CTC.Po zmianie program działa jak należy.
Będę pamiętał na przyszłość aby wszystko dokładnie opisywać,łącznie ze schematem.
Pozdrawiam



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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