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



Teraz jest 26 kwi 2024, o 19:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 2 lis 2011, o 16:29 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 17
Pomógł: 0

Witam,
walcze i już nie mam pojęcia co jest nie tak , próbowałem debugować w każdy mozliwy sposób ale ale zawsze wychodzi za krótki PulseWidth i program nie chce dalej analizować sygnału...


[edit] i jeszcze dodatkowe info które moze pomoc
PulseWidth zmienia się w okolicach 1960 gdy wciskam niektóre klawisze na pilocie i 2500 lub 3300 przy reszcie klawiszy.


Proszę o pomoc
Kod:


#define LED_PIN (1<<PA0)
#define LED_TOG PORTA ^= LED_PIN

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "ir.h"
#include "lcd.h"

 volatile uint8_t toggle_bit;
 volatile uint8_t address;
 volatile uint8_t command;
 volatile uint8_t Ir_key_press_flag;
 volatile uint8_t rc5cnt;

 void ir_init() {
    DDR(IR_PORT) &=~ IR_IN;
    PORT(IR_PORT) |= IR_IN;




#if TIMER1_PRESCALER==1
    TCCR1B |= (1<<CS10);
#endif

#if TIMER1_PRESCALER==8
    TCCR1B |= (1<<CS11);
#endif

#if TIMER1_PRESCALER==64
    TCCR1B |= (1<<CS11) | (1<<CS10);
#endif

#if TIMER1_PRESCALER==256
    TCCR1B |= (1<<CS12);
#endif

    TCCR1B &=~ (1<<ICES1);
   rc5cnt=0;
   TIMSK1 |= (1<<ICIE1);
   Ir_key_press_flag=0;

 }

ISR(TIMER1_CAPT_vect)
{
   #define FRAME_RESTART 0
   #define FRAME_OK 1
   #define FRAME_END 2
   #define FRAME_ERROR 3


   static uint16_t LastCapture;
   uint16_t PulseWidth;
   static uint8_t IrPulseCount;
   static uint16_t IrData;
   static uint8_t frame_status;


   PulseWidth= (ICR1 - LastCapture);
   LastCapture = ICR1;
   TCCR1B ^= (1<<ICES1);

   
 if (PulseWidth >MAX_BIT)
    {
    rc5cnt=0;

    }
 if (rc5cnt>0)
    {


    frame_status=FRAME_OK;

    }
 if (rc5cnt ==0)
 {
    IrData=0;
    IrPulseCount=0;
    TCCR1B |= (1<<ICES1);
    rc5cnt++;
    frame_status=FRAME_END;


 }



 if (frame_status==FRAME_OK)
 {


    if(PulseWidth<MIN_HALF_BIT)
    {
       frame_status=FRAME_RESTART;

    }
    if(PulseWidth>MAX_BIT)
    {
       frame_status=FRAME_RESTART;

    }
    if(frame_status==FRAME_OK)
    {
               lcd_cls();
      lcd_locate(0,0);
       lcd_int(PulseWidth);
 // ----------------------------  DO TEGO MOMENTU NIE DOCHODZI PROGRAM ....
       if(PulseWidth>MAX_HALF_BIT) rc5cnt++;
       if(rc5cnt>1)

          if((rc5cnt%2)==0)
          {
             //------------------------------------


               //------------------------------------
             IrData=IrData<<1;
             if((TCCR1B&(1<<ICES1))) IrData|=0x0001;
             IrPulseCount++;
             if(IrPulseCount>12)
             {
               if(Ir_key_press_flag==0)
               {
                  command=IrData&0b0000000000111111;
                  address=(IrData&0b0000011111000000)>>6;
                  toggle_bit=(IrData&0b0000100000000000)>>11;

               }
            frame_status=FRAME_RESTART;
            Ir_key_press_flag=1;
             }

          }
       rc5cnt++;

    }
 }
if (frame_status==FRAME_RESTART)
{


   rc5cnt=0;
    TCCR1B &=~ (1<<ICES1);
}



}







Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2011, o 17:07 
Offline
Moderator
Avatar użytkownika

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

Tak na gorąco zapytam, jeszcze bez jakiejś większej analizy bo jestem w pracy.

1. Czy Fusebity dobrze ustawione?
2. Czy dobrze sutawiona prędkość F_CPU? i gdzie?
3. Czy to środowisko Eclipse ?
4. Czy poprawnie podmienione wszystkie nazwy rejestrów (ale UWAGA! także bitów) w porównaniu do ATmega32?

Bo ta funkcja z książki MUSI działać ;) po prostu MUSI.... i spokojnie - jeśli nie działa to zmusimy ją razem ;)

dlatego jeszcze jedno pytanie?

5. jaki pilot ?
6. jakie połączenia sprzętowe czyli hardware ? własny czy jakiś zestaw uruchomieniowy?

_________________
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: 2 lis 2011, o 18:13 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 17
Pomógł: 0

Ad 1 :
fuse jak w załączniku , jak w książce
Ad 2 :
F _CPU - Eclipse->Projekt->Properties->AVR->Target Hardware -> MCU clock f -> 8 000 000
Ad 3
Eclipse
Ad 4
Podmieniłem
TIMSK->TIMSK1;
TICIE1->ICIE1

Ad 5
Pilot RC 5 z zestawu TAURUS

Ad 6
płytka 1.02

Generalnie tak :
mam wrażenie że nie za bardzo rozumiem działanie rejestru ICR1 , gdy wyrzucam jego wartość to wyświetlacza to pojawiają się liczby ujemne...
używam standardowego przekształcenia:
Kod:
void lcd_int(int val)
{
   char bufor[17];
   lcd_str( itoa(val, bufor, 10) );
}


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2011, o 20:49 
Offline
Moderator
Avatar użytkownika

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

Ponieważ czytając tu kody i nie mając widoku na całość - proponuję podesłać mi na maila cały ten projekt, który kolega przerobił sobie na ATmega644P na maila: biuro@atnel.pl

spakować go do ZIP'a czy RAR'a i podesłać w całości - wtedy łatwiej i szybciej będzie mi pomóc, bo mając pilot z zestawu i zestaw ATB to MUSI działać - no tylko może gdzieś się ręka omsknęła przy przeróbce nazw rejestrów i bitów - dojdziemy do tego - 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: 2 lis 2011, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

cóż mi pozostaje powiedzieć ....

Obrazek

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2011, o 22:29 
Offline
Moderator
Avatar użytkownika

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

Witam,

dzisiaj nie zdążyłem w firmie sprawdzić nadesłanego kodu - ale jutro postaram się i dam znać tutaj.

_________________
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: 6 lis 2011, o 18:43 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 17
Pomógł: 0

PulseWidth zmienia się od 800 do 5000 .... nie kumam , tak jakby w zależności od wciśnietego klawisza była różna długość impulsu ... ale zgodnie z teorią powinno się zmieniać co 889 us - 1700 us . Pilot może być skopany ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2011, o 19:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

z tego co zaobserwowałem to w wielu przypadkach jest tak ze faktycznie w zaleznosci od klawisza zmienia się długość impulsu. I dotyczy to
głównie marnej jakości chinskich wytworów pseudouniversalnych , które jakimś cudem trafiaja w ramke :)

Tak więc zarówno moze byc skopany pilot , jak i taka może być jego uroda.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2011, o 19:31 
Offline
Moderator
Avatar użytkownika

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

Ja bardzo przepraszam, że jeszcze nie sprawdziłem nadesłanego do mnie na maila kodu, ale od kilku dni musiałem poleżeć w domciu z powodu przeziębienia. Jak tylko wrócę do firmy to sprawdzę dokładnie w czym rzecz i dam znać.

Natomiast jeśli pilot jest z zestawu Taurus - to ręczę za niego swoją głową ;) .... mam nadzieję, że wkrótce wszystko się wyjaśni.

_________________
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: 7 lis 2011, o 23:27 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 17
Pomógł: 0

Znalazłem !!

błąd jest w tej linijce:

Kod:
#define ir_micro_s(num) ((num)*F_CPU/1000000/TIMER1_PRESCALER)


po moim uproszczeniu :
Kod:
#define ir_micro_s(num) ((num))


kiedyś miałem podobny problem w matlabie:
kompilator przygotowuje najpierw liczbę 889 * 8 000 000 do podzielnia co przekracza prawdopodobnie inta który powinien pomieścić wartość tej liczby ,nie sygnalizuje błędu i później jakąś inną liczbę dzieli przez 1000 000 a później 8.

ha :)
jestem z siebie dumny :D :D :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2011, o 23:58 
Offline
Moderator
Avatar użytkownika

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

No i znowu nie miałem okazji sprawdzić - ale od razu powiem, że to nie jest powodem - bo oznaczałoby, że nie powinno to działać także u mnie oraz u wszystkich, którzy ten kod już setki jak nie tysiące razy testowali. Ale pewnie coś w tym jest....

dlatego tym bardziej postaram się to sprawdzić i wyjaśnić do końca - bo to co kolega teraz zrobił - to hmmm pewnie, że uproszczenie ale jednocześnie przywiązanie się do jednej częstotliwości taktowania. Natomiast to całe makro uniezależniało wszystko od taktowania (no może jeszcze poza ręcznym ustawieniem preskalera)

_________________
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: 8 lis 2011, o 00:12 
Offline
Moderator
Avatar użytkownika

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

No to już mam byka za rogi ;) niech się kolega przyjrzy swojej linijce kodu (ponieważ kolega przerabiał tą bibliotekę po swojemu - nie da się ukryć)

Kod:
#define ir_micro_s(num) ((num)*F_CPU/1000000/TIMER1_PRESCALER)


a tu poniżej linijka kodu z oryginalnej biblioteki z płyty DVD dołączonej do książki

Kod:
#define ir_micro_s(num) ((num)*(F_CPU/1000000)/TIMER1_PRESCALER)


Mam nadzieję, że kolega dostrzega tę subtelną ale jakże ważną RÓŻNICĘ ??????

A co pisałem w książce w rozdziale o makrodefinicjach i nawiasach ??? Oj , oj - pogrożę palcem ;)

Kolega nie doczytał - a pisałem wyraźnie o nawiasach i jakie może przynieść zgubne skutki ich złe używanie albo powiem wprost "OSZCZĘDZANIE NA NAWIASACH" bo tego kolega jak widać dokonał. No i przyczyna błędu znaleziona - tylko, że niestety wnioski bardzo, hmmm bardzo złe - bo znowu zrzucenie winy albo na kompilator albo na błędny kod w książce. Nie piszę tego broń boże z żadnym przekąsem - ale z drugiej strony ten przykład nawet mógłby być w książce jako dodatkowy do tego, który ja podałem ;)

dlatego pozwolę sobie zacytować tu obszerny fragment z książki ze strony 135:

Cytuj:
Wyobraź sobie taką makrodefinicję bez nawiasów:

#define LICZ(a,b) a+b

Jeśli w kodzie programu wywołamy ją np. tak:

a = 2 * LICZ(0+5, 2);

to preprocesor rozwinie nam to do takiej postaci:

a = 2 * 0 + 5 + 2;

W związku z tym zamiast obliczyć to tak:

a = 2 * ( (0 + 5) + 2 ); // wynik = 14

to obliczone zostanie niestety tak:

a = (2 * 0) + 5 + 2; // wynik = 7

Widzisz więc jak na dłoni, że każdy parametr w takiej makrodefinicji powinien znaleźć się w nawiasach. Znając jednak od podstaw sposób „myślenia” preprocesora, wiemy jak należy z nim „rozmawiać, aby dobrze dla nas „pracował”. Pisałem, że warto jest rozważyć napisanie funkcji typu inline zamiast makra. Ja widać wyżej, w takiej makrodefinicji nie ma żadnej kontroli, jaką zapewnia kompilator. Jednak czasami zyskujemy ogromną przewagę nad funkcjami inline........


Zatem żeby nie być gołosłownym proponuję koledze jednak poprawić tę linijkę żeby była tak jak w oryginale biblioteki i wszystko ruszy - a wtedy jeszcze raz to przeanalizować - bo rzeczywiście początkowy kierunek myślenia był dobry - i biorąc to pod uwagę oraz powyższe wyjaśnienie - zapewne zdobędzie kolega na takim niby prostym przykładzie spore doświadczenie na przyszłość ;) .... prawda ?

gdyby jednak jeszcze coś nie było jasne to proszę śmiało pytać - pomożemy.

_________________
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: 8 lis 2011, o 21:34 
Offline
Nowy

Dołączył(a): 06 paź 2011
Posty: 17
Pomógł: 0

Wszystko jasne, dziękuję :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2016, o 13:43 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Witam mam małe pytanie do tej linijki
<#define ir_micro_s(num) ((num)*(F_CPU/1000000)/TIMER1_PRESCALER)>
co to jest to "(num)" i jak mam sobie obliczyć ilość tyknięć skoro nieznam tej wartości?
Dodam zę książka jest super
pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2016, o 13:55 
Offline
Moderator
Avatar użytkownika

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

qbaand napisał(a):
co to jest to "(num)"

No nie żartuj i nie mówi mi, że nie ma tego opisanego w książce i to DOKŁADNIE ;) toż to jeden z gwoździ programu w tym rozdziale ;) Makro to automatycznego dopasowywania wartości do us niezależnie od wartości F_CPU

_________________
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: 26 cze 2016, o 14:08 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Panie mirku przeczytałem w książce jeszcze raz rozdział o ir-ce i nadal nie kumam tego zapisu po moich wyliczeniach wychodzi mi
<#define ir_micro_s(num) ((num)*1)>
dodam ze chciałbym to zrozumieć poniewaz chciał bym przerobić ten kod tak aby pracował z częstotliwością 2KHz a nie 36KHz . Dzięki za odp pozdrawiam
Proszę wybaczyć za tak banalne pytania ale dopiero zaczynam z językiem c przedtem był bascom



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2016, o 16:03 
Offline
Moderator
Avatar użytkownika

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

Wiesz czym innym jest napisać że czegoś nie ma w książce a czym innym, że nie do końca np udało się jeszcze zrozumieć - bo wtedy to można coś doprecyzować, wyjaśnić itp

A więc przede wszystkim zrozum jaka IDEA przyświeca żeby było to makro - bo ono nie stanowi kodu programu. Tylko preprocesor dostaje pokarmi i zamienia go na jakąś stałą konkretnę liczbę

pomyśl sobie - gdy masz procka taktowanego 8 MHz i włączysz podział preskalerem przez 8 to ? ... to wychodzi ci , że jedno tyknięcie timera zajmuje ? ... no właśnie 1 us dokładniuśko i w takim przypadku możesz w ogóle odpuścić sobie to makro bo wszędzie w kodzie wygodnie podajesz liczby w mikrosekundach wprost. Zgadza się ?

No a teraz sobie wyobraź, że zmieniasz taktowanie procka na inną częstotliwość - weźmy np na 16 MHz to co ? to musiałbyś w całym kodzie chodzić i ręcznie przemnażać te liczby x2 .... czyli jak gdzieś dałeś czas w mikrosekundach np 200 to teraz musiałbyś zamienić na 400 .... zgadza się ? Bez sensu robota - bo co jeśli za jakiś czas zechcesz zmienić taktowanie bo masz np kwarca 11,0592 MHz to co ? O ile zmniejszyć czy zwiększyć tę liczbę 200 ???

No i po to zbudowałem na szybko takie makro - że nie ważne jaką mam częstotliwość taktowania czy 8MHz czy 16MHz czy 11,059MHz czy 18,432MHz to zawsze podaję czas w ten sposób:

ir_micro( 200 )

zamiast

200

rozumiesz ? .... I to makro samo mi obliczy jaka ma być wartość dla różnego F_CPU, toż jak sobie podstawisz liczby do tego wzoru jaki jest w tym makrze to masz np

dla 11,0592 MHz - it_num( 200 ) = 276

dla 16 MHz - it_num( 200 ) = 400

a dla 8 MHz ;) - it_num( 200 ) = 200

czyli nie musisz ręcznie na kalkulatorze wyliczać zawsze każdej wartości dla innego F_CPU i w całym kodzie zmieniać wielu wprowadzonych wcześniej wartości, teraz dzięki temu że jest makro - biblioteka sama się dopasowuje do F_CPU - i to jest jedna z bardzo wielu zalet programowania w C

------------------------ [ Dodano po: 4 minutach ]

qbaand napisał(a):
dodam ze chciałbym to zrozumieć poniewaz chciał bym przerobić ten kod tak aby pracował z częstotliwością 2KHz a nie 36KHz


To makro nie ma NIC A NIC wspólnego z nośną - to raczej pokazuje, że ty do końca nie wiesz jak działają scalone odbiorniki podczerwieni i od razu ci podpowiem, że z częstotliwością 2 kHz nie będą praktycznie w ogóle działać chyba że masz na myśli CAŁKIEM co innego - czyli mieszasz kompletnie tematy .... Zamiast najpierw zrobić to ćwiczenie tak jak jest i zrozumieć jak to działa na przykładzie RC5.

_________________
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: 26 cze 2016, o 16:18 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Dzięki za odpowiedz teraz myślę ze zrozumiałem :) i rozumiem jak działa ir chcę wykorzystać podobne kodowanie do transmisji radiowej , ale nadajnik przenosi tylko częstotliwość do 8Khz więc te czasy są za krótkie i odbiornik nic nie odbiera
Jeszcze raz dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2016, o 16:29 
Offline
Moderator
Avatar użytkownika

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

qbaand napisał(a):
chcę wykorzystać podobne kodowanie do transmisji radiowej

A no to rozumiem - po podczerwieni zwykle czas na tory radiowe ;)

_________________
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: 2 lip 2016, o 12:13 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

panie Mirku co do irdy to wydaje mi się ze w książce czasy połówek 889+889 to powinny być chyba ns a nie us mogę się mylić ale tak z wylczeń mi wychodzi a jeden takt to tez 1ns



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lip 2016, o 12:22 
Offline
Moderator
Avatar użytkownika

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

qbaand napisał(a):
mogę się mylić

Pewnie, że możesz się mylić, każdy z nas się myli .... Więc nic się nie stało - że właśnie się mylisz ...

qbaand napisał(a):
ale tak z wylczeń mi wychodzi

Nie wiem za bardzo o jakich obliczeniach mówisz - ale akurat czasy półbitów w RC5 nie wynikają z jakichś tajemniczych obliczeń to po prostu standard który mówi o tym o czym piszę w swojej książce ;)

qbaand napisał(a):
a jeden takt to tez 1ns

O Panie;) zastanów się czy takie czasy obsłużyłbyś w ogóle programowo

a na koniec zajrzyj np tutaj:
http://www.sbprojects.com/knowledge/ir/rc5.php

i zrozum, że mowa o mikrosekundach a nie w żadnym wypadku o nanosekundach ;) 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: 2 lip 2016, o 12:38 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

ok mój bład



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lip 2016, o 13:37 
Offline
Moderator
Avatar użytkownika

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

Żaden problem , ileż to razy ja się pomylę ? ;)

_________________
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: 6 lip 2016, o 17:15 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Witam panie Mirku poniewaz z moją radiówką mi nic nie wychodzi przepisałem sobie programik z książki odbiornik podczerwieni i przerobiłem go sobie pod atmege8 z kwarcem 8mhz i niestety przy moim szczęściu nie działa dodam ze odbiornik podczerwieni odbiera piloty sprawdzone oscyloskopem a program nie pokazuje mi kodów .. Napisałem na innej atmedze pilocika rc5 aby mieć pewność ze to 36khz i niestety. czy mozna jakoś zmodyfikować program aby pokazał mi na wyświetlaczu ze coś odbiera i działa program?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lip 2016, o 20:50 
Offline
Moderator
Avatar użytkownika

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

qbaand napisał(a):
czy mozna jakoś zmodyfikować program aby pokazał mi na wyświetlaczu ze coś odbiera i działa program?

Sorry ale kompletnie nie rozumiem pytania ...

a co masz w Bluebooku? program który wg ciebie nie działa ? którego trzeba modyfikować żeby działał z pilotem RC5 ? ... no chyba kolega raczy sobie rubasznie żartować ;) Ten przykładowy kod z DVD albo z Pendrive z książki to jak 100% towy tester pilotów RC5

_________________
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: 6 lip 2016, o 23:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
qbaand napisał(a):
przepisałem sobie programik z książki odbiornik podczerwieni i przerobiłem go sobie pod atmege8 z kwarcem 8mhz

Jeśli przepisałeś to mogłeś się machnąć. Mam na sumieniu wyłączanie lampki nocnej i wzmacniacza kina domowego pilotem TV którego "nauczyłem widzieć a potem wysyłać klawisze 1 i 2 z RC5" i wierz mi że na ATm8 - wew.8MHz odbiera bez żadnych przeróbek. Kod importowany z płyty a nie przepisywany.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2016, o 12:05 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

dokładnie tak zrobiłem kopiuj wklej(przerobiłem)- program faktycznie działa, bo wielu bojach doszłem do tego aby program działał to musze nóżkę reset procesora zewrzeć do masy czyli reset procka robię mechanicznie. nie wiem dlaczego mam 3 atmegi 8 i wszystkie robią mi tak samo dodam ze mam rezystor 10k i z nim tak samo robi . fuse bity ustawione mkavrcalc. jakieś pomysły ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2016, o 12:20 
Offline
Moderator
Avatar użytkownika

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

Może i jakieś pomysły by były ale ja kompletnie z tego opisu nie rozumiem co ty robisz ? Zwierasz reset do GND i czyli procek jest w stanie RESETU i ci program działa ? ;) sorki ale sam wierzysz w to co mówisz ?

Co to zdanie w ogóle może oznaczać?
qbaand napisał(a):
doszłem do tego aby program działał to musze nóżkę reset procesora zewrzeć do masy czyli reset procka robię mechanicznie. nie wiem dlaczego mam 3 atmegi 8 i wszystkie robią mi tak samo dodam ze mam rezystor 10k i z nim tak samo robi

Przeczytaj to sam jeszcze raz i spróbuj się postawić w roli czytającego, który nie widzi twojego schematu .... a coś musiałeś nieźle pokręcić

_________________
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: 7 lip 2016, o 12:41 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

tak zwieram na chwile czyli dokładnie robię reset i program zaczyna działać czyli odbierać kody
Może złe opisałem
Po włączeniu zasilania mam tylko napis na lcd i program nie odbiera żadnego pilota robię reset i program śmiga nie rozumiem tego tak jakby po wyświetleniu napisu się zatrzymał. dodam ze to są atmeg8A
to są pliki które zmienialem
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 ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2016, o 20:20 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

panie Mirku idzie ustawić atmege8 aby się resetowała po włączeniu zasilania ?



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: 37 ]  Przejdź na stronę 1, 2  Następna strona

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