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: #3
RE: Programowanie w języku C w środowisku AVR Studio4
No dobra, cieszę sie ale powiedzcie czy zaprogramowaliscie Atmege i zadziałała czy na sucho kompilowaliście ?

Jeśli wyskakuja przy kompilacji jakieś błędy w których jest " F_CPU" to znaczy że kompilator nie wie jaką częstotliwościa taktujemy mikrokontroler. Żeby kompilatorowi to "powiedzieć" należy:
- kliknąć menu "Project" potem "Configuration Options" i w pole Frequency wpisać częstotliwość naszego kwarca w Hz.
- kliknąć ok i spróbować kompilować jeszcze raz (w oknie gdzie pokazywały sie błędy powinny być teraz tylko zielone kropki
(zielone = brak błędów i ostrzeżeń, zółte= ostrzeżenia, czerwone=błędy)
Skopiujcie sobie katalog "lekcja2" (z zawartością) pod nazwą "lekcja3" do katalogu "kurs" ... uruchomcie AVRStudio wskazując na plik "lcd" w "lekcja3". Skasujcie cały kod z pliku lcd.c i na miejsce skasowanego wklejcie to co poniżej:
Kod:
/*  Jest to trzecia lekcja Kursu Programowania mikrokontrolera Atmega w języku C    
    Należy podłączyć diodę LED poprzez rezystor 680 OHm do wyprowadzenia A0, druga noga diody do masy.
    oraz przycisk (microswitch lub inny) do Wyprowadzenia B0 (PORT B wypr.0) - drugi biegun do masy.
*/

/* #include <jakiś_plik> wstawia zawartość tego pliku dokładnie w to miejsce w którrym zawarte jest to wyrażenie */
#include <avr/io.h>            // czyli tu dla kompilatora jest cała zawartość pliku io.h (nie wnikajcie teraz gdzie jest ten plik
#include <util/delay.h>        // tu podobna historia do powyższej

int main(void)
    {
    DDRA = 0b00000001;    
    DDRB = 0b00000000;    // właczyłem do zabawy port B
    PORTB= 0b00000111;    // "1" oznacza podciągnięcie wejścia do napięcia zasilania Atmegi poprzez wewnętrzny rezystor
                        // możecie sprawdzić miernikiem że wyprowadzenia B0, B1 i B2 mają jakieś napięcie w przeciwieństwie do B3, B4 .... B7

    while(1)        // funkcja pętli nieskończonej (gdyby zamiast "1" było jakieś wyrażenie to funcja działa do momentu kidy wyrażenie przestale byc prawdziwe = czyli przestalje być logiczna "1")
        {
        if(bit_is_clear(PINB, 0))        // jeśli na wyprowadzeniu (wejście) B0 jest logiczne 0 to wykonaj to co pomiędzy { i }
            {
            PORTA=PORTA^0b00000001;     // wyjaśnienie tego na samym dole    
            _delay_ms(160);                // opóźnienie eliminujące "trzaski" przycisku
            }  
        }
    }
/* naciskajcie przycisk i zobaczcie co się dzieje, a dzieje sie tak dzieki zastosowaniu
operatora "^" czyli bitowej alternatywy wykluczającej (XOR). wyjasnia to przykład:

0 1 0 1 0 1 0 1    to wartość rejestru PORTA
^
0 0 1 1 0 0 1 1     to wyrażenie "zmieniające" zawartość tego rejestru
=
0 1 1 0 0 1 1 0    to nowa wartość rejestru PORTA (po wykonaniu polecenia)

PORTA to jeden z wielu rejestrów Atmegi, odpowiada on za to co jest na ośmiu wyprowadzeniach PORTU A
DDRC to rejest odpowiadający za kierunkowość wyprowadzeń PORTU C
PIND to rejestr, w którym "widać" jakie stany logiczne sa na wyprowadzeniach PORTU D

Możecie sobie sciągnąć .pdf z opisem Atmegi (niestety po angielsku) jest tam pełny spis wszystkich rejestrów

autor: SP4EJT nie zastrzega sobie praw autorskich, pod warunkiem że nie czerpiesz z tego korzysci materialnych, możecie kopiować i zmieniać ten plik
*/
Praca domowa: Kto bardziej kumaty - niech spróbuje zrobic tak aby dioda i przycisk działały na tym samym Porcie np. na Porcie A dioda niech zostanie na A0 a przycisk dajcie na A7 i koniecznie napiszcie czy się udało.... a jesli nie to piszcie w czym problem

... i proszę się nie wstydzic i pisac co jest nie zrozumiałe !!!!!!! bo mam wrażenie że straciliście zapał.
(Ten post był ostatnio modyfikowany: 13-01-2012 23:49 przez SP4EJT.)
13-01-2012 23:39
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 - 13-01-2012 23:39

Skocz do:


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