ATNEL tech-forum
https://forum.atnel.pl/

Aktualizacje kodów źródłowych do książki nr 1
https://forum.atnel.pl/topic27.html
Strona 1 z 1

Autor:  mirekk36 [ 14 paź 2011, o 22:08 ]
Tytuł:  Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 1 maja 2012, o 21:42 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki.

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

Autor:  mirekk36 [ 25 sie 2012, o 11:20 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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.

Autor:  jark [ 24 lis 2013, o 01:33 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 24 lis 2013, o 12:43 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  lukanio [ 17 kwi 2014, o 21:26 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Pozdrawiam
Łukasz

Autor:  lukas_ [ 17 kwi 2014, o 23:39 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 18 kwi 2014, o 06:37 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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.

Autor:  lukanio [ 18 kwi 2014, o 07:45 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 18 kwi 2014, o 09:34 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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ć

Autor:  mpiechowicz [ 15 gru 2014, o 10:30 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 15 gru 2014, o 12:04 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  iwi [ 9 gru 2015, o 01:35 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  majster [ 9 gru 2015, o 07:15 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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.

Autor:  iwi [ 9 gru 2015, o 21:32 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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.

Autor:  majster [ 9 gru 2015, o 22:25 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  iwi [ 9 gru 2015, o 23:22 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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 ]

Autor:  iwi [ 10 gru 2015, o 21:37 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 10 gru 2015, o 22:56 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  majster [ 10 gru 2015, o 23:03 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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 :)

Autor:  Kamila_ [ 27 lut 2017, o 19:25 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Autor:  mirekk36 [ 27 lut 2017, o 21:25 ]
Tytuł:  Re: Aktualizacje kodów źródłowych do książki nr 1

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

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/