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



Teraz jest 26 lut 2025, o 23:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 29 wrz 2013, o 12:01 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

Witajcie.
Mam problem z załączaniem biblioteki mkuart, ale nie tylko, bo przy załączaniu lcd problem jest ten sam.
Może wkleję kod main.c aby zobrazować problem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak widać z kodu, podłączona jest dioda która zmienia stan co 250ms.
Przy zakomentowanej linii inicjującej USART dioda miga, przy odkomentowanej zapala się i świecie bez przerwy.
Wniosek , ze coś jest nie tak z biblioteką mkuart.c. Tylko, że w pliku mkuart.c w funkcji USART_Init zakomentowałem wszystko.
Wygląda ona teraz tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jest to dziwne, bo wywołanie pustej funkcji powoduje zwiechę programu.

To powyższe, to oczywiście skrócona wersja programu dla zobrazowania problemu.
Jednak podobny problem jest z podłączeniem biblioteki od LCD.
Aby przedstawić cały obraz sytuacji, dodam, że wczesniej i inicjalizacja uart i lcd dzialały bez problemu. Problemy zaczeły się gdy napisałem funkcje
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

następnie zwierałem wyprowadzenie od int 1 dla którego funkcja przerwania 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.

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


Po kilku próbach wywołania tego przerwania ( zwieranie ) program przestał działać.
w pierwszej chwili sądziłem, że to procesor się uszkodził, później jednak podłączyłem diode ( katodą do portu - sterowanie niskim stanem ) przez rezystor 220R

Dioda zaczęła migać w najprostszej konfiguracji , jednak tak jak wyżej napisałem, przy próbie wywołania usart init program zaczął się wieszać.

teraz to już nie wiem gdzie tak naprawdę jest problem.
Czy to możliwe aby procesor jednak był uszkodzony ?

Programuje w eclipse kepler.
Procesor atmega 162 z 11059200 MHz

PS. Mam nadzieje, że opis problemu nie jest zbyt zagmatwany.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2013, o 13:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Zrób nowy projekt, dołącz biblioteki i zrób jakiś prosty test.
1. TOG dla diody
2. String do UARTa
3. String do LCD.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2013, o 13:53 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

listingi ktore wkleilem sa na nowym projekcie. oryginalny jest o wiele wiekszy i bardziej rozbudowany



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2013, o 18:25 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

średnik to instrukcja pusta i w tym przypadku nie ma znaczenia.
Jeżeli chodzi o sei(), to próbowałem i z i bez ale efekt taki sam.
Poza tym chyba nie powinno to mieć znaczenia, skoro funkcja init nic nie robi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2013, o 21:11 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.


Autor postu otrzymał pochwałę


Ostatnio edytowano 6 lis 2015, o 12:24 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2013, o 21:20 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

możesz mieć racje. Problemy zaczęły se właśnie jak napisałem i testowałem tę funkcje.
Podejrzewałem, że to może mieć związek, dlatego załączyłem jej listing.
Przy deklarowaniu tej zmiennej nie wziąłem pod uwagę właśnie '\0'

Dziś już tego nie sprawdzę, jutro przysiądę i dam znać.

pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 20:38 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

Xor, potwierdzam, twoje spostrzeżenie słuszne.

Jednak w dalszym ciągu mam problem z działaniem samego uart-a.
Jak wkleję kod z noty ( i lekko poprawie ) ,to działa wysyłanie dla pojedynczych znaków.
Jeżeli natomiast skompiluję kod z niebieskiej książki ( oczywiście ze zmianami rejestrów dla atmegi 162 ) to nic nie działa.

Czy tym błędem z nadpisywaniem pamięci przez zbyt mały bufor mógłbym uszkodzić procesor ?
jest to w ogóle możliwe ?
Jutro postaram się kupić nowy procek i sprawdzę.
Pozdr



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2013, o 08:07 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.



Ostatnio edytowano 6 lis 2015, o 12:24 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2013, o 18:19 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Cytuj:
Jeżeli natomiast skompiluję kod z niebieskiej książki ( oczywiście ze zmianami rejestrów dla atmegi 162 ) to nic nie działa.

Sprawdź dokładnie nazwy przerwań, bo Atmega162 ma USART0 i USART1 i nazwy 3 przerwań należy zmienić. Eclipse daje tylko ostrzeżenie i to tylko raz, więc aby ponownie to zobaczyć musisz zrobić Clean i Build.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2013, o 07:44 
Offline
Użytkownik

Dołączył(a): 02 sie 2012
Posty: 43
Lokalizacja: Jabłonna
Pomógł: 0

Panowie, ale działało i przestało po moich kombinacjach z symulowanie przerwań ( zwieranie wyprowadzenia do masy ) oraz po utworzeniu funkcji do tworzenia stringu ( być może zbieżność w czasie )
Ale pragnę Was uspokoić :) Po zakupie nowego procka program działa w starej wersji. Oczywiście bez funkcji tworzenia stringa :)
Sprawę traktuję już bardziej jako ciekawostkę.
Wszystkim zaangażowanym dziękuję za pomoc :)

Pozdrawiam



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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