Natrafiłeś na "byk" kompilatora. Instrukcja Pwm1a = 55 została przetłumaczona na dwa rozkazy maszynowe STS z błędnymi adresami OCR1H/OCR1L.
Zgłoś to jako błąd do MCS Electronics.
Jest rozwiązanie tej sytuacji: zamiast Pwm1a = 55, napisz Compare1a = 55 i zostanie to przetłumaczone jako dwa rozkazy OUT, a wartość trafi w dobre miejsce.
Kolego. Od tego mam AVR Studio by sobie programik krok po kroku prześledzić. Kompilator BASCOM-AVR 1.11.9.8 kompiluje pierwszy wariant z błędem - symulacja wszystko ładnie pokazuje. Wariant drugi z Compare1a kompilator kompiluje odmiennie i działanie programu jest poprawne: odpowiednia liczba trafia do OCR1AH/OCR1AL, licznik rusza i dolicza do tych 55, po czym ładnie się kasuje i znowu liczy, a wraz z tym zdarzeniem zmienia się stan portu - to też symulator ładnie pokazuje.
Brak wartości oznacza brak przebiegu, z prostej przyczyny: wartość OCR1A wynosi 0, a licznika też 0. Zatem o żadnym liczeniu i kasowaniu licznika nie może być mowy. Czytaj ze zrozumieniem noty katalogowe!
Nic z tego nie rozumię, pewnie mi trzeba wszystko łopatologicznie tłumaczyć.
Myślałem że w książce prawdę piszą.
Wpisywałem zamiast pwm1a=55, compare1a=55 i dalej nic na wyjściu. Wcześniej miałem inny programik i jakiś przebieg był ale TSOP1136 na niego nie reagował ale przebieg był bo świecenie diodą IR w kamerkę było widoczne a teraz nic nie widać.
Może nie pod ten port podłączam diodę?
Jeśli chcesz generować impuls z PWM ,to musisz podłączyć się do pinu (OC1A).
A jeśli chcesz to zrobić przy pomocy TOGGLE ,to nie ważne który pin użyjesz.
Kod będzie później jak uda się to opanować.
Nadal układ nie generuje nośnej nawet z Twoim kodem.
A ten programik co wcześniej podałem działa i tsop odbiera sygnał bez problemu (wcześniej miałem walniętego tsop-a), ale mnie ten program nie pasuje, chyba że dało by się w odpowiednim momencie włączać i wyłączać nośną i dodatkowo raz na jednym porcie a raz na drugim. Czy da się to jakoś w prosty sposób zrealizować?
Najprościej to jest użyć RC5SEND, tylko chyba nie da się użyć z 2 kanałami.
Gdy budowałem pilota to też początkowo nie mogłem odebrać sygnału.
Okazało się że problem był w konfiguracji oscylatora.
Jeśli chcesz żeby to wszystko działało wystarczy użyć gotowych komend z RC5
Możesz zbudować nadajnik, odbiornik lub kilka i żaden nie będzie miał problemu z rozpoznaniem komendy mimo, że będzie nadawało jedno urządzenie.
Możesz zbudować jeden nadajnik i dowolną liczbę odbiorników lub na odwrót .
Po pierwsze to ze zgrozą patrzę na to co się dzieje w Bascomie z tymi błędami o których pisał ZbeeGin. Dawno temu korzystałem z Bascoma i chwaliłem go sobie ale jakoś zawsze gdy potrzebowałem coś robić ze sprzętowymi PWM'ami to przypadkiem robiłem to za pomocą bezpośredniego ustawiania odpowiednich rejestrów bądź jako wstawki asm. Teraz programując w C już nie mam takich problemów - bo wszystko jest jasne jak drut i nie trzeba stosować "tajemniczych" zaklęć typu
dlatego jeszcze raz szczerze polecam ci "przesiąść" się na C - wbrew pozorom to wcale nie takie trudne.
A odnośnie twojego pytania
pier napisał:
...., chyba że dało by się w odpowiednim momencie włączać i wyłączać nośną i dodatkowo raz na jednym porcie a raz na drugim. Czy da się to jakoś w prosty sposób zrealizować?
pewnie, że dałoby radę i to w bardzo prosty sposób, wystarczy wykorzystać dwa kanały PWM na jednym Timerze oraz dwa wyjścia OCxA oraz OCxB. A później tylko odpowiednio w kodzie zatrzymywać i startować odpowiedni kanał. Z tym, że jak to zrobić w Bascomie - to nawet nie może mi się przyśnić. Trzeba chyba jakoś "wachlować" tymi linijkami w kodzie:
tylko czy to polecenie Config nie jest wykonywane JEDEN raz tylko na etapie kompilacji w Bascomie??? a potem to już chyba by i tak trzeba było "miąchać" po odpowiednich rejestrach.
koniec końców i tak wygląda na to, że warto się nauczyć tego w detalach ale poprzez pryzmat programowania albo w asemblerze albo w C ...... wtedy wszystko pójdzie ci z górki. Tym bardziej, że jak pisałem wyżej, Bascom potrafi dostać jakiejś "niestrawności" czy "czkawki" i źle przetłumaczyć do asemblera swoje własne magiczne polecenie
Dzięki za odpowiedzi.
A czy dobrym pomysłem było by generowanie jednego przebiegu i podanie go na anody trzech diod IR a załączanie poszczególnych diod odbywało by się poprzez podawanie niskiego stanu przez procek na poszczególne katody tychże diod? Jak uważacie czy jest to zjadliwy pomysł?
Pomysł zjadliwy - i będzie działać - pewnie - czemu nie?
Tylko że ty chcesz chyba w spoób hardwarowy troszkę sterować tymi diodami zamiast programowy. Mówię to dlatego, że w takim wypadku musisz poświęcić 4piny procka a dla programowego zrobienia tego samego - można użyć tylko 3 pinów dla 3 diod. Z drugiej strony to nie problem - procki zwykle mają wiele nie wykorzystanych pinów w układach
Trzy diody Ir potrzebne są po to by zbudować radar do wykrywania przeszkód do robota.
Na razie uruchomiłem dwie i wszystko jest ok jak poradzę sobie z wykrywaniem obiektu pośrodku to zrezygnuje z trzeciej diody.
To nie lepiej wysyłać z 3 LED, 3 kody RC5 i odbierać je 3 czujnikami??
LEDy podłączasz wtedy do 1 tranzystora a kody odbierasz poszczególnymi czujnikami.
Układ jest wtedy nie wrażliwy na inne nadajniki IR ,takie jak np PILOTY.
To nie lepiej wysyłać z 3 LED, 3 kody RC5 i odbierać je 3 czujnikami??
LEDy podłączasz wtedy do 1 tranzystora a kody odbierasz poszczególnymi czujnikami.
Układ jest wtedy nie wrażliwy na inne nadajniki IR ,takie jak np PILOTY.
hyhyhy teraz to kolega zaszalał - 3 diody nadawcze i aż 3 czujniki szok. Toż już by można było sobie w głowie pomysł uprościć i dać jeden odbiornik a odbierać różne kody z każdej diod ...... gdyby to było w ogóle możliwe i dla zrobienia czujnika odbiciowego, który z natury rzeczy - musi sprawdzać odbity sygnał. A skoro odbity to często zniekształcony i to mocno (w zależności jeszcze od rodzaju obiektu) - jeśli chodzi np o modulację RC5. Tak więc pomysł w ogóle z przesyłaniem RC5 jakichś kodów na potrzeby takiego czujnika - pali na panewce. Nie mówiąc już o innch powodach jak chociażby jeden z nich - czas nadawania ramki itp
W końcu udało mi się zrobić ten czujnik. Działa wyśmienicie! Nie wiem tylko jak z zakłóceniami ale wszystko się poprawi.
Wielki dzięki Mirekk36 za wszelkie wskazówki.
Skoro RC5 jest tak podatny na zniekształcenia to jak jest możliwe że zrobiłem układ zapalający światła ,włączający komputer i telewizor do tego zasłaniający żaluzje jednym przyciskiem, nie celując bezpośrednio w te urządzenia w pokoju 165 m².
W końcu udało mi się zrobić ten czujnik. Działa wyśmienicie! Nie wiem tylko jak z zakłóceniami ale wszystko się poprawi.
ano widzisz - czyli rozumiem że ładnie 2 diodami wykrywasz 3 strefy już ?
Zakłócenia jak sobie to potestujesz w różnych warunkach i na różnych obiektach to też spokojnie wyeliminujesz. Tak na prawdę pozostałe rzeczy to już tylko taka jakby kalibracja całości dla swoich potrzeb.
Dodano po 2 [minuty]:
arktik1 napisał:
Skoro RC5 jest tak podatny na zniekształcenia to jak jest możliwe że zrobiłem układ zapalający światła ,włączający komputer i telewizor do tego zasłaniający żaluzje jednym przyciskiem, nie celując bezpośrednio w te urządzenia w pokoju 165 m².
165m no no no ładny mały pokoik
Kolega zajmie się zabawą z takim czujnikiem odbiciowym to zrozumie o co chodzi. A to że działa w takich warunkach o jakich piszesz to normalne - nic w tym dziwnego.
Po pierwsze to ze zgrozą patrzę na to co się dzieje w Bascomie z tymi błędami o których pisał ZbeeGin.
Błąd już zgłoszony i ma zostać poprawiony:
Cytat:
Thanks for reporting this. The entry for PWM1 is missing in the dat file. If You add it under [WIO] section it will be correct. But I will fix this in the compiler as well.
Best regards,
Mark Alberts
mirekk36, obecnie szykują się poważne zmiany w BASCOMie. Powoli dodawane są układy XMEGA, tworzone jest nowe IDE (Wreszcie mają być projekty!). Chodzą też słuchy o BASCOM-ARM, choć osobiście sobie tego jakoś nie wyobrażam.
A wszystko to robi jedna osoba, i ma na głowie swoją firmę, rodzinę i ten nieszczęsny kompilator (A może też psa i kota ). Zatem wpadki są i będą, choć ich skala wydaje się nie być aż tak duża. W ciągu tych 8 lat może zgłosiłem 10 błędów, a w pierwszym okresie dość sporo przemieliłem kodu "od wewnątrz".
Tak za pomocą dwu diod IR wykrywam strefy lewa prawa i środek. Mam tylko problem z zakłóceniami od pilotów RTV i nie wiem jak to wyeliminować ale aż tak bardzo mi to nie przeszkadza i nie będę na razie tego zmieniał.
mirekk36, obecnie szykują się poważne zmiany w BASCOMie. Powoli dodawane są układy XMEGA, tworzone jest nowe IDE (Wreszcie mają być projekty!). Chodzą też słuchy o BASCOM-ARM, choć osobiście sobie tego jakoś nie wyobrażam.
Ja o tych "słuchach" szłyszę już od wielu miesięcy .... i nadal nic. Przypomina mi to sytuację z próbą wyprodukowania przez http://www.mikroe.com/ nowej wersji IDE i lepszych kompilatorów dla procków AVR. Też trwało to i trwało miesiącami aż w końcu nic nie powstało. Nie żbym był malkontentem bo bardzo dobrze rozumiem co to znaczy produkcja takiego sporego projektu i to jeszcze w pojedynkę ale.....
..... ale ja bym tam nie rozsiewał plotek o produkcie, który może dopiero powstanie za X czasu, z prawdopodobieństwem Y, że będzie jeszcze opóźnienie Z. Bo wychodzi z tego tylko "marmolada" informacyjna. .... Dla mnie to o tyle dobrze się skończyło, ze dzięki tym opóźnieniom i ograniczeniom itp - zacząłem się uczyć języka C - co wyszło mi tylko na dobre i w zasadzie już nie wyobrażam sobie żeby znowu przesiadać się na Bascoma. Co nie oznacza, żebym nie doceniał tego produktu. Bo na prawdę widać, że jego stwórca wkłada wiele pracy w niego i na pewno jest on dobry m.inn dla wielu początkujących adeptów, którzych na początku odstrasza od mikroklocków sama nazwa asembler czy język C .... Dobrze żeby jakkolwiek ale zaczynali bo coraz mniej programistów się rodzi na świecie a także hobbystów jeśli chodzi o tę dziedzinę. Niestety coraz więcej ludzi wybiera drogę typu: szalik, bejzbol i piwko - a szkoda (sorki, że tak trochę odbiegłem od tematu)
Dodano po 1 [minuty]:
pier napisał:
Tak za pomocą dwu diod IR wykrywam strefy lewa prawa i środek. Mam tylko problem z zakłóceniami od pilotów RTV i nie wiem jak to wyeliminować ale aż tak bardzo mi to nie przeszkadza i nie będę na razie tego zmieniał.
No i super, a co do zakłóceń od pilotów to w końcu nie jest to jakiś super krytyczny parametr w końcu - robot nie będzie jeździł wkółko przed jakimś telewizorem gdzie z kolei ktoś w kółko bawi się przełączaniem kanałów