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

Liczba postów: 86
Dołączył: 05-12-2009
Post: #151
RE: Programowanie w języku C w środowisku AVR Studio4
Tak ogólnie to dobrym pomysłem jest poznanie idei programowania w C podczas tworzenia programików na PC. Proste aplikacje konsolowe pozwalające zapoznać się z typami danych, operacjami bitowymi, stosowaniem wskaźników, struktur i uni czy też formatowania ciągu tekstowego za pomocą funkcji printf itp. Jest to szybsze - brak wgrywania wsadu do uP. Oczywiście mówię o podstawie języka C, później dochodzą 'kwiatki' w stylu dłubania w ustawieniach rejestrów, konfiguracji peryferii czy stosowania zmiennych o małym zakresie (8,16 bit).
12-05-2012 10:31
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5FCS Offline
Adam
****

Liczba postów: 475
Dołączył: 02-02-2009
Post: #152
RE: Programowanie w języku C w środowisku AVR Studio4
Skoro zaproponowałem uporządkowanie plików w tym kursie to na początek pokażę jak to powinno wyglądać, może na przykładzie wyświetlacza LCD. Nowa biblioteka sklada się z dwóch plików:
- pliku źródłowego alfa_lcd.c;
- pliku nagłówkowego alfa_lcd.h

Plik nagłówkowy musi być wczytany w każdym module, który chce korzystać z funkcji napisanych dla wyświetlacza. Plik zawiera definicję nazw pinów do obsługi wyświetlacza oraz prototypy funkcji które będą dostępne w innych modułach. Do zabezpieczenia przed wielokrotnym wczytywaniem pliku nagłówkowego w wielu modułach służą dyrektywy kompilatora do warunkowej definicji ( #ifndef, #endif ).

Kod:
/* Plik naglowkowy dla wyswietlacza alfanumerycznego LCD
----------------------------------------------------------------
dyrektyw kompilatora do podlaczenia pliku naglowkowego
#include "alfa_lcd.h"        //plik noglowkowy dla alfa. LCD

----------------------------------------------------------------*/
#ifndef    alfa_lcd_h
#define alfa_lcd_h            //definicja warunkowa

//Konfiguracja - na którym porcie i na wyprowadzeniach puszczamy sterowanie LCD
//Pamiętajcie że numeracja wyprowadzeń PORTU zaczyna sie od "0"

#define     DEF_PORT    DDRD        // DDRA, DDRB, DDRC, DDRD - port do obsługi wyświetlacza
#define    LCD_PORT    PORTD        //wpisujemy, który port ma wysyłać dane do wyświetlacza
                                    //podłączamy odpowiednio do wyjść D7, D6, D5, D4 wyświetlacza
#define    LCD_RS        3        //które wyprowadzenie PORTU będzie linią RS
#define     LCD_E        2        //które wyprowadzenie portu ma być linią E

//Prototypy funkcji
void init_lcd(void);    
void bajt_lcd(unsigned char znak);
void napis_lcd(char tab[]);

#endif
//--------------------------------------------------------------

Plik źródłowy na początku wczytuje własny plik nagłówkowy aby mieć te same definicje pinów, wcześniejsze wczytanie prototypów funkcji też nie przeszkadza a czasem przy skomplikowanych powiązaniach pomiędzy funkcjami nawet się przydaje.
W tym pliku umieszczamy kod źródłowy funkcji wyświetlacza. Bywa tak, że znajdują się tu również pomocnicze funkcje, nazw których nie umieszczamy w pliku nagłówkowym ponieważ są one potrzebne tylko w module wyświetlacza.

İmage

Na załączonym obrazku ekran z AVRstudio, na liście plików źródłowych widzimy dodatkowy plik do kompilacji alfa_lcd.c a na liście wczytanych plikow nagłówkowych alfa_lcd_h. Analogicznie należy przerobić plik z funkcjami do obsługi AD9951.
Zmodyfikowane pliki w załączniku, kompilacja poprawna, nie mam w tej chwili modułu do sprawdzenia w układzie.


Załączone pliki
.zip  nowy_sp5fcs.zip (Rozmiar: 54.29 KB / Pobrań: 15)

http://sp5fcs.pl
13-05-2012 9:36
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5IWI Offline
Janek
*

Liczba postów: 21
Dołączył: 01-02-2009
Post: #153
RE: Programowanie w języku C w środowisku AVR Studio4
(11-05-2012 12:58)SP4EJT napisał(a):  poniżej program-gotowiec, który zawiera zmiany o których napisałem w powyższym poście.
Jeszcze nie przetestowałem, postaram się zrobić to wieczorem, ale może np. Janek SP5IWI wypróbuje Wink

Następnym krokiem będzie przygotowanie portu SPI Atmegi do pracy z naszym programem:
funkcję wysyłającą bajt do DDSa zamienimy na kod który wyśle bajt przez SPI...

Padł mi dysk i trochę mi zeszło na walce z kompem,jakoś nie mogę wrócić z AVRSTUDIO do stanu przed awarią mimo że wgrałem wszystko tak jak było wcześniej.Przetestowałem ostatnią wersję Marcina i działa OK.Testowałem też wersję Adama SP5FCS kompiluje się OK ale po wgraniu programu sterowanie syntezą jest jakieś dziwne,nie ma powtarzalności przy zmianie częstotliwości DDSa,nie zmienia się zgodnie z zaznaczonym krokiem,może to jest spowodowane tym że moja płyta EVB też się troszkę zbuntowała i nie mogę zainstalować programatora STK500v2 a może co innego.Jak znajdę trochę czasu to prześledzę listingi programu Adama to może wypatrzę jakąś niezgodność z moimi ustawieniami
19-05-2012 22:58
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
***

Liczba postów: 155
Dołączył: 06-05-2011
Post: #154
RE: Programowanie w języku C w środowisku AVR Studio4
Baaardzo przepraszam, że nie ma mnie tutaj z wami. Moja żona ma teraz egzaminy, i ostro zakuwa a ja z moją 7 miesięczną córką uciekam z domu w różne miejsca żeby się mogła pouczyć w spokoju. Męki te skończą się dopiero w ten weekend.
Błagam o wybaczenie Smile jeszcze kilka dni.
Janek, najpóźniej w sobotę sprawdzę program poprawiony przez Adama oraz zrobię poprawkę z tymi plikami nagłówkowymi według jego przykładu, no i dodam obsługę SPI. Niestety nie mogę sobie teraz pozwolić na siedzenie po nocach przy AVRStudio tak jak to robiłem przy początku kursu.
(Ten post był ostatnio modyfikowany: Wczoraj 23:03 przez SP4EJT.)
Wczoraj 23:02
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


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