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



Teraz jest 3 lis 2024, o 13:05


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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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