HomeMade

Pełna wersja: Programowanie w języku C w środowisku AVR Studio4
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Podsumowując ten wątek : http://sp-hm.pl/thread-1155.html

I wszystko już jest jasne ... zrobiłem to na dwóch różnych komputeraz z systemem XP.
1. Zainstalowałem AVR Studio 4 http://www.atmel.com/dyn/resources/prod_...4Setup.exe
przy próbie uruchomienia naszego projektu pokazało się to co na zdjęciu 1_........
İmage

2. Następnie zainstalowałem (przed tym należy oczywiście wyłaczyć AVR Studio4) WinAVR (wersja 20100110) z tej strony: http://sourceforge.net/projects/winavr/files/WinAVR/
przy próbie uruchomienia naszego projektu pokazało się to co na zdjęciu 2_........
İmage

3. Następnie (przy wyłączonym AVR Studio4 ) zainstalowałem Toolchain http://www.atmel.com/dyn/resources/prod_documents/avr-toolchain-installer-3.3.0.710-win32.win32.x86.exe
przy próbie uruchomienia naszego projektu ukazało sie to co na zdjęciu3_.......
İmage
CZYLI TO CO POWINNO i to wskazuje na prawidłowe działanie.

Poniżej schemat (mam go zrobinego w eagle jak ktoś chce to wyślę - piszcie na mój email)
İmage
Tu widok płytki z góry (od strony elementów)
İmage
Tutaj widok ścieżek - możecie sobie wydrukowac i zrobić prasowankę Smile
İmage
Zamieszczam tu paczki "lekcja1.zip" i "lekcja2.zip"
Wgrywajcie te lekcje tak żeby w katalogu "kurs" były katalogi "lekcja1", "lekcja2" , 3 ,4 itd itd.....
Witam - po doinstalowaniu Toolchain jest taki efekt

rm -rf lcd.o lcd.elf dep/* lcd.hex lcd.eep lcd.lss lcd.map
c:\Program Files\Atmel\AVR Tools\AVR Toolchain\bin\rm.exe: nie można wykonać lstat na `dep/*': Invalid argument
make: [clean] Błąd 1 (zignorowany)
Build succeeded with 0 Warnings...
avr-gcc -mmcu=atmega32 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d -c ../lcd.c
In file included from ../lcd.c:6:0:
c:\program files\atmel\avr tools\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h:89:3: warning: #warning "F_CPU not defined for <util/delay.h>"
avr-gcc -mmcu=atmega32 -Wl,-Map=lcd.map lcd.o -o lcd.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature lcd.elf lcd.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex lcd.elf lcd.eep || exit 0
avr-objdump -h -S lcd.elf > lcd.lss

AVR Memory Usage
----------------
Device: atmega32

Program: 324 bytes (1.0% Full)
(.text + .data + .bootloader)

Data: 0 bytes (0.0% Full)
(.data + .bss + .noinit)


Build succeeded with 1 Warnings...

Smile pozdrawiam 73 Jacek.
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ł.

SQ7HJB

Cześć!
To nie strata zapału. Tylko brak czasu. W pracy prawie do 23 a później po nocach czytanie forum.
Muszę jeszcze czekać na programator a w weekend pcb pod ATmege.
Pozdrawiam
Witam - u mnie na pcb picastar znowu trochę przybyło dlatego nie pisałem nic - zaraz pobiorę lekckę2 - i muszę zrobić trochę porządku na stole aby podłączyć płytkę testową - ale to się da - proszę o kontynuowanie lekcji - pozdrawiam Jacek.
U mnie kompilacja na sucho.

Czekam na zestaw ewaluacyjny.

I tak samo braki czasowe.

Ale lekcje mogą trwać.

P.S. Jak będą wątpliwości i problemy to na pewno tu napiszę
Witam,
U mnie ALL OK, to znaczy zamówiłem i teraz czekam na zestaw uruchomieniowy do Atmega32. Do tej pory trochę bawiłem się Atmega8 i skromnym zestawem uruchomieniowym. Marcinowi wielkie dzieki za pomysł "kursu". Dla mnie ten kurs jest mobilizacją do pracy, samemu to czasem się nie chce. Poza tym można wymieniać poglądy i wspólnie nad czymś pracować.
Jeśli ktoś myśli poważnie o języku C, to przy okazji polecam następujące książki:
1. Paweł Borkowski "AVR&ARM7" . Bardzo dobra pozycja na sam początek przygody z mikrokontrolerami. Moim zdaniem największą zaletą tej książki są podane bardzo szczegółowo (wręcz "łopatologicznie") przykłady, od bardzo prostych do bardziej zaawanasowanych zaprezentowanych w 4 językach : ASM, C, BASCOM i Pascal. W każdym przykładzie są podrozdziały dla każdego języka odrębnie, ale ASM jest podstawą do szczegółowych rozważań, następnie kolejno C, Bascom i Pascal.
2. Tomasz Francus "Język C dla mikrokontrolerów AVR". Książka przeznaczona dla bardziej zaawansowanych czytelników. Jeśli ktoś przerobił co najmniej większość przykładów z poz.1 i chce kontynuować zabawę w C, to jest to moim zdaniem najlepsza pozycja. Na uwagę zasługuje rozdział w którym podane są dość szczegółowo podstawy języka C dla AVR.
3. Stephen Prata "Szkoła programowania. Język C". Najlepsza pozycja w języku polskim do nauki C od podstaw. Nie jest to dialekt języka dla mikrokontrolerów ale dla programisty języka C w ogólnym przypadku. Czytelnik tam znajdzie doskonale wyjaśnionych wiele trudnych kwestii i to podanych w bardzo przystępnej i zrozumiałej formie, na przykład konwersje typów (procedury rzutowania).
73 Bogdan, SP3IQ.
Przecież my dopiero zaczynamy. Jak masz chęć do nauki to przeczytaj wszystko od początku i na pewno nadrobisz straty.
Jestem sam z dzieckiem w domu dziś i jutro więc dużo pewnie nie napiszę. \córka bardzo jest absorbująca Smile Najpóźniej w poniedziałek dalsza część kursu.
To nie tak, ja bardziej chciałem pomóc tym mniej doświadczonym Big Grin Ewentualnie może jak dojdziemy do takich zaawansowanych, rzeczy jak na przykład FFT to zmienię kierunek oddziaływania.

PS. Czemu AVR Studio 4, a nie 5?
(14-01-2012 18:08)SQ6OXK napisał(a): [ -> ]...jak na przykład FFT...
W tym wątku Marcin SP4EJT zaproponował kurs jak jest podane w tytule tego wątku i jego uczestnicy zgodzili sie na tak rozwijany temat. Dotąd jeszcze nie mówiliśmy o celach, ale wiadomo, że uczymy się aby tą wiedzę wykorzystać w projektach, które są nam krótkofalowcom potrzebne. Mogą to być częstościomierze, DDS na AD..., DDS na SI..., sterowniki przełączania anten, itd. Jednym z celów może też być wykorzystanie wyświetlaczy TFT, czy filtry FFT. Ale uważam, że w chwili obecnej wprowadzanie w tym wątku jakiegokolwiek projektu (nawet najbardziej atrakcyjnego) byłoby niecelowe. Powinniśmy zgodnie z początkowym założeniem przerobić kilka lub lepiej kilkanaście "lekcji" (przykładów), które prowadzi Marcin SP4EJT zgodnie z założeniem początkowym. Temat, który Paweł SQ6OXK proponuje (analizy FFT), jest jak najbardziej potrzebny i bardzo ciekawy, ale nadaje się do nowego wątku. Jeśli taki wątek zostanie otwarty, to będę w tym wątku też uczestniczył.
73 Bogan, SP3IQ.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Przekierowanie