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 3 kwi 2025, o 17:55


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
    Autor Wiadomość
    PostNapisane: 14 paź 2011, o 22:08 
    Offline
    Moderator
    Avatar użytkownika

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

    W związku ze sporą ilością nadesłanych zapytań o jedno miejsce z którego można pobrać aktualizacje kodów programów dotyczących książki "Mikrokontrolery AVR Język C Podstawy programowania" postanowiliśmy w tym wątku (przyklejonym temacie) zgrupować wszystko co można pobrać, co ukazało się od pierwszego wydania w/w książki:

    spis treści wraz z obszernymi fragmentami książki można pobrać LINK - kliknij tutaj

    erratę do wydania pierwszego można pobrać LINK - kliknij tutaj

    1. aktualizacje do lekcji znajdujących się na płycie DVD dołączonej do książki:

    03_Multi_LED - drobne poprawki kodu
    08_TWI - dodano funkcję void i2cSetBitrate(uint16_t bitrateKHz)
    09_SPI - drobne poprawki kodu

    POBIERZ

    2. aktualizacje dla biblioteki wyświetlacza LCD - dotyczy wszystkich wydań książki. W bibliotece poprawiono tylko funkcję inicjalizacji wyświetlacza LCD w związku z problemami jego inicjalizacji gdy mikrokontroler był taktowany częstotliwością poniżej 8MHz. W obecnej wersji biblioteka zachowuje się poprawnie przy każdej wartości taktowania

    POBIERZ

    _________________
    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: 1 maja 2012, o 21:42 
    Offline
    Moderator
    Avatar użytkownika

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

    3. Dodatkowo na DVD w lekcji: 17_SuperDebounce w kodzie inicjalizacji Timera2 - jest mały błąd - który dostrzegł jeden z czytelników - proszę zatem go poprawić. Wprawdzie nie powoduje on że sama funkcja nie działa - ale występuje typowy błąd o którym mówię w innych miejscach książki, oryginalnie kod na DVD inicjalizacji Timera2 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 ma być tak:

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


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

    przy okazji pragnę poinformować, że prawidłowy kod funkcji SuperDebounce znajduje się na płycie DVD w ramach lekcji:

    17_SuperDebounce

    natomiast w lekcji kolejnej:

    19_ProjektWielozadaniowy

    kod funkcji SuperDebounce jest pozbawiony WAŻNEGO (dodatkowego parametru) jaki pojawił się w lekcji nr.17. Dlatego proszę to wziąć pod uwagę podczas ćwiczeń i podmienić sobie kod tej funkcji w lekcji nr.19 na kod prawidłowy z lekcji nr.17.

    Cały poprawiony kod głównej funkcji programu main.c z lekcji nr.19 można pobrać także TUTAJ - LINK

    _________________
    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: 25 sie 2012, o 11:20 
    Offline
    Moderator
    Avatar użytkownika

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

    rozdział o ADC - błędne pomiary z kilku kanałów naraz:

    W książce jest:

    Cytuj:
    // DEFINICJA funkcji, która dokonuje pomiaru na wybranym kanale/wejściu
    uint16_t pomiar(uint8_t kanal) {

    ADMUX |= (ADMUX & 0xF8) | kanal;

    ADCSR |= (1<<ADSC);

    while( ADCSR & (1<<ADSC) );

    return ADCW;
    }


    a powinno być:

    Cytuj:
    // DEFINICJA funkcji, która dokonuje pomiaru na wybranym kanale/wejściu
    uint16_t pomiar(uint8_t kanal) {

    ADMUX = (ADMUX & 0xF8) | kanal;

    ADCSR |= (1<<ADSC);

    while( ADCSR & (1<<ADSC) );

    return ADCW;
    }


    Z tego powodu, jeśli rozważymy błędne działanie w tym przypadku operatora |= , szybko dojdziemy dlaczego tak się dzieje.

    _________________
    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: 24 lis 2013, o 01:33 
    Offline
    Użytkownik

    Dołączył(a): 10 paź 2012
    Posty: 123
    Pomógł: 10

    Witam.
    Albo mam pomroczność jasną (w końcu już dość późno;) ) albo w źródłach do książki I lekcja ADC jest błąd:
    sprawdzenie zakończenia konwersji jest:

    while( !(ADCSRA & (1<<ADSC)) );

    powinno być:

    while( (ADCSRA & (1<<ADSC)) );

    W książce jest OK.

    Pozdrawiam
    Jarek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lis 2013, o 12:43 
    Offline
    Moderator
    Avatar użytkownika

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

    jark napisał(a):
    powinno być:

    while( (ADCSRA & (1<<ADSC)) );


    zgadza się - w starszej wersji hmm najstarszej wersji książki mógł tam pozostać ten zagubiony wykrzyknik niepotrzebnie

    _________________
    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: 17 kwi 2014, o 21:26 
    Offline
    Użytkownik

    Dołączył(a): 21 sty 2014
    Posty: 75
    Pomógł: 0

    Witam, mam pytanie jak mogę otrzymać aktualizację biblioteki LCD obsługującej LCD po I2C?

    Pozdrawiam
    Łukasz



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 kwi 2014, o 23:39 
    Offline
    Użytkownik

    Dołączył(a): 16 mar 2013
    Posty: 157
    Pomógł: 6

    A tutaj kolega patrzył: http://atnel.pl/uaktualnienia-programow-do-dvd.html ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2014, o 06:37 
    Offline
    Moderator
    Avatar użytkownika

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

    lukanio napisał(a):
    Witam, mam pytanie jak mogę otrzymać aktualizację biblioteki LCD obsługującej LCD po I2C?


    Ta wersja biblioteki jest na płycie DVD dołączonej do nowego wydania niebieskiej książki, tej w twardej oprawie.

    _________________
    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 kwi 2014, o 07:45 
    Offline
    Użytkownik

    Dołączył(a): 21 sty 2014
    Posty: 75
    Pomógł: 0

    No tak, wiem. Ja mam niebieską ksiazkę kupioną w 2011 no i zielona ze stycznia 2014 no i nie mam najnowszych bibliotek. Jest jakas szansa na aktualizacje?

    Wysłane z mojego GT-N8000 przy użyciu Tapatalka



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2014, o 09:34 
    Offline
    Moderator
    Avatar użytkownika

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

    lukanio napisał(a):
    Jest jakas szansa na aktualizacje?


    Jasne - napisz maila do Pani Anety aneta@atnel.pl , jeśli pamiętasz podaj nr zamówienia z książką itp ... i będzie można zakupić zaktualizowaną płytę DVD od nowszego wydania książki (tej w twardej oprawie) Jakiś czas temu była taka płyta aktualizacyjna oficjalnie w naszym sklepie w sprzedaży ... ale jeszcze można na maila to załatwić

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

    Dołączył(a): 15 gru 2014
    Posty: 2
    Pomógł: 0

    Mirek gubię się w tych łatkach i poprawkach co do czego gdzie wgrać, czy możesz zrobić jakąś paczkę z najnowszymi poprawionynmi, uaktualnionymi bilbiotekami do książki, wrzucić do tego wersje i wtedy by już było wiadomo że aktualna wersja do książki zielonej to np 1.0.3 a do niebieskeij 1.0.5, ściągam podnieniam i działa?
    Co ty na to?
    Pozrawiam

    Marcin



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 gru 2014, o 12:04 
    Offline
    Moderator
    Avatar użytkownika

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

    Jak się gubisz w poprawkach to dopytaj - chętnie podpowiem

    _________________
    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: 9 gru 2015, o 01:35 
    Offline
    Użytkownik

    Dołączył(a): 05 lis 2013
    Posty: 353
    Lokalizacja: Kraków
    Pomógł: 6

    Witaj MIrku.
    Zaimplementowałem Twoją funkcję z 19 lekcji Bluebooka Super Debounce. Niby działa ale nie do konca tzn za pierwszym razem nic nie robi, dopiero za drugim razem wykonuje poprawnie. Pociągnąłem najnowszą funkcję z erraty ze strony www. Nie będę jej załączał bo jest identyczna i bez przeróbek.

    Po wyswietleniu Timer1 na LCD wychodzi ze za pierwszym razem odlicza Timer od mniej więcej 250 do zera a przy drugim naciśnięciu tego samego klawisza leci od tych samych 250 do zera ale potem nie zatrzymuje sie tylko leci dalej od 1000 do zera. Jak się naciśnie klawisze po kolei to wtedy nic nie robi.
    Dluższe naciśnięcie klawisza działa poprawnie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2015, o 07:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Pokaż jak masz funkcje debounce we while bo coś mi się wydaje że przed ostatnia zmienna u ciebie to 0 albo wszędzie masz k1 lub inny port klawiszy ustawiony. A może fusebit JTAG włączony ?

    Namazane ze smarta.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2015, o 21:32 
    Offline
    Użytkownik

    Dołączył(a): 05 lis 2013
    Posty: 353
    Lokalizacja: Kraków
    Pomógł: 6

    Wszystko co dotyczy tej funkcji wytgląda tak
    Na początku przed int main Timer1 jako uint16_t
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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

    uint8_t k1=0, k2=0, k3=0, k4=0, k5=0; // zmienne pomocnicze do przechowywania stanu klawiszy

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


    Różnica jest taka że w 17 ćwiczeniu po nacisnięciu klawisza zapala się dioda a po następnym gaśnie - u mnie po pierwszym nic się nie dzieje (poza startem Timera a za drugim razem dioda tylko mrugnie ułamek sekundy. potem nastepne nacisniecie nic nie robi i następne znowu mignięcie diody.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2015, o 22:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    hmm wygląda ok nie widzę nic dziwnego w kodzie ... a kopiowałeś pliki z DVD i odpalałeś ? bo widząc fragment kodu Ciężko pomóc a pliki na DVD na 100% działają ...
    jedyne co dla testu zamiast 20 30 40 dałbym 200 300 400

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 gru 2015, o 23:22 
    Offline
    Użytkownik

    Dołączył(a): 05 lis 2013
    Posty: 353
    Lokalizacja: Kraków
    Pomógł: 6

    tak jak pisałem - kod w lekcji 17 dziala idealnie.
    tutaj też nie widzę żadnych błędów - jedyne co jest zmienione to piny oraz czasy prescalera i CTC
    pełny kod main wyglada tak - sorki ze na razie funkcja przycisków nie jest uporządkowana, ale na razie nie działa jak należy więc nie wyrzucam jej do osobnych plików.

    [ posłuchaj panie kolego - bo już nie pierwszy raz ci się to zdarza, więc moja prośba po raz ostatni. Publikuj na forum własny kod - ale kody bibliotek z książek Atnel (chodzi mi tu o biblioteki - a kod samej funkcji Superdebounce też się do tego zalicza) - proszę pomijać. Każdy forumowicz posiada BB. Dlatego usunąłem cały kod - jak chcesz to wklej go jeszcze raz ale poprawnie - mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 gru 2015, o 21:37 
    Offline
    Użytkownik

    Dołączył(a): 05 lis 2013
    Posty: 353
    Lokalizacja: Kraków
    Pomógł: 6

    OK. przepraszam za zamieszczenie kodu, ale akurat ta funkcja jest dostępna w całości na Twojej stronie.
    Co do kodu
    Na zasadzie eliminacji znalazłęm miejsce w którym pojawia się błąd.

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

    ja mam inny prescaler i dlatego u mnie działa przy ustawieniu Timer1 na od 1 do 4 - przy 5 już trzeba 2x naciskać żeby wywołać zaświecenie diody



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 gru 2015, o 22:56 
    Offline
    Moderator
    Avatar użytkownika

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

    iwi napisał(a):
    ja mam inny prescaler i dlatego u mnie działa przy ustawieniu Timer1 na od 1 do 4 - przy 5 już trzeba 2x naciskać żeby wywołać zaświecenie diody


    To gdybyś jeszcze do szczęścia przeczytał książkę i dokładnie na temat tej funkcji to byś zobaczył, że to nie jest żaden błąd tylko piszę wręcz, że te parametry dobiera się wg potrzeb i zwracam nawet uwagę kiedy, co od tego zależy itp itd

    _________________
    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: 10 gru 2015, o 23:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    mirekk36 napisał(a):
    iwi napisał(a):
    ja mam inny prescaler i dlatego u mnie działa przy ustawieniu Timer1 na od 1 do 4 - przy 5 już trzeba 2x naciskać żeby wywołać zaświecenie diody


    To gdybyś jeszcze do szczęścia przeczytał książkę i dokładnie na temat tej funkcji to byś zobaczył, że to nie jest żaden błąd tylko piszę wręcz, że te parametry dobiera się wg potrzeb i zwracam nawet uwagę kiedy, co od tego zależy itp itd



    Dlatego też zaproponowałem:

    majster napisał(a):
    jedyne co dla testu zamiast 20 30 40 dałbym 200 300 400


    :) ale kolega który ma problem nie czyta uważnie postów :)

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2017, o 19:25 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 24 wrz 2015
    Posty: 6
    Pomógł: 0

    Witam, drobny błąd jest na stronie 102 w tabeli prawdy dla sumy logicznej. Zamiast '1 1' jest '1 0'. Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lut 2017, o 21:25 
    Offline
    Moderator
    Avatar użytkownika

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

    Kamila_ napisał(a):
    Witam, drobny błąd jest na stronie 102 w tabeli prawdy dla sumy logicznej. Zamiast '1 1' jest '1 0'. Pozdrawiam.

    To nie jest drobny błąd ;) to jest TRAGICZNY błąd - za który już troszkę przepraszałem bo od dawna o nim wiadomo. Wyjaśniałem nawet jak powstał - czyli, że do ostatniego dodruku grafik miał poprawić kilka rysunków w tym ten z tabelami prawdy - no i niestety - grafik kompletnie nie znający się na elektronice przerobił to na tablicę "nieprawdy" i niestety tak poszło do druku - na szczęście - błąd rzuca się każdemu w oczy i szybko widać - że jest inaczej

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

    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