Programowanie w języku C w środowisku AVR Studio4 - Wersja do druku +- HomeMade (http://sp-hm.pl) +-- Dział: Oprogramowanie (/forum-84.html) +--- Dział: Technika programowania mikroprocesorów (/forum-85.html) +--- Wątek: Programowanie w języku C w środowisku AVR Studio4 (/thread-1161.html) |
RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 10-06-2012 19:06 (07-06-2012 9:57)SP3GTG napisał(a): „Własna” synteza z AD 9951 bardzo cieszy, choćNie ma sprawy tak tez zrobimy. Jednak z obsługą encodera będzie problem gdyż go nie posiadam - jeśli ktoś ma na zbyciu solidny, najlepiej z jakiejś obrabiarki CNC za niewielkie pieniądze to mogę kupić. Tym razem proponuję opracować "normalne" wyświetlanie częstotliwości - w postaci xxx.xxx.xxx ( np. 3.710.000 ) Oto moja propozycja funkcji wys_freq() Kod: void wys_freq(unsigned long int freq) Z pliku main.c usuwacie całą funkcję wys_freq() i na jej miejsce wsadzacie tą którą podałem w tym poście. Działa - sprawdzałem... lecz ciągle jest coś nie tak i to jest zadanie dla Was: Jak zrobić żeby częstotliwość nie wychodziła poza wyświetlacz ?? Pogłówkujcie , jeśli nie dacie rady podam rozwiazanie. Podpowiedź: Wystarczy zmienić (tylko) góra dwa znaki. RE: Programowanie w języku C w środowisku AVR Studio4 - SP3GTG - 11-06-2012 12:32 Witam Zadanie rozwiązane, plik w załączniku. Nadto zlikwidowałem kropkę między MHz a setkami kHz, co w/g mnie poprawia czytelność czętotliwości Pozdrawiam Andrzej RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 11-06-2012 18:38 Well Done Andrzej! Chodziło właśnie o zmianę adresu miejsca na wyświetlaczu, od którego zacznie się "rysowanie" częstotliwości. Czyli zmianę wartosci zaznaczonej na czerwono ( prawie na samym końcu pliku nowy.c ): LCD_PORT &= (~1<<LCD_RS); bajt_lcd(0x85); wys_freq(frequency); Na miejsce tej wartości powstawiajcie np. 0x83, 0x81, ... itd żeby zobaczyć co to zmienia. Dobra, mamy "ładne" wyświetlanie częstotliwości teraz przydałoby sie sensowne wyświetlanie kroku - ja do tego wykorzystam pomysł z CB-radia LINCOLN w którym pod cyfrą jedności, dziesiątek, setek , itd ... ustawiany jest kursor. ( np. Jeśli kursor jest pod cyfrą reprezętującą dziesiątki Herców, oznacza to że krok wynośi 10 Hz. ) Wyświetlacz którym sie bawimy może wyświetlać kursor, może być nawet migający. Wykorzystam to, oto gotowiec : [attachment=5416] Zwróćnie uwagę ile miejsca zyskaliśmy na wyświetlaczu - można w miejsce wyświetlania kroku wsadzić np. drugą częstotliwość. Pobawcie się tez opóźnieniem o którym napisałem w środku pliku nowy.c - dostosujcie szybkość zmian częstotliwosci do własnych preferencji. Acha, zmiana jeszcze jest w pliku lcd_alfanum.c w funkcji: Kod: void bajt_lcd(unsigned char znak) RE: Programowanie w języku C w środowisku AVR Studio4 - SP3GTG - 11-06-2012 19:28 Witam Podobnie o dwa miejsca w lewo, został przesunięty początek "rysowania" kroku, aby był we właściwym miejscu. Zresztą jest to w pliku zaznaczone, podobnie jak zmiana kropki na puste pole LCD_PORT &= (~1<<LCD_RS); bajt_lcd(0xc1); //0xc3 napis_lcd("krok"); wys_freq(krok); } Pozdrawiam Andrzej może być z kursorem lecz daj do wyboru mrygający i nie Witam Napis jest Ok. z tym, że we fragmencie kodu: _delay_ms(1); // było _delay_ms(10) czyli 10 ms opóźnienia, opóżnienie zmieniłem na 2 ms, gdyż przy 1ms po wyłączeniu napięcia zasilania sterownika i ponownym włączeniu LCD był pusty. Pozdrawiam Andrzej RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 20-06-2012 10:12 BArdzo dobrze, klonów tych wyświetlaczy jest dużo, wiele firm to produkuje, jedne są szybsze drugie wolniejsze. Widocznie twój wyświetlacz nie daje sobie rady z tak szybkim sygnałem, jakim ja traktuje swój LCD. Ale fajnie że doszedłeś do tego że trzeba go zwolnić poprzez to opóźnienie. RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 29-06-2012 14:40 Do 7 sierpnia mam dodatkową prace za dobre pieniądze więc wątpię żebym coś tu nabazgrał, więc ... SORRY za tak długa przerwę ... RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 12-08-2012 8:58 Witam wszystkich po długiej przerwie. Przedstawię wam przykład kodu obsługującego przetwornik Analog-Digital. Wykorzystałem do tego celu ostani projekt syntezy z postu #163 -> http://sp-hm.pl/thread-1161-post-13736.html#pid13736 Zmmieniłem tylko zawartość pliku nowy.c !!! Wyprowadzenie PA0 jest wejściem naszego ADC. Przetwornik jest 10-bitowy, a więc wartość jaka możemy uzyskać zawiera sie w zakresie 0 - 1023. I takie wartości będą wyświetlane na LCD. Jeśli odkomentujecie odpowiednią linijkę (zaznaczyłem ją komentarzem) w pliku nowy.c to otrzymacie watrość napięcia czyli wskazania na LCD będą w zakresie 0 - 5V. Dl tych , którzy wypadli trochę z "obiegu" przypominam, że te dziwne napisy: ADMUX , ADCSRA, ADCL, ADCH to rejestry na których pracujemy (w tym przypadku rejestru ADC). Ich znaczenie jest wyjaśnione w necie więc nie będę tu tego opisywał. Poprostu wklejam plik z projektem i poeksperymentujcie. Czekam na pytania jeśli ktoś nie rozumie czegoś. RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 23-09-2012 22:42 (26-01-2012 20:32)SQ6ADE napisał(a): A gdzie R/W w sterowaniu wyświetlacza W związku ze słuszną uwagą Krzyśka zamieszczam biblioteczkę dla tych którzy potrzebują OBSŁUGI LCD z linią RW (dwa pliki .h i .c) : [attachment=5955] Oraz "wykastrowany" projekt naszej syntezy (z zawartą już tą biblioteką), który testuje działanie wyświetlacza. [attachment=5956] Jedyne co musicie zrobić aby skonfigurować LCD - to wpisać odpowiednie literki portów i symbole wyprowadzeń w plik lcd_alfanum.h ... Poniżej część tego pliku będąca zarazem przykładem Kod: #define LCD_Dx_P D //wpisujemy, który port ma wysyłać dane do wyświetlacza - 4 starsze bity portu (7,6,5,4) */ RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 29-10-2012 21:38 Wiem że rzadko tu pisuję ale priorytety mi się przestawiły na doskonalenie mojego HOME-MADA wieczorami a nie na siedzenie w AVR-C. Mimo to będę czasami tu pisał i wsadzał przydatne dla początkujących kody. Tym razem coś dla ludzi którzy chcą powalczyć z zapisem i odczytem do pamięci Eprom, która jest na większości płyt ewaluacyjnych wmontowana. Jeśli ktoś ma płytkę bez pamięci może za kilka złotych kupić ośmionóżkowy scalaczek i dokleić go do swojej płytki. Załączam bibliotekę zawierającą jak zwykle pliknagłówkowy .h i źródło w .c . Potrzebna jest znajomość mechanizmu działania magistrali I2C, jeśli ktoś nie wie o czym mowa to niech poszuka w google "jak działa magistrala I2C"... Zanim zaczniecie używać I2C należy zainicjalizować port TWI w Atmedze funkcją: Kod: TWI_init(); Kod: zap_pam(0x0005, freq); Kod: papparara=odcz_pam(0x0005); RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 01-11-2012 20:30 Powoli będę robił kod obsługujący przycisk, który dodamy - nazwę go Memory/VFO - będzie zmieniał tryb pracy syntezy z VFO na Memory i odwrotnie. Podłączyc go należy pod wyprowadzenie PA3 i masę (podobnie jak poprzednie przyciski). Najpierw jednak zrobię trochę porządku w dotychczasowym programie - przełożę funkcję wyświetlającą częstotliwość z pliku głównego programu do pliku-biblioteki obsługi LCD. Co zatem zrobiłem: 1. Wziąłem projekt z postu #163. 2. Zmieniłem zawartość plików : nowy.c , lcd_alfanum.c , lcd_alfanum.h - zobaczcie co się zmieniło przy przenoszeniu codu funkcji "wys_freq". 3. poprawiłem wartość opóźnienia o którym wspomniał SP3GTG w poście #164 - zamiast 1ms opóźnienia są teraz 3ms (choć SP3GTG napisał że działa z 2ms opóźnienia, ale dałem 1ms więcej na zapas gdyby ktoś miał wolniejszy wyświetlacz) 4. skopiowałem obydwa pliki do obsługi Pamięci przez magistralę I2C do katalogu projektu - jeszcze z nich nie korzystam ale wsadziłem je tam żeby już były gotowe do następnego zabiegu [attachment=6265] ... Doklepałem trochę kodu który ma zmieniać tryb z VFO na Memory i na odwrót, gdy podamy stan niski na PA3.... i teraz wygląda to tak: [attachment=6266] Nie mogę tego kodu teraz sprawdzić pod kontem poprawności działania gdyż nie mam teraz dostępu do swojej płyty ewaluacyjnej ... jeśli ktoś może to proszę o sprawdzenie i napisanie czy jest OK. Ja to sprawdzę dopiero w weekend. Jak zwykle czekam na pytania, choć widzę że zainteresowanie jest niewielkie |