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
SP3GTG Offline
Andrzej
**

Liczba postów: 50
Dołączył: 21-08-2009
Post: #171
RE: Programowanie w języku C w środowisku AVR Studio4
Witaj Marcin
Bardzo się cieszę, iż nadal prowadzisz kurs programowania w C, omawiając ostatnio I2C a wkrótce enkoder.
Magistrala I2C tzw. i-kwadrat, to podstawowy sposób komunikacji między mikroprocesorem a urządzeniami
peryferyjnymi, więc warto z tym problemem się zapoznać. Prosto i szczegółowo zagadnienie to jest
opisane w Kursie Bascom College ćwiczenie 5 s.22-28 w Elektronice dla Wszystkich nr.8/2000, ćw.6
nr. 9/2000 EdW, gdzie nadto podany jest krótki programik do odczytywania adresu danej kostki.
Te archiwalne opisy są dostępne na stronach EdW.
Szyna I2C opisana też jest w kolejnym kursie programowania w EdW nr.11/2003
Ja ostatnio też jestem dość mocno zajęty budową Husarka /Rx już działa/ , aktualnie robię PA.
Vy 73 Andrzej
02-11-2012 12:10
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #172
RE: Programowanie w języku C w środowisku AVR Studio4
Sorry że tak późno - program z pilku nowy1.zip z postu #170 niestety nie działałTongue - tak to jest jak sie pisze i nie sprawdzi... poniżej sprawdzony program z komentarzami przy miejscach z błędami. Błędy zostały skromnie opisane żebyście wiedzieli co i poco się zmieniło. Zmieniłem konfigurację w pliku lcd_alfanum.h :
był ustawiony portC do obsługi LCD, a ponieważ ja już miałem podłaczone do portuD więc sobie pozwoliłem zmienić. Jeśli działały wam poprzednie programy na porcieC to pamiętajcie aby z powtrotem przestawić na portC - przypominam dla tych co wypadli z obiegu, że chodzi o linijki:
Kod:
#define DEF_PORT    DDRD    //wpisujemy DDRA, DDRB, DDRC, DDRD - zależy który port będzie obsługiwał wyświetlacz
#define    LCD_PORT    PORTD    //wpisujemy, który port ma wysyłać dane do wyświetlacza - 4 starsze bity portu (7,6,5,4) */

.zip  nowy1.zip (Rozmiar: 73.95 KB / Pobrań: 855)
(Ten post był ostatnio modyfikowany: 07-11-2012 20:47 przez SP4EJT.)
07-11-2012 20:47
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #173
RE: Programowanie w języku C w środowisku AVR Studio4
Dla tych którzy nie wiedzą jak działa enkoder ( są tacy ? ;P ) ... wklejam tajemnicę obsługi ENKODERA ... dla ścisłości: "tego co przy pokręcaniu gałką produkuje dwa przebiegi prostokątne przesunięte w fazie o 90 stopni".
W tym celu muszę posłużyć się obrazkiem ściągniętym z sieci İmage İmage
1. przy pokręcaniu osią enkodera wytwarzają się sygnały takie jak opisałem wcześniej i które są widoczne na obrazkach. Pojawiają się one oczywiście na wyprowadzeniach enkodera.
2. Jedno wyprowadzenie enkodera, powiedzmy że A, podłączamy pod INT0/PD2 Atmegi. To Atmegowe wyprowadzenie jest tak ustawione aby wykrywać narastające zbocze sygnału A.
3. Jeśli takie się pojawi to uruchamia się programik przerwania 0 ( INT0 )
4. Programik ten sprawdza jaki występuje stan na wejściu PB0 ... w momencie wystąpienia wspomnianego wcześniej zbocza narastającego na wejściu INT0.
5. Jeśli stan na PB0 jest niski to enkoder kręcisz w kierunku X a jeśli kręcisz w drugą stronę to stan PB0 jest (w momencie wystąpienia przerwania) na pewno wysoki ... jeśli nie kumasz jeszcze przeanalizuj rysunki.

Na dole załączony gotowiec - program naszej nieszczęsnej syntezy ( Doszły nowe pliki: enkoder.c i .h )

Ci co go uruchomią zauważą zapewne, jak wolno odświerza się wyświetlacz i częstotliwość wysyłana do układu DDS. jest za to odpowiedzialna pętla delay na końcu programu, która przy używaniu przycisków była sensowna a teraz nam przeszkadza, usuńcie ją i zobaczycie jak śmiga wtedy.
Kod:
        LCD_PORT &= (~1<<LCD_RS);
        bajt_lcd(0x85);
        wys_freq(frequency);
        LCD_PORT &= (~1<<LCD_RS);            
        bajt_lcd(kursor);                    
        _delay_ms(200);                        // wywal tą pętlę jeśli stosujesz enkoder aby odswierzanie było szybsze
    }    
}
Jeśli wywaliliście tę pętlę to napewno zauważycie jak kłopotliwe jest teraz korzystanie z przycisków Smile Jak temu zaradzić ? Może ktoś pomyśli i zapoda nam rozwiązanie, które jest bardzo proste zresztą. Dodam to zdanie choć nie wiem czy jest sens: "Jak zwykle czekam na pytania." Big Grin

Jeszcze jedna sprawa ... chcę uświadomić Was, że macie tu wszystko co jest niezbędne i zarazem najtrudniejsze do ogarnięcia (chyba) na drodze do tego aby napisać własny program syntezy na AD9951. Przy minimum wysiłku możecie sobie odjąć lub dodać częstotliwość przemiany pośredniej, jeśli macie radio z pośrednią lub pomnożyć częstotliwość przez 4 jeśli chcecie zastosować ją w homodynie. Wstęp do obsługi pamięci po I2C macie, ja co prawda zrobiłem tylko 10 kanałów bo to lekcje ale możecie zrobić 50... 100 ... 2000, zależy od pojemności pamięci. Sygnały sterujące do płytki BPF to też prosta sprawa. Ustawianie częstotliwości pilotów itp... to tylko kwestia czasu, który musicie na to poświęcić.

Powodzenia.

Na jakiś czas rzucam tę robotę ... chcę pobawić się moim wyświetlaczem 480x272 (4 cale) i zrobić z niego i Xmegi wobuloskop ... Myślę że katowanie dalej kwestii syntezy jest słabym pomysłem ... chyba że stwierdzicie inaczej....
post w trakcie pisania ...

Czas na odrobinkę somokrytyki ... na poprawienie błędów raczej istotnych ...
1. pisanie w każdym pliku źródłowym ( czyli .c )
Kod:
#ifndef F_CPU
#define F_CPU 16000000
#endif

Jest to raczej głupie z mojej strony bo jak się okazuje można wpisać wartość w kratce Frequency w ustawieniach programu ( lub dopisać do pliku makefile "-DF_CPU 16000000UL" ) ... raz ... dla wszystkich plików użytych w projekcie ... czyli nie trzeba powtarzać tego jak mantrę w każdym pliku - mój błąd Wink ... ale wybaczcie mi bo programuję tylko trochę ponad rok i dokopałem się do tej wiedzy dopiero teraz.


Załączone pliki
.zip  nowy.zip (Rozmiar: 79.43 KB / Pobrań: 835)
(Ten post był ostatnio modyfikowany: 14-11-2012 18:28 przez SP4EJT.)
12-11-2012 22:11
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #174
RE: Programowanie w języku C w środowisku AVR Studio4
[undefined=undefined]Andrzej SP3GTG napisał, że nadal w plikach są te błędy o których napisałem ... to prawda, gdyż załączony plik "nowy.zip" dotyczy wcześniejszego mojego posta, czyli tego nad pierwszą linią poziomą. Ja tych linii nie wstawiam - robi to forum. Niestety nie mogę edytować posta - dowód : İmage
... żeby to poprawić ktoś musiałby "naprawić" forum. Zauważyłem już dawno (co tez sygnalizowałem) że gdy się pisze posta po swoim poście (np. wczorajszym) to doklejany jest do poprzedniego, rozdziela te dwa posty tylko czarna pozioma linia... i ... Uwaga! ... znika możliwość edycji (może jest ale nie wiem gdzie). Wygląda na to że załącznik który tyczy się treści na górze posta zostanie na samym dole, bo ja nie mam możliwości poprawienia.[/undefined]

EDIT:
Kolejny błąd forum ... powyższy tekst chciałem umieścić w innym kolorze lub pochyłą czcionką. Zamiast znaczników kursywy (pochylenia) forum zapodało napisy undefined=undefined ... ALE ... przynajmniej odkryłem przypadkiem jak zmusić forum do tego by umieściło moją wypowiedź jako osobnego posta Smile i jest możliwość edycji tego ostatniego.

Zatem zgłaszam BUG'a Big Grin niech ktoś to usprawni jeśli łaska
(Ten post był ostatnio modyfikowany: 15-11-2012 15:59 przez SP4EJT.)
15-11-2012 15:56
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
DONDU Offline


Liczba postów: 1
Dołączył: 17-04-2012
Post: #175
RE: Programowanie w języku C w środowisku AVR Studio4
(12-11-2012 22:11)SP4EJT napisał(a):  Czas na odrobinkę somokrytyki ... na poprawienie błędów raczej istotnych ...
1. pisanie w każdym pliku źródłowym ( czyli .c )
Kod:
#ifndef F_CPU
#define F_CPU 16000000
#endif

Jest to raczej głupie z mojej strony bo jak się okazuje można wpisać wartość w kratce Frequency w ustawieniach programu ( lub dopisać do pliku makefile "-DF_CPU 16000000UL" ) ... raz ... dla wszystkich plików użytych w projekcie ... czyli nie trzeba powtarzać tego jak mantrę w każdym pliku - mój błąd Wink ... ale wybaczcie mi bo programuję tylko trochę ponad rok i dokopałem się do tej wiedzy dopiero teraz.

Oj, tam zaraz głupie - jedna z możliwości :-)
A na potwierdzenie ustalenia, że najprościej zrobić to w opcjach: F_CPU – gdzie definiować?
08-12-2012 9:50
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #176
RE: Programowanie w języku C w środowisku AVR Studio4
(12-11-2012 22:11)SP4EJT napisał(a):  ... Na jakiś czas rzucam tę robotę ... chcę pobawić się moim wyświetlaczem 480x272 (4 cale) i zrobić z niego i Xmegi wobuloskop ...
Jak napisałem tak zrobiłem (a włąściwie ciągle powolutku robię). Poniżej przedstawiam link dla tych, których pokonała moc lenistwa i rzucili naukę programowania Atmegi. Chciałbym przekonać Was, że warto się uczyć tej materii. Urządzenie to zostało co prawda wykonane na uC ATXmega (taka ulepszona ATmega) ale to samo można zrobić na Atmedze, będzie poprostu wolniej śmigać. Jest to zarazem moje usprawiedliwienie - ten projekt i moje dwie małe córeczki zabrały mi cały wolny czas, dlatego ten kurs stanął w miejscu. Nie wykluczam, że poprowadzę go dalej ... jednak czas oczekiwania na dalszą część może być długi ...
Kliknij na mnie ! :-)
(Ten post był ostatnio modyfikowany: 05-04-2013 13:11 przez SP4EJT.)
05-04-2013 13:09
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
DDRA Offline


Liczba postów: 2
Dołączył: 30-10-2013
Post: #177
RE: Programowanie w języku C w środowisku AVR Studio4
(05-04-2013 13:09)SP4EJT napisał(a):  
(12-11-2012 22:11)SP4EJT napisał(a):  ... Na jakiś czas rzucam tę robotę ... chcę pobawić się moim wyświetlaczem 480x272 (4 cale) i zrobić z niego i Xmegi wobuloskop ...
Jak napisałem tak zrobiłem (a włąściwie ciągle powolutku robię). Poniżej przedstawiam link dla tych, których pokonała moc lenistwa i rzucili naukę programowania Atmegi. Chciałbym przekonać Was, że warto się uczyć tej materii. Urządzenie to zostało co prawda wykonane na uC ATXmega (taka ulepszona ATmega) ale to samo można zrobić na Atmedze, będzie poprostu wolniej śmigać. Jest to zarazem moje usprawiedliwienie - ten projekt i moje dwie małe córeczki zabrały mi cały wolny czas, dlatego ten kurs stanął w miejscu. Nie wykluczam, że poprowadzę go dalej ... jednak czas oczekiwania na dalszą część może być długi ...
Kliknij na mnie ! :-)

Witam

Mam teraz labolatorium z podstaw techniki mikroprocesorowej i programujemy atmegę32. Na ostatnich zajęciach mieliśmy włączanie i wyłączanie diod. Ale ja nic z tego nie pojmuje. Mógłbym mi ktoś wytłumaczyć jak to w ogóle funkcjonuje i w jaki sposób programujemy te diody (podstawy programowania w c znam). W poniedziałek następne zajęcia i będzie przetowrnik ac.

Naprawdę byłbym wdzięczny gdybym mi ktoś wytłumaczył o co w tym wszystkim chodzi i na jakiej zasadzie to działa.
31-10-2013 18:28
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #178
RE: Programowanie w języku C w środowisku AVR Studio4
W pierwszym poście tego tematu jest do pobrania plik lekcja1.zip.
Tu masz bezpośredni link do tego postu : http://sp-hm.pl/thread-1161-post-11136.html#pid11136
Na dole postu #1 jest umieszczony plik lekcja1.zip ...
1. ściągnij ten plik, rozpakuj i uruchom (nawet w notatniku) plik lcd.c
2. przeczytaj całą zawartość tego pliku z uwagą
3. napisz czego dalej nie rozumiesz
(Ten post był ostatnio modyfikowany: 01-11-2013 9:25 przez SP4EJT.)
01-11-2013 9:25
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
DDRA Offline


Liczba postów: 2
Dołączył: 30-10-2013
Post: #179
RE: Programowanie w języku C w środowisku AVR Studio4
(01-11-2013 9:25)SP4EJT napisał(a):  W pierwszym poście tego tematu jest do pobrania plik lekcja1.zip.
Tu masz bezpośredni link do tego postu : http://sp-hm.pl/thread-1161-post-11136.html#pid11136
Na dole postu #1 jest umieszczony plik lekcja1.zip ...
1. ściągnij ten plik, rozpakuj i uruchom (nawet w notatniku) plik lcd.c
2. przeczytaj całą zawartość tego pliku z uwagą
3. napisz czego dalej nie rozumiesz

Dobry wieczór.

Serdecznie dziękuję za lekcję. Przerobiłem te, które dotyczyły diod. Bardzo mi pomogły. Przygotowałem się dzisiaj do zajęć i tak źle nie było, ale niestety... gdybym mógł prosić o pomoc w pewnej rzeczy byłbym bardzo wdzięczny. Bo jeśli chodzi o diody, to włącznie z używaniem operatorów bitowych przesunięć itd. to mam opanowane, ale dzisiaj doszła nowa rzecz tzn przyciski. Jednak nie zostało to wytłumaczone.

I nie udało mi się tego poprawnie wykonać.
Takie mieliśmy polecenia do wykonania:
1. Konfiguracja diod.
2. Przyciski.
3. Jeżeli nacisnę PD2 PA6 ma się zaświecić.
4. Jeżeli nacisnę PD3 PA6 ma zgasnąć.
5. Powrót do pkt 3.

Mieliśmy jeszcze watchdoga później wplecionego, ale najpierw chciałbym się dowiedzieć jak mam napisać program obsługujący te przyciski.
04-11-2013 23:46
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #180
RE: Programowanie w języku C w środowisku AVR Studio4
Szanowny Panie Kolego.
Obsługa przycisku jest bardzo prosta i jest już w lekcji 3.
Potem jest też w lekcji 4 i 5.
Jeśli po przerobieniu tych lekcji czegoś nie zrozumiesz to napisz czego dokładnie nie rozumiesz. Wydaje mi się, że wszystko jest "łopatologicznie" wyjaśnione od razu na przykładach.
Napisz mi bo bardzo ciekawy jestem ... jesteś studentem czy uczniem szkoły średniej ?
11-11-2013 14:11
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


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