Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #99
RE: Programowanie w języku C w środowisku AVR Studio4
Możesz pytać ... krzywdy mi nie robisz ... wszyscy pytajcie i się nie czajcie z tym, bo po to jest ten kurs, nie będe go prowadził wiecznie więc nie odkładajcie pytań na potem
Mam nadzieje że te dziwne umiejscowienie nawiasów klamrowych w ostatniej lekcji nie sprawiły wam kłopou.
Kod:
if((PINC&0b01000000)==0)
         { frequency-=krok; }
powyższy kod oczywiście można zapisac tak jak poniższy i to jest to samo
Kod:
if((PINC&0b01000000)==0)
{
    frequency-=krok;
}
ale można tez tak:
Kod:
if ( ( PINC & 0b01000000 ) == 0 )
         {


frequency-=krok; }
wszystkie te zapisy dla kompilatory są jednakowe.
Trochę kiepsko że nie mogę już sam wyedytować tego posta tylko muszę moderatora prosić.
Lekcja 13 Pewnie zauważyliście, że można przekręcić licznik częstotliwości "tak jakby poniżej zera" więc konieczne są poprawki, której będą trzymać w ryzach zakres częstotliwości - pomiędzy 1MHz a 180MHz.
Przedstawiam tu fragmenty piku main.c (jest on do pobrania jako załącznik na dole) wraz z moim wolnym tłumaczeniem Smile
Kod:
#ifndef F_CPU
#define F_CPU 16000000
#endif
#jeśli F_CPU nie jest zdefiniowane nigdzie indziej to:
#zdefiniuj każde wyrażenie F_CPU jako 16000000
#koniec warunku [b]ifndef F_CPU[/] //nie wiem jak to dobrze przetłumaczyć. Powyższy kod sam sprzwdza czy już zdefiniowaliśmy częstotliwość w menu "configuration options" jesli nie to definiuje prędkość Atmegi na 16MHz.
Kod:
if((PINC&0b01000000)==0)
{
    if((frequency-krok>999999)&(frequency-krok<180000000))
    {
        frequency-=krok;
    }
}
Jeśli (na porcie C, na wyprowadzeniu PC6 jest stan niski ) to wykonaj:
{

jeśli ( ( zm. frequency - zm. krok jest większe od 999999) lub ( zm. frequency - zm. krok jest mniejsze od 180000000 ) )
{

zmniejsz zm. frequency o zm. krok;
}
} [/code]
Dodatkowo zaznaczyłem kolorami nawiasy które należą do odpowiadających im instrukcji.
Kod:
if((PINC&0b10000000)==0)
{    
    if(frequency+krok<180000000)
    {
        frequency+=krok;
    }
}
Powyższy kod oznacza:
Jeśli (na porcie C, na wyprowadzeniu PC7 jest stan niski ) to wykonaj:
{

jeśli ( ( zm. frequency + zm. krok jest mniejsze od 180000000 ) ) to wykonaj :
{

zm. frequency zwieksz o zm. krok;
}
}
Na razie to będzie koniec z problemem wyświetlania kroku i częstotliwości - nie jest to może najpiękniejsze i najczytelniejsze ale działające i wystarczające (potem będziemy upiększać i porządkować to co się ma wyświelać i jak).
Na następnej lekcji przejdę do zagadnienia jakim jest komunikacja z układem AD9951 - syntezerem DDS.


Załączone pliki
.zip  nowy.zip (Rozmiar: 4.67 KB / Pobrań: 768)
(Ten post był ostatnio modyfikowany: 05-02-2012 16:20 przez SP4EJT.)
04-02-2012 18:29
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 04-02-2012 18:29

Skocz do:


Użytkownicy przeglądający ten wątek: 21 gości