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



Teraz jest 28 kwi 2024, o 09:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 22 paź 2013, o 22:59 
Offline
Nowy

Dołączył(a): 19 paź 2013
Posty: 4
Pomógł: 0

Witam,
Próbując uruchomić projekt 10_1Wire dostępny na płycie do książki Pana Mirka spotkałem się z problemem braku wykrycia czujnika (robiłem pętle wyświetlającą na LCD po funkcji search_sensors()).

Program uruchamiam przy użyciu zestawu uruchomieniowego ZL2AVR.

Oprócz zmian pinów tak jak było w zaleceniach (przerzuciłem wyświetlacz na PORTD, czujnik podłączam pod pin PB1), poprawki są widoczne tutaj:

Kod:
TCCR0A |= (1<<WGM01);            /* tryb CTC */
TCCR0B |= (1<<CS02)|(1<<CS00);      /* preskaler = 1024 */
OCR0A = 107;                     /* dodatkowy podział przez 108 (rej. przepełnienia) */
TIMSK0 |= (1<<OCIE0A);            /* zezwolenie na przerwanie CompareMatch */


Kod:
ISR(TIMER0_COMPA_vect)
{
   static uint8_t cnt=0;   /* statyczna zmienna cnt do odliczania setnych ms */

   if(++cnt>99) {   /* gdy licznik ms > 99 (minęła 1 sekunda) */
      s1_flag=1;   /* ustaw flagę tyknięcia sekundy */
      sekundy++;   /* zwiększ licznik sekund */
      if(sekundy>59) sekundy=0; /* jeśli ilość sekund > 59 - wyzeruj */
      cnt=0;   /* wyzeru licznik setnych ms */
   }
}


Domyślnie projekt mam ustawiony na 8 MHz, ale próbowałem też na 11,0592 MHz.
Myślę że nawet jeśli źle sprawdziłem w nocie obsługę Timera, to wykrywanie czujnika i tak powinno działać, przepraszam jeśli się mylę.
Czujnik sprawdzałem na specjalnie przygotowanym wejściu do 1Wire dostępnym w moim zestawie uruchomieniowym, oraz budowałem na płytce stykowej używając rezystorów podciągających 2,2k lub 4,7k.
Wyświetlacz działa dobrze (wyświetla napisy T1, T2, pod nimi errory oraz po pewnym czasie cyfrę 0 na środku).
Ogólnie rzecz biorąc nie mam pojęcia gdzie robię błąd.
Bardzo proszę Was o pomoc i z góry przepraszam za głupie błędy, ale męczę się z tym już kilka dni.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2013, o 23:27 
Offline
Moderator
Avatar użytkownika

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

1. w czym piszesz kod ? Eclipse ? czy może kocie Atmel Studio ?
2. gdzie i jak ustawiasz taktowanie procka dla projektu ?
3. rezystor daj koniecznie 2,2K
4. pokaż dokładnie schemat jak to podłączasz bo już nie raz okazywało się że niby to proste a ludzie tu robili ZONK'a
5. pokaż jak zmieniłeś i czy w ogóle zmieniłeś konfigurację pinu 1wire w bibliotece w pliku *.h

_________________
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: 22 paź 2013, o 23:40 
Offline
Nowy

Dołączył(a): 19 paź 2013
Posty: 4
Pomógł: 0

1. Tak w Eclipse, robię wszystko dokładnie tak jak jest w książce.
2. W ustawieniach projektu w Eclipse
4. Schemat jest dokładnie taki sam jak w książce dla trybu normalnego, mogę umieścić zdjęcie z płytki stykowej.
Z płytką ZL2AVR też nie działa, tam jest rezystor 3,3k zgodnie ze schematem http://www.cyfronika.com.pl/uruchomieniowe/zl2avr.pdf
5.
Kod:
/* Wybór PINu oraz PORTu na magistralę 1Wire */
#define OW_PIN  PB1
#define OW_IN   PINB
#define OW_OUT  PORTB
#define OW_DDR  DDRB



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2013, o 23:43 
Offline
Moderator
Avatar użytkownika

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

Lipi napisał(a):
2. W ustawieniach projektu w Eclipse


A fusebity ? jak masz ustawione ?

_________________
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: 23 paź 2013, o 00:28 
Offline
Nowy

Dołączył(a): 19 paź 2013
Posty: 4
Pomógł: 0

Obrazek

Proszę, nigdy nie zmieniałem fuse bitów. Z tego co rozumiem to opiera się on na wewnętrznym oscylatorze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 07:03 
Offline
Moderator
Avatar użytkownika

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

No to jak nie zmieniałeś fusebitów to powiedz mi jak ma działać ten projekt gdy ustawiasz mu we właściwościach 8MHz ? hmm ?

Masz Bluebooka ? no z tego co piszesz to masz ... to dlaczego nie poczytasz w nim o fusebitach w rozdziale o MkAvrCalculator ?

Na tym obrazku wyżej jak byk widać że masz fabrycznie ustawiony fusebit CKDIV8 co oznacza że procek fabrycznie działa na wewn. oscylatorze 1MHz ....

A ustawienia częstotliwości w projekcie nie służą do przestawiania prędkości procesora one tylko informują kompilator jaką TY częstotliwość taktowania ustawiłeś fizycznie. Więc jeśli masz to rozjechane to nie dziwne że wszystkie procedury czasowe się totalnie rozjeżdżają i nie działa ci DS18B20 :(

Musisz w końcu zrozumieć że przestawianie fusebitów to konieczność i żadna straszna rzecz

Możesz też we właściwościach projektu ustawić 1MHz ale nie polecam bo zaraz będziesz miał inne problemy a jak nie nauczysz się ustawiać fusebitów to i tak czym dalej w las tym będziesz miał gorzej.

W tym konkretnym przypadku wystarczy odznaczyć fusebit CKDIV8 i procek już będzie działać na 8MHz


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: 23 paź 2013, o 07:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Z tego co widzę to masz ustawiony zewnętrzny oscylator 3-8 MHz i i wewnętrzny podział zegara przez 8.
Czyli z tego co rozumie jeżeli podepniesz zewnętrznego kwarca 8MHz i masz podział przez 8 to otrzymasz 1MHz.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 12:36 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

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

Do ustawiania Fusebitów (i nie tylko) polecałbym nabyć mkAVRCalculator.

Tam będziesz wiedział konkretnie co ustawiasz, bo niestety w tym kocim okienku to sam przyznasz że ciężko się wyznać co za co odpowiada.

Wiem że może to wyglądać na chamską reklamę ale nie wyobrażam sobie programowania bez niego ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 13:07 
Offline
Nowy

Dołączył(a): 19 paź 2013
Posty: 4
Pomógł: 0

Panie Mirku, bardzo dziękuję za pomoc.
Nie wiem czemu, ale myślałem że Eclipse dzięki ustawieniom w projekcie "przestawia" mikroprocesor na wybrane taktowanie (ustawia też fusebity).
Co do tej nakładki na AVRDUDE to jeszcze nie wygląda to tak najgorzej, dziwię się tym którzy wprowadzają wartości hexalnie. Jednak przy wejściu w inne mikrokontrolery AVR na pewno zaopatrzę się w ten program.

Dziękuję Wam za cenne uwagi.



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO