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



Teraz jest 28 kwi 2024, o 14:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 15 sty 2014, o 20:44 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 5
Pomógł: 0

Witam,
Jestem absolutnym nowicjuszem i dopiero zaczynam swoją zabawę z ATmegą8 i BTM-222, więc bardzo proszę o wyrozumiałość.
Korzystam z biblioteki mkuart z płyty z drugiej książki Pana Mirka.
Mam prosty program, który zawiesza się na drugim wywołaniu uart_putc('c'); ,a konkretnie w takim miejscu tej metody:
Kod:
          // pętla oczekuje jeżeli brak miejsca w buforze cyklicznym na kolejne znaki
    while ( tmp_head == UART_TxTail ){}


Tak wygląda moja funkcja main:
Kod:
int main(void)
{
    USART_Init( __UBRR);
    uart_putc('c');
    uart_putc('c');

    // TO SIĘ JUŻ NIE WYKONA \/
    while(1)
        uart_putc('c');

}


Status 'projektu' jest taki:
Potrafię się połączyć przez putty z bluetoothem, robię to tak jak w turialu wideo (http://www.atnel.pl/bluetooth-atb-btm-222.html)
W putty nie widzę żadnych rezultatów wykonywanego kodu, nie wyrzuca mi nawet śmieci.

Czy ktoś mógłby mi podpowiedzieć w czym może być problem? Czego powinienem szukać? Stoję w miejscu od naprawdę wielu godzin. Bardzo proszę o jakąkolwiek pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 22:54 
Offline
Użytkownik
Avatar użytkownika

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

Chyba zapychsz port. Wypróbuj ten kod.

Kod:
int main(void)
{
    USART_Init( __UBRR);

    while(1)
    {
       _delay_ms(100);
        uart_putc('c');
   }

}

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 23:15 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 5
Pomógł: 0

Dzięki bardzo za odpowiedź
Niestety, dalej nic :(
Kod:
int main(void)
{
    USART_Init( __UBRR);
    uart_putc('c');
}

Jak wykonam taki kod to też nic nie dostaje w podłączonym putty.exe.

O czym może świadczyć, że kod zacina mi się na tamtej pętli While?
Czy to zapewnia, że już przynajmniej dobrze jest połączona ATmega z BTM'em? Gdzie leci ten znak 'c'? Da się to jakoś określić na tej podstawie?

Zastanawia mnie jeszcze jedna rzecz. Do ATmegi mam podłączony kwarc 8 Mega, ale nie jest w żaden sposób skonfigurowany - procesor działa na wartości domyślnej, 1 MHz. Czy to może powodować problem? Wydaje mi się, że jeżeli jest zła częstotliwość, to powinny przynajmniej lecieć śmieci, a nie nic :(.
Jeszcze raz bardzo proszę o jakieś sugestie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 23:33 
Offline
Użytkownik
Avatar użytkownika

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

Musisz ustawić tak zwane Fusy, aby procesor pracował CI z zewnętrznym kwarcem.
Poczytaj tutaj co to są fusy:
http://www.atnel.pl/mkavrcalculator.html
Jak uda Ci się ustawić zewnetrzny kwarc, to polecam artykół Mirka w jaki sposób skonfigurować RS232
http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html

Zacznij od zwykłej przejściówki RS232 na kablu, jak uzyskasz na niej komunikację to spróbuj blutka.


Autor postu otrzymał pochwałę

_________________
www.iuvo.it - Automatyka Budynkowa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 23:37 
Offline
Moderator
Avatar użytkownika

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

joni55 --> ale powiedz mi - czy nie widzisz różnicy pomiędzy tym swoim kodem?

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


a kodem który ci pokazał kolega wyżej ?

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


jeśli nie widzisz różnicy to niedobrze :( .... porównaj i postaraj się podpowiedzieć jaka jest różnica i dlaczego twój kod nie będzie działać na pewno nigdy a ten drugi ma szansę - tzn jeśli wszystkie fuski i parametry transmisji miałbyś dobrze ustawione to na pewno by działał.


Autor postu otrzymał pochwałę

_________________
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: 15 sty 2014, o 23:52 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 5
Pomógł: 0

Rzeczywiście, mój błąd. Delay sporo jednak zmienia ;).
Tak czy inaczej, drugie wywołanie pętli w dalszym ciągu zwisa na uart_putc('c');.

Potrzebuję trochę czasu, żeby dowiedzieć się o tych Fusach, więc na razie dziękuję wam bardzo za pomoc.
Dziwi mnie jednak to 'zwieszanie' i brak 'śmieci' w putty :(.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2014, o 00:05 
Offline
Moderator
Avatar użytkownika

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

joni55 napisał(a):
Potrzebuję trochę czasu, żeby dowiedzieć się o tych Fusach, więc na razie dziękuję wam bardzo za pomoc.
Dziwi mnie jednak to 'zwieszanie' i brak 'śmieci' w putty


To ja ci dobrze poradzę - na razie odłóż Bluetooth na bok, i spróbuj pouczyć się komunikacji RS232 na zwykłym kablu - poważnie. A jak już będzie wychodzić to wtedy tylko zamienisz kabel na Bluetooth i zobaczysz że tak samo będzie działać. Bo teraz tworzysz sobie w głowie dodatkowe niewiadome i miszmasz - gdy coś nie działa to masz więcej miejsc do szukania błędów.

_________________
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: 16 sty 2014, o 23:29 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 5
Pomógł: 0

Hej,
Usiadłem do tego dzisiaj na cały dzień. Wywaliłem BTM'a, a zamiast tego podpiąłem kabel z rs232.

Niestety, problem jest wciąż ten sam. Nie widzę ani jednego znaczka w putty, a program zawiesza się w pętli
Kod:
 // pętla oczekuje jeżeli brak miejsca w buforze cyklicznym na kolejne znaki
    while ( tmp_head == UART_TxTail ){}


Wiem jednak teraz, że to nie problem BTM'a, a mojej komunikacji.
Czy jest coś, co jeszcze moglibyście mi doradzić? Albo ma ktoś może już kod wypluwający w najprostszy i najkrótszy sposób cokolwiek na UART'a, który NA PEWNO działa na Atmedze 8? Pozwoliłoby mi to wyeliminować kolejne możliwe źródło problemu.
Jeszcze raz bardzo proszę o jakieś sugestie, co z tym zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2014, o 08:51 
Offline
Użytkownik

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

joni55 napisał(a):
Hej,
Usiadłem do tego dzisiaj na cały dzień. Wywaliłem BTM'a, a zamiast tego podpiąłem kabel z rs232.

Niestety, problem jest wciąż ten sam. Nie widzę ani jednego znaczka w putty, a program zawiesza się w pętli
Kod:
 // pętla oczekuje jeżeli brak miejsca w buforze cyklicznym na kolejne znaki
    while ( tmp_head == UART_TxTail ){}


Wiem jednak teraz, że to nie problem BTM'a, a mojej komunikacji.
Czy jest coś, co jeszcze moglibyście mi doradzić? Albo ma ktoś może już kod wypluwający w najprostszy i najkrótszy sposób cokolwiek na UART'a, który NA PEWNO działa na Atmedze 8? Pozwoliłoby mi to wyeliminować kolejne możliwe źródło problemu.
Jeszcze raz bardzo proszę o jakieś sugestie, co z tym zrobić.

Przecież działający kod masz na płycie dołączonej do książki.
Co prawda nie jest na m8... ale to już bardzo krótka droga ;-)

------------------------ [ Dodano po: 16 minutach ]

Skoro nie chce Ci działać to może najpierw nawiąż najprostsze połączenie przez RS
żeby to zrobić musisz:
1. zainicjować UART'a (to chyba masz) funkcja
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

2. wysyłać jakieś znaki do terminala. żeby to zrobić bierzesz w łapki note do m8 i tam w rozdziale USART (str. 129 i następne) szukasz podrozdziału "Data Transmission
– The USART Transmitter" (str. 136)
A tam masz przykład w ASM i w C. Ten w C jest taki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zapewniam Cię, że ten przykład dla m8 działa.
Ale... w terminalu i w m8 musisz mieć tak samo ustawione parametry transmisji czyli:
1. format ramki (zwykle 8n1)
2. prędkość transmisji.
No i jeszcze jedna drobnostka... sprawna przejściówka poprawnie podłączona do procka i do komputera. A w komputerze poprawnie wybrany port.


Autor postu otrzymał pochwałę

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2014, o 10:11 
Offline
Moderator
Avatar użytkownika

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

ale przecież nawet w książce - nie TYLKO jest pokazane jak zacząć sobie testować RS232 na przykładach wprost z noty PDF bo to podstawa ale także opisane jak, dlaczego i co po kolei

na prawdę trzeba książkę troszkę bardziej poczytać ...

_________________
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: 18 sty 2014, o 20:23 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 5
Pomógł: 0

Wszystko działa pięknie.
Dziękuję wam bardzo za pomoc!
Głównie miałem problemy z nieprawidłowym kodem.



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 0 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