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 w 2025? 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 25 kwi 2025, o 15:28


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 51 ]  Przejdź na stronę Poprzednia strona  1, 2
    Autor Wiadomość
    PostNapisane: 2 gru 2013, o 20:38 
    Offline
    Moderator
    Avatar użytkownika

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

    No kolega WSZYSTKO od samego początku robi źle :( i aż się dziwię, że piszesz w wątku gdzie masz pokazane co i jak ... tymczasem wygląda tak jakbyś w ogóle tego nie przeczytał.

    Ale po kolei - źle ustawione fusebity - no bo piszesz że ustawiasz niby kwarc 8MHz ... no i OK ale jednocześnie masz pozostawiony CKDIV8, który dzieli tę częstotliwość przez 8 - więc jak myślisz - jaką częstotliwością masz taktowany procek ?

    Druga sprawa skąd się bierze u was panowie to stosowanie

    #define FOSC ???

    masz na dole artykułu wyraźnie pokazane:

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


    dlaczego z tego nie korzystasz ??? F_CPU

    ------------------------ [ Dodano po: 1 minucie ]

    poza tym taka inicjalizacja pinów:

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


    to po prostu masakra :( pomijam już brak formatowania kodu ale proponują zacząć używać przesunięć bitowych

    ------------------------ [ Dodano po: 2 minutach ]

    to takie luźne uwagi - ale wystarczy że przemyślisz pkt.1 o którym wspomniałem i już zacznie ci śmigać RS232 ;)

    _________________
    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: 3 gru 2013, o 10:10 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    ok, działa już chociaż mam pytanie. Czemu przy 1Mhz i 8Mhz czujnik ciśnienia daje mi inne wyniki?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 gru 2013, o 10:13 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    Może zależności czasowe muszą być spełnione.

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 16:32 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Dobrze, to zacznijmy od poczatku:

    Atmaga32-16PU, oscylator wewnętrzny 1Mhz,

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



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


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

    Terminal nic nie reaguje, tzn nic nie wyświetla. Gdzie mój błąd? Biblioteka jest zła?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 17:25 
    Offline
    Moderator
    Avatar użytkownika

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

    Picowaty91 napisał(a):
            // Set frame format: 8 bit, no parity, 1 stop bit,  
            UCSRC = (1<<USBS)|(3<<UCSZ0);


    a kolega jak używa jakiejś biblioteki to chociaż wie o co w niej chodzi ? czy tylko tak na chybił trafił - może zadziała a może nie zadziała ?

    przy takiej inicjalizacji wcale nie dziwne że nie działa ...

    1. zajrzyj do noty PDF
    2. postaraj się zrozumieć przykład z tej noty bo go masz tam
    3. jak czegoś nie rozumiesz z noty to dopytaj

    wtedy jak zrozumiesz to już napiszesz prawidłową inicjalizację ok?

    _________________
    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 gru 2013, o 17:41 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Ano właśnie, że starałem się robić zgodnie z notą katalogową.

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


    Dalej w książce Pana Klimasza o rs232 że UCSZ odpowiada za długość znaku. Jeśli w przykładzie jest jak byk że 8 data i 3<<UCSZ0 wiec przyjąłem tak samo.

    Cytuj:
    Bit 7 – URSEL: Register Select
    Ustawienie tego bitu powoduje wybranie rodzaju dostepu do rejestrów UCSRC lub UBRRH.
    Jesli zapisany jako jeden – czytanie UCSRC. Jesli zapisujemy do UCSRC bit URSEL musi byc
    ustawiony na jeden.
    tego szczerze mówiąc nie rozumiem, więc nie ustawiałem.. może tu jest mój błąd?

    Cytuj:
    UCSBS: Stop Bit Select
    Za pomoca tego bitu wybiera sie ilosc bitów stopu: 1 bit (USBS=0), 2 bity (USBS=1).
    Potrzebne jest to przy nadawaniu. Odbiornik ignoruje te ustawienia.
    - w programie o który wcześniej pytałem (na atmedze328) miałem 1 bit stopu i chodziło, więc tu ustawiłem podobnie.

    Przepraszam za swoją ignorancję - nadal nie widzę gdzie popołniłem błąd mimo Twoich rad. Możesz dać mi jeszcze jakąś podpowiedź?

    ----Edit1
    Sorry już widzę (jeśli o to chodzi- gadam, że chce 1 bit stopu a ustawiam 2 tak?)

    ----Edit2
    Kurde, nadal nie działa.. Proszę wytłumacz mi o co chodzi?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 18:21 
    Offline
    Moderator
    Avatar użytkownika

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

    Bo w tej jednej linijce popełniłeś nie JEDEN błąd panie .... i sam widzisz jak zaczynasz czytać to zaczynasz dochodzić do sedna ... już wiesz że ustawiałeś 2 bity stopu zamiast jednego ...

    a co do książki i noty PDF ... to powiedz mi ile razy można człowiekowi początkującemu przypominać - że PODSTAWA PODSTAW to nota PDF ....

    panie kochany no proszę ... skoro już ją masz w łapkach to powiedz mi po jaki gwint ? albo inaczej co powoduje w twojej głowie- że zamiast zrobić tak jak masz w nocie ! jeśli nie rozumiesz nawet jakiegoś bitu czy ustawienia - to ty sobie wymyślasz - na podstawie czego ? no właśnie czego ? .... że ty zrobisz z jakimś tam bitem którego nie rozumiesz INACZEJ ?

    no tak to daleko nie zajedziesz :(

    -------------------------------------------

    kolejna podpowiedź - bo już jesteś blisko, skoro wiesz jak zmienić ilość bitów stopu, skoro wiesz jak zmienić ilość bitów w ramce - to weź że pan resztę też zrób zgodnie z notą PDF i nie dodawaj własnych udziwnień :( i sprawdź czy działa

    i ZAPAMIĘTAJ NA CAŁE ŻYCIE programisty ;) i elektronika - jeśli ci coś nie wychodzi wg książki, wg kursu czy wg poradnika z kosmosu - to ZAWSZE SIĘGNIJ DO NOTY PDF I ZRÓB WG NOTY - to MUSI WYJŚĆ .... .

    i teraz pokaż kod inicjalizacji po poprawkach to polecimy dalej ....

    sorry że ja nie pokazuję wprost i nie daję gotowca tylko zmuszam do myślenia. Ale niestety podanie gotowca zwykle skutkuje wygenerowaniem setek kolejnych pytań a w efekcie końcowym nawet chęcią abym napisał za kogoś gotowy cały program.

    Po co ? ... jak się zrozumie o co chodzi to się później nie popełnia błędów

    i ja na twoim miejscu to gdybym nie rozumiał czegoś z noty to bym o to dopytywał żeby zrozumieć - zamiast pytać gdzie popełniłem błędy w całym programie ? którego widać że tak troszkę przepisujesz skądś albo sklejasz z różnych niezrozumiałych dla siebie kawałkó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: 4 gru 2013, o 18:45 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Zgadzam się Panie Mirku co do gotowców.
    Będę posłusznie wykonywał polecenia i mam nadzieję się czegoś nauczyć :)
    zmieniłem program:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


    Jednak wynik na terminalu tak jak poprzednio.
    Kiedy stosuje się 1 a kiedy 2 bity stopu?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 19:14 
    Offline
    Moderator
    Avatar użytkownika

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

    Picowaty91 napisał(a):
    Kiedy stosuje się 1 a kiedy 2 bity stopu?


    kiedy ? .... :) wtedy kiedy tego chcesz nikt ci tu niczego nie narzuca. Ważne żeby pamiętać że jeśli użyjesz 2 bity stopu w procku to ustawić 2 bity w terminalu i analogicznie z jednym bitem. A skoro ustawiasz bit USBS to znaczy że nadal włączasz 2 bity stopu przecież

    UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

    więc albo w terminalu ustaw pan 2 bity stopu albo tak jak już wcześniej wpadłeś na ten pomysł w ogóle nie ustawiaj tego bitu i będziesz miał 1 bit stopu

    albo oglądaj moje poradniki gdzie wspominam o taki ala pseudo tricku ;) że w ogóle tą linię zakomentuj a uzyskasz prawidłowo ramkę

    8,n,1

    ;)

    _________________
    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 gru 2013, o 19:23 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Nie napisałem.. sprawdziłem dla 1 bitu stopu i dla dwóch, zmieniając to również w terminalu... niestety ten nie odpowiada



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 19:30 
    Offline
    Moderator
    Avatar użytkownika

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

    poczekaj - bo może ja czegoś nie wiem - masz ty Bluebooka i najprostsze z niego przykłady czy nie ?

    _________________
    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 gru 2013, o 19:37 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Niestety nie wiem co to Bluebook. Wielki to grzech dla poczatkującego elektronika?

    ----Edit
    Sprawdziłem topic4630.html, niestety nie posiadam.
    Ale już wypożyczyłem, do odebrania w czwartek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 20:48 
    Offline
    Moderator
    Avatar użytkownika

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

    ok to może inaczej zanim wypożyczysz

    .... masz w nocie PDF zarówno inicjalizację - jak i nadawanie pojedynczego znaku

    z inicjalizacją już sobie poradziłeś chyba ;) ... więc ok

    a teraz zrezygnuj z tych wszystkich prinf'ów i przesyłania przez strumień bo widać że tu kompletnie na razie nie masz pojęcia a poza tym to w zasadzie niepotrzebny balast na procku

    więc napisz sobie DOKŁADNIE tak jak w nocie prostą funkcję do nadawania pojedynczego znaku i w pętli nieskończonej wysyłaj go powiedzmy co sekundę do terminala. Oczywiście przed pętlą główną zainicjalizuj już poprawnie UART

    pamiętaj o właściwym ustawieniu fusebitów

    TO JEST NAJPROSTSZY TEST - który ZAWSZE MUSI działać i wspominam o tym w bluebooku ;)

    a wszystko zrobisz na podstawie TYLKO i wyłącznie noty PDF

    wtedy będziesz miał pewność że strona programowa MUSI działać a jeśli nie będzie komunikacji to znaczy że masz coś nieteges po stronie sprzętowej

    wtedy

    1. sprawdzasz fusebity
    2. sprawdzasz kable/przejściówkę bo może ją masz spapraną
    3. sprawdzasz ustawienia terminala

    nie ma że boli musi działać

    a jak wpadnie ci w łapki Bluebook i poczytasz to wtedy ci się już to w ogóle ładnie w całość ułoży

    _________________
    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 gru 2013, o 21:18 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Sprawdzam po kolei:
    1. Kod jak w nocie:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


    2. Korzystam z http://sklep.modulowo.pl/pl/p/MOD-05.Z- ... towany/121 . Działa prawidłowo, sprawdzałem przed sekundą na kodzie o który pytałem z 10 postów wcześniej i atmedze 328 i śmiga, podłączone tak jak do atmegi328 do pinów Rx i Tx na krzyż przez rezystory 1k (w projekcie z atemga328 działa)

    3. Obrazek
    czyli: Hfuse:99 Lfuse:E1 - 1Mhz internal

    4.Obrazek
    na screenie wkradł się błąd, sprawdząłem różne Baudy, na 2400 nie działa również) pozatym gdyby był tu źle baud to powinien chociaż krzaki pokazywać prawda?

    5.Przesyłam nawet zdjęcie płytki jeśli to coś pomoże
    Obrazek

    Wydaje mi się, że wszystko sprawdzone, jednak nadal nic nie widać na termianalu. Możliwe żeby to było coś źle z Amtegą?



    Ostatnio edytowano 4 gru 2013, o 21:35 przez Picowaty91, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 gru 2013, o 21:31 
    Offline
    Moderator
    Avatar użytkownika

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

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


    to nie ma sensu - ale ok jak będziesz miał bluebooka to zobaczysz że przesunięcia nie są trudne - napisz tak jeśli już piszesz tę linię

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


    ------------------------ [ Dodano po: 2 minutach ]

    druga sprawa - widać że nie znasz podstawowych typów :( .... więc ok w oczekiwaniu na książkę proszę - to nie ma sensu:

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


    przecież przy kompilacji tego dostajesz jak nie błąd to na pewno warninga - czyli wynika z tego że chyba o zgrozo piszesz kod w Atmel Studio zgadza się ? jeśli tak to weź to wychrzań na razie i zrób to w Eclipse - a zmienną zrób tak:

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


    bo to OGROMNA różnica albo w ogól nie rób tej zmiennej tylko napisz:

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


    ------------------------ [ Dodano po: 3 minutach ]

    Picowaty91 napisał(a):
    to powinien chociaż krzaki pokazywać prawda?


    nie prawda - czasem będą a czasem nie

    poza tym co za problem sprawdzić nawet diodą LED do pinu Tx ?

    _________________
    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 gru 2013, o 21:49 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Usunąłem (0<<USBS), usunąłem zmienną i wstawiłem USART_Transmit( 'a' );
    Podłączyłem diode LED - anoda do pinu Tx Atemgi, katoda to masy - dioda świeci światłem ciągłym ;)
    Terminal nadal nic nie pokazuje :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 gru 2013, o 00:59 
    Offline
    Moderator
    Avatar użytkownika

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

    standardowo na pinie TX jest stan wysoki gdy działa RS232 więc to normalna sytuacja

    ale to że dioda nie mruga w trakcie nadawania ? to może oznaczać tylko że albo nie do tego pinu podłączyłeś diodę albo że program się nie wgrał albo w najgorszym wypadku że pin uszkodzony

    ale ok PRZEDE wszystkim pamiętaj że zawsze jak piszesz na forum a wprowadzasz poprawki w kodzie nawet najdrobniejsze - to wklejaj to co zrobiłeś jeśli chodzi o kod - zamiast opisywać - o ile chcesz żeby łatwiej było pomóc - tym bardziej że robisz mega prostą i podstawową rzecz


    --------------
    o matko! ;) i jeszcze jedno bo teraz zobaczyłem dopiero zdjęcie stykówki ;)

    panie kolego - tym bardziej zapraszam do obejrzenia tego poradnika :

    http://mirekk36.blogspot.com/2012/12/av ... aczac.html

    bo na stykówce jest jakby masakra jakaś - to wprawdzie nie wpływa na to że nie działa ci rs232 ale no kondensator podłączony do AREF na takiej LINIE jak z dżungli ? - sorry ale to już lepiej byłoby w ogóle tam kondka nie podłączać i żeby pin wisiał w powietrzu bo teraz to robisz sobie antenę SETI do nasłuchu sygnałów i zakłóceń z kosmosu :(

    weź ty może przede wszystkim na własny użytek rozrysuj dokładnie ten schemat połączeń - bo czy czasem tu u ciebie nie kryją się kolejne ZONK'i ? :(

    _________________
    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: 5 gru 2013, o 16:24 
    Offline
    Nowy

    Dołączył(a): 29 lis 2013
    Posty: 11
    Pomógł: 0

    Sprawdziłem, podłączone do prawidłowego pinu.
    zmieniłem Atmegę nadal nic..
    Czyli nie wgrał się program tak?
    Programator i atmege podłączyłem wg tego schematu:Obrazek
    podpinając odpowiednio do pinów z Atmegi32 . Czy to poprawny schemat?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 gru 2013, o 21:43 
    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

    Picowaty91 napisał(a):
    Czyli nie wgrał się program tak?

    Proponuje "cofnąć się w rozwoju" i napisać program migający LED w oparciu o funkcje z nagłówka <util\delay.h> i wtedy powrócić do tematu. Od tego należy zaczynać uruchamianie każdego systemu z procesorem.
    Picowaty91 napisał(a):
    Czy to poprawny schemat?

    Tak.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 cze 2014, o 13:12 
    Offline
    Nowy

    Dołączył(a): 28 cze 2014
    Posty: 1
    Pomógł: 0

    Proszę wybaczyć, że odkopuję ten wątek - problematyka jest jednak identyczna.

    Pozwólcie, że się pokrótce przedstawię - Szymon, student Informatyki na PolSl, w trakcie pisania pracy inżynierskiej. Jej problematyka właśnie przyprowadziła mnie na Forum.

    Chcę wykonać komputer pokładowy do Subaru - w tym celu muszę skomunikować się z komputerem silnika - ów komputer gada sobie na następujących parametrach: 1953 baud, 8 bitów danych, 1 bit stopu Even parity. I to właśnie ten nietypowy baud robi problem.

    Do wykonania zadania zanabyłem ATmegę 162 (dwa UART'y - jeden do auta, drugi do nadajnika Bluetooth, którym będę nadawał dane do appki na Androida). Nim trafiłem na post na blogu pana Kardasia poruszający problematykę wyznaczania częstotliwości taktowania / wyliczania UBRR, wyliczyłem z noty katalogowej, a także z pewnej strony internetowej (obecnie, niestety, niedziałającej), iż zerowy błąd uzyskam dla częstotliwości 16MHz i UBRR = 511.

    Kupiłem więc kwarc 16MHz i (z pewnymi przygodami) spiąłem go z ATmegą. Fusebity ustawiłem wspaniałym mkAvrCalculatorem - wyłączyłem CKDIV8, i wybrałem External crystal resonator jako >8Mhz. Do tej pory wszystko działało poprawnie - uC ładnie się wykrywa i programuje. Mój programator to USBasp, jeśli ma to znaczenie - jeden projekt już z nim wykonałem, więc jest względnie OK.

    Następnie ściągnąłem poprawioną wersję biblioteki pana Fleury'ego do komunikacji po UART:
    http://beaststwo.org/avr-uart/
    Tutaj, po kilku perturbacjach, znów udało mi się uzyskać sukces -poprzez CP210x (konwerter USB-RS232), dla standardowej komunikacji z baud 9600, 8 bitów danych, 1 bit stopu, none parity wysyłałem (z _delay_ms(5000)) z uC i odbierałem na PC w Putty literkę "a". So far, so good.

    EDIT: Tutaj dodam, bo to ważne - F_CPU ustawiam globalnie, w Ustawieniach Projektu w ATmel Studio, na 16000000.

    Tutaj zaczęły się schody.
    Za wszystkie diabły nie dałem rady zmusić tego zestawu do rozmowy na baud = 1953. Potępując zgodnie z instrukcją biblioteki, otrzymywałem na terminalu zamiast "a" tylko krzaczki (na dodatek, choć mogę się mylić, odbierałem dwa "krzaki" co 5 sekund, nie jeden).

    Wykonałem więc "back to basics" - wziąłem kod z dokumentacji mojej 162 (a konkretnie z jednej ze stron, ale jest identyczny):
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Niestety, "na zachodzie bez zmian", nadal krzaki. Wtedy natrafiłem na post pana Kardasia, dokonałem ręcznej kalkulacji UBRR ze wzoru:
    UBRR = ( FOSC + BAUD * 8UL ) / (16UL * BAUD) -1
    Dla FOSC = 16000000 i BAUD = 1953. Wynik mnie zaskoczył:
    UBRR = 511,5327700973
    Czyli... tak bardzo ni w PiS, ni w PO - ani to 511, ani 512. Oczywiście wartość 512 w kodzie również sprawdziłem - i oczywiście nie działa. Krzaki. Błąd musi być w obu przypadkach zbyt wielki.

    Drodzy moi - cóż czynić w tej sytuacji? Mnie przychodzi do głowy jedynie (jeśli to faktycznie kwestia zbyt wielkiego błędu transmisji) zmiana kwarcu - ale na jaki?
    Nie wiem, jak przekształcić ten wzór, aby dobrać najbardziej idealny, istniejący na rynku kwarc, i wartość UBRR, które pozwolą mi na tym dziwnym baudzie 1953 gadać.
    Czy mogę prosić o wskazówki?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 cze 2014, o 18:53 
    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

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

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

    i sprawdź działanie przy prędkości 9600 a potem 1953. Mi bardziej odpowiada terminal Bray'a, bo można zmieniać prędkość bez zamykania programu czy rozłączania portu. Nie szukaj innego kwarcu. Jak ustawisz w terminalu baud na custom w zakresie 1853 -2053 też powinno działać (aby zmienić custom w trakcie działania należy po modyfikacji wartości na chwilę zmienić baudrate z custom na inną). A jak chcesz upewnić się co do taktowania mikrokontrolera to dodaj sobie do kodu zmianę stanu dowolnego wyjścia i podepnij LED.

    _________________
    Dragonus Cracovus: Biomagia



    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: 51 ]  Przejdź na stronę Poprzednia strona  1, 2

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO