Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 kwi 2024, o 04:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 12 mar 2012, o 14:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Witam,

Mam problem z modyfikacją biblioteki MKUART.c pod procesor ATMega644PA. Na procesorze ATMega32 wszystkie funkcje działały poprawnie.
W bibliotece Pana Mirka pozminiałem nazwy rejestrów oraz nazwy przerwań aby bibliotekę dostosować pod procesor ATMega644PA.
Po moich modyfikacjach działała mi jedynie funkcja wysyłania znaków void uart_puts(char *s).
Niestety nie działała mi funkcja odbierania char uart_getc(void) :( Nie mogę nic wysłać z terminala do uP. Testy przeprowadzam na płytce testowej. Od strony elektycznej wszystko jest na pewno OK, poniewż funkcje zawarte w orginalnej bibliotece mkuart bez problemu działają mi na procesorze ATMega32.

Parametry transmisji:
9600/8/none/2

Zadaniem programu ma być wyświetlenie tekstu na wyświetlaczu LCD. Taki sam tekst wyświetlalem bez problemu na przy użyciu procesora ATMega32.
Poniżej zamieszczam listingi:

plik main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


plik mkuart.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
www.iuvo.it - Automatyka Budynkowa



Ostatnio edytowano 12 mar 2012, o 14:52 przez IUVOit, łącznie edytowano 3 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 14:22 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A mnie się zdaje, że Pan Mirek wielokrotnie prosił na tym forum aby nie zamieszczać listingów z książki.
:(

Może analizę i poszukiwanie błędu - powodu dlaczego nie działa należałoby zacząć od zastanowienia się co zmieniamy i dlaczego.
Potem, czy na pewno zmieniamy to dobrze.
Następnie warto by się przyjrzeć, czy na pewno podłączamy wszystko tak jak być powinno...

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 14:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Okroiłem listing. Teraz umieszczam tylko fragmenty kodu w którym są jakieś błędy. Ten kod po modyfikacji wielokrotnie analizowałem i nie mogę znaleźć błędu. Od strony elektrycznej, połączeń jest wszystko OK. Jeżeli złamałem jakieś zasady to przepraszam!!! To dopiero pierwszy mój post na tym forum, więc proszę o wyrozumiałość, jeżeli złamałem jakieś zasady.

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 15:57 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

Na wstępie dziękuję za dostosowanie się do zasad związanych z moją globalną prośbą o nie umieszczanie całych bibliotek z książki a ew fragmentów, które sprawiają kłopot. Dziękuję, także kolegom, którzy o tym przypomnieli.

Dobrze przejdźmy do rzeczy, też na pierwszy rzut oka nie widzę błędu w tym kodzie po zamianie nazw rejestrów i bitów, ale skoro nie działa to znaczy, że jednak czegoś gdzieś jeszcze nie zrobiłeś jeśli chodzi o taką przeróbkę.

Myślę, że mając pod ręką ATmega32, gdzie wszystko ładnie działa wg założeń, pewne jest że sam kod nie może być przyczyną problemu a właśnie co najwyżej to przeportowanie na inny procesor.

Jakiej wielkości bufory cykliczne masz zadeklarowane w pliku konfiguracyjnym ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 16:35 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

aha - przy okazji testuj sobie taki programik żeby to odpalić na m644P

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 17:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Deklaracje w pliku konfiguracyjnym:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyli wielkość bufora 32. Wiem, że wielkości buforów muszą być typu: 0b00000011, 0b00001111 itd Zasadę działania bufora cyklicznego zrozumiałem. Bardzo sprytne zapętlenie z tą maską :) Cały czas pracuję z buforem o wielkości 32 tak jak w powyższym listingu.

ps.
Nazwy rejestrów i przerwań brałem z pliku iom644pa.h

Ten fragment programu związany z wyświetlaniem znaków ASCI przychodzących z COM'a działał mi jak robiłem testy na ATMega32. Ponieważ w dalszej kolejności chce analizować przychodzące znaki (stringi). Ramka znaków zaczynała by się od znaku 's' kolejne znaki były by jakimiś rozkazami, komendami...

W sumie tam błędu nie szukałem... Ale, ok zmienię na zalecany kod. Mi się wydaje, że błąd gdzieś w deklaracjach popełniłem. W sumie nie sprawdzałem czy wchodzę w przrwanie...

Testy te przeprowadzę wieczorkiem jak będę miał chwilkę czasu

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 17:55 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

o właśnie - to czekam na info - będziemy dalej kombinować ;) w razie czego.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 18:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Po dokonaniu inicjalizacji UART rejestry miały następujące parametry. Wydaje mi się, że gdzieś tu popełniłem błąd. Trochę kombinacji porobiłem ale na razie nic mi nie wychodzi. Późnym wieczorem bedzie kolejne podejście ;)


Obrazek

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 265
Lokalizacja: Szczecin
Pomógł: 9

Problem rozwiązany! Problem nie leżał w inicjalizacji UART ale w sposobie wyświetlania znaków na wyświetlaczu LCD. Po zastosowaniu się do wskazówek zapal diodę jeżeli przyjdzie znak 'a' zgaś gdy znak 's' ;) wszystko ruszyło.

Czas teraz na dalsze kroki. Zrobienie funkcji, która będzie analizowała przychodzące znaki (ramki). Szkoda, że nie było gotowej takiej funkcji w bibliotece mkuart.c :(

Dziękuję za pomoc :)

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2012, o 22:46 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

IUVOit napisał(a):
Szkoda, że nie było gotowej takiej funkcji w bibliotece mkuart.c :(


W tej książce przyjąłem osiągnięcie jednego najważniejszego celu. Zapoznanie czytelnika z przejrzystym sposobem obsługi UART na przerwaniach oraz wyjaśnienie zagadnienia związanego z korzystaniem z buforów cyklicznych. Jak widać, zajęło to "trochę" miejsca w książce i uznałem że więcej nie będę pisał na łamach tej książki aby nie zrobić mętliku. Pozostawiłem to w takiej wersji aby każdy mógł teraz dalej sam popróbować swoich własnych sił....

Wprawdzie w drugiej części książki, którą właśnie wciąż kończę miałem nie pisać nic na temat UART, bo zabrakło czasu i miałem wszystko przerzucić do trzeciej części książki do pierwszego największego rozdziału, to jednak powoli uginam się pod naporem maili i prawdopodobnie chociaż pobieżnie ale rozwinę nieco dalej ten temat. Przy okazji fajnie, że każdy już sam zacznie swoich własnych sił w tym zakresie - i będzie się mógł przekonać czy szedł w dobrym kierunku, bo w drugiej części książki będzie właśnie trochę na ten temat jak zrobić fajną funkcję ale NIEBLOKUJĄCĄ

Kod:
uart_get_str();


mam nadzieję, że się spodoba ..... a może nawet uda mi się chociaż troszkę o parsowaniu danych napisać - zobaczymy.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2013, o 17:56 
Offline
Nowy

Dołączył(a): 21 kwi 2013
Posty: 11
Pomógł: 0

Miałem niewielki problem z biblioteką MKUART.c na ATMEGA328P. Po przeróbce urywek kodu biblioteki wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Program kompiluje się bez błędów do hex-a. Jednakże w w/w bibliotece pojawiają się komunikaty treści:
Symbol 'UDR0' could not be resolved
Symbol 'UCSR0A' could not be resolved
Symbol 'RXC0' could not be resolved
Czy, ktoś z państwa może mi to wyjaśnić?

Kody wklejamy przy pomocy syntax=c - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO