f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - Jak procek odmierza czas?

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Jak procek odmierza czas?
Autor Wiadomość
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Pią Lut 07, 2014 9:06 pm   Jak procek odmierza czas?

Mam takie proste pytanie związane z "odmierzaniem czasu przez uC. Chodzi mi o stworzenie najprostszego programu jaki swoje działanie uzależnia od czasu a mianowicie miganie diody z określoną częstotliwością. Niestety w moim programie dioda zasuwa zdecydowanie z częstotliwością większą niż określona w programie. Poniżej "kodzik":
Kod:
#include <avr/io.h>
#include <avr/delay.h>

#define LED (1<<PC1)
#define LED_ON PORTC |= LED
#define LED_OFF PORTC &= ~LED
#define LED_TOG PORTC ^= LED

int main(void){

    DDRC |= LED;

    int czas = 1000;

    while (1){
        LED_TOG;
        _delay_ms(czas);
    }
}

Nie bardzo wiem w czym tkwi problem. Jeżeli ktoś mógłby pomóc to będę wdzięczny.

Całe zagadnienie jest częścią większego problemu. Powyżej przedstawiłem kąsek kodu mający zobrazować problem, który wystąpił u mnie przy transmisji danych przez UART. Transmisja idzie z dużo większymi prędkościami niż to co jest ustalone. Zmieniając prędkość transmisji po stronie odbiornika (terminala) uzyskuję na rożnych prędkościach rożne krzaczki. Wydaje się to być logiczne gdyż "odbiorniki" wstrzeliwuje się w ciąg wysyłanych prze procek znaków i inaczej je interpretuje. Muszę zapanować nad czasem wysyłania tych znaków.
Zakładam że jak okiełznam problem z diodą to problem z UARTem się rozwiąże.
Czekam na sugestie :)
Ostatnio zmieniony przez piotr94 Sob Lut 08, 2014 11:20 am, w całości zmieniany 1 raz  
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sob Lut 08, 2014 11:20 am   

Zapewne masz źle ustawione w opcjach projektu F_CPU - parametr używany przez kompilator do wyliczania wszelkich zależności czasowych. Inna opcja to to, że procesor działa z inną częstotliwością niż zadeklarowana w F_CPU (np. poprzez źle ustawione fusebity).
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Sob Lut 08, 2014 3:05 pm   

Programuje pod Eclipsem. Tam mam ustawione na 1M.
Niezaleznie od tego, działając na ustawieniach z jakimi został zakupiony EvB zakładam że powinno być dobrze.
Co sugerujesz jezeli chodzi o Fusbity? Czy jest jakaś zalezność pomiedzy nimi. Częstotliwością taktowania?
Sorki jezeli pytam o oczywistości, ale kiedyś trzeba :-)
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sob Lut 08, 2014 9:48 pm   

Hmm, a zmieniałeś fusebity?
Bo tak się składa, że domyślnie zestaw EvB ustawiony jest na 16MHz...
_________________
http://www.piotr94.net21.pl/
 
     
Pawlo 

Dołączył: 07 Lut 2014
Posty: 12
Wysłany: Czw Lut 13, 2014 9:24 pm   

piotr94 napisał/a:
Bo tak się składa, że domyślnie zestaw EvB ustawiony jest na 16MHz...


Wygląda na to że problem rozwiązany. Dioda miga z określoną częstotliwością. Muszę jeszcze sprawdzić jak teraz działa mi wysyłanie danych przez USART.

Nie wiem czemu zasugerowałem się, że częstotliwość jest domyślnie ustawiona na 1MHz. Informacja że jest to 16 MHz jest trafna. Wystarczyło zmienić w opcjach projektu F_CPU na prawidłowe.
Dzięki za podpowiedź.
 
     
Kajker 

Wiek: 36
Dołączył: 03 Wrz 2016
Posty: 7
Skąd: Poznań
Wysłany: Czw Wrz 29, 2016 5:48 pm   

Od tego jest to forum ;)
 
     
kalar 

Wiek: 37
Dołączył: 09 Paź 2016
Posty: 1
Skąd: Nowy Sącz
Wysłany: Sro Paź 12, 2016 11:40 am   

Super jest to Wasze forum! Dzięki też mnie to interesowało.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group