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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 cze 2025, o 05:51


    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: 266
    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.gryfsmart.pl



    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: 266
    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.gryfsmart.pl



    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: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    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