Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

kompilacja-asembler proste pytanie proszę o pomoc

Marko121 08 Maj 2005 22:48 5095 29
  • #1 08 Maj 2005 22:48
    Marko121
    Poziom 17  

    Witam
    Chciałbym wykonać takie coś ze strony: http://www.myplace.nu/avr/minidds/index.htm
    Mój problem polega na tym że nie mogę poradzić sobie z kompilacją tego programu napisanego w asemblerze ,aby załadować go do procka. Użyłem w tym celu avrstudio 4 oraz wavrasm obydwa programy komunikowały że w programie jest 5 błędów .Dla mnie asembler to jeszcze wielką zagadką wiec zwracam się z prośbą o pomoc do fachowców ,może ktoś życzliwy pomoże mi poprawić ten program ,a może ja nie używam właściwych narzędzi?

    Proszę o jakiś sugestie

    Pozdrawiam marko121

    0 29
  • #2 09 Maj 2005 08:29
    ora
    Poziom 12  

    napisz może jakiego asemblera używasz bo do obsługi procków jest chyba asembler 8088 czy jakośtak a zwykły Pecetowy ma jeszcze inne komendy

    0
  • #3 10 Maj 2005 00:26
    LordBlick
    VIP Zasłużony dla elektroda

    Pytanie podstawowe, do jakiego procesorka chcesz załadowac program ? W oryginale jest AT90S2313. Myślę, że szybszą pomoć uzyskałbyś, prosząc moderatorów o przeniesienie do działu "Mikrokontrolery"

    0
  • #4 10 Maj 2005 00:50
    Elektrooonik
    Poziom 29  

    Dziwi mnie troszke ze Jesper nie wrzucił gotowego hexa oprócz kodu źródłowego, ułatwił by życie wszystkim którzy chcieli by zbudować to urządzenie :)

    0
  • #5 10 Maj 2005 00:55
    Marko121
    Poziom 17  

    Witam
    Masz racje Light'I chyba umieściłem ten post nie tam gdzie trzeba i przed chwilą właśnie poprosiłem o przeniesienie .

    Wracając do tematu to chciałbym ten program umieścić w AT90S2313 tak jak jest oryginalnie (ewentualnie w atmega8 bo to chyba unowocześnienie 2313,chyba że się mylę)
    Czy możesz mi jakoś pomóż w kompilacji?
    Pozdrawiam marko121

    0
  • Pomocny post
    #6 10 Maj 2005 01:11
    LordBlick
    VIP Zasłużony dla elektroda

    Unowocześnienie AT90S2313 brzmi : ATtiny2313.... ;)
    No to OK, kody przerobione pod modłę AVRStudio + gotowy HEX - na AT90S2313, ATtiny2313 i ATmega8515. Licencja GNU zachowana - mamy binaria i źródła... ;)
    Some other requests ? ;)
    P.S.

    Cytat:
    ; Code is written for use with AVR-GCC in assembler mode
    ; flag: -x assembler-with-cpp
    - oryginalny kod jest pod avrgcc... ;)
    Pozdrawiam, Daniel
    -----------------------
    05-07-2005 - Update : dodałem kod w wersji modułowej, uniwersalnej, zawierający warunkową kompilację w pliku Main.asm - dobry przykład na wyciśnięcie co nieco z AVRasm2... ;)

    0
  • #7 10 Maj 2005 08:27
    Marko121
    Poziom 17  

    Witam
    Suuuper :D bardzo ci dziękuje Light'I dla ciebie to pewnie pestka ,a mnie bardzo pomogłeś. Bardzo miło że są jeszcze ludzie , którzy chcą nieść pomoc innym ,a ty z pewnością do mich należysz.

    Jeszcze raz dziękuję wszystkim za zainteresowanie tematem , szybką reakcję i oczywiście za rozwiązanie mojego problemu

    Pozdrawiam Marek

    0
  • #8 10 Maj 2005 08:55
    prokopcio
    Poziom 29  

    Witam... No super sprawa, daj znać jak zrobisz, czy wszystko jest ok...

    Pozdrawiam

    Dodano po 1 [minuty]:

    ps. Co do Light'I dołączam się do wyrazów uznania:

    Dołączył: 31 Sie 2004
    Posty: 1537
    Pomógł osobom: 129

    0
  • #9 22 Maj 2005 17:16
    Marko121
    Poziom 17  

    Witam ponownie
    Wykonałem płytkę poskładałem wszystko załadowałem hexa do 90s2313 i układ nie działa :( :( :cry: .Układ jest wykonany prawidłowo wg. schematu
    nie wstawiłem tam tylko MAX603 bo według mnie jest on tan tylko po to aby oszczędzać baterie i podaje zasilanie dopiero wtedy gdy układ jest podpięty do kompa. Połączyłem tylko nogi w podstawce(odmax603) 1 i 8 i podaje tam 5V z zasilacza zewnętrznego , zamiast max202 dałem max232 ale to jest to samo wg. elfy max 202 jest unowocześnieniem max232 więc chyba nie powinno to przeszkadzać

    Na wyjściu generatorka nie ma przebiegu .(na portcie PB stale 5V bez zmian ,bez przebiegu)
    W programie sterującym „DDSControl” po wciśnięciu przycisku „set” w górnym polu „frequency” powinna pojawić się zadana w dolnym polu „new Freq” wartość ,gdy układ nie jest podłączony do komputera albo jest brak komunikacji po rs to w polu „frequency” jest cały czas „static” natomiast w moim przypadku komunikacja jakaś tam chyba jest bo po zadaniu „new Freq” u góry pojawia się wartośc ale jest ona całkowicie inna niż została zadana i przyciski „<< >> < >” coś tam zmieniają ale nie tak jak trzeba w dodatku nie za każdym razem po zadaniu nowej częstotliwości wpływam na zmianie górnej wartości , a czasem nie zmienia się nic, więc moim zdaniem coś chyba jest nie tak z tą komunikacją ale nie mam pojęcia co to może być.
    Próbowałem zasymulować program na procka (bo może tam coś jest nie tak) w avr studio 4 ale jakoś mam kłopoty z oceną czy program jest ok. ponieważ jak już wspominałem mam kłopoty z asemblerem a tu trzeba jeszcze symulować uarta – nie dam rady -może ktoś bardziej doświadczony zechciał by przesymulować ten program i powiedzieć czy wszystko jest ok.
    Podłączenie z komputerem wykonałem kablem 1 do 1 czyli :

    Komp generator
    2 - 2
    3 - 3
    4 - 4(włącza zasilanie ale u mnie jest na stale 5V z zasil. zewn. a więc 4 wisi w powietrzu )
    5 - 5
    Działanie programu i ukladu sprawdzałem na 3 komputerach win2000 i win 98 –to samo czyli źle
    pomyślałem może kwarc? ale włożyłem procka do płytki uruchomieniowej od bascoma (inny kwarc11.052 ,inny max232) pozworkowałem wg schematu i to samo- źle .

    proszę o jakieś ewentualne podpowiedzi co jeszcze sprawdzić ,co może być nie tak i jakie wyniki symulacji programu.
    Za wszelką pomoc z góry dziękuję

    pozdrawiam Marek

    0
  • #10 22 Maj 2005 19:22
    LordBlick
    VIP Zasłużony dla elektroda

    Program jest na kwarc 11.0592MHz. Czy testowałeś na programie typu terminal ? Układ nawet bez podłączenia do komputera powinien po włączeniu generować sinusa 1kHz...

    0
  • #11 22 Maj 2005 22:31
    Marko121
    Poziom 17  

    Cytat:
    Program jest na kwarc 11.0592MHz.


    czy nie powinno to być zadeklarowane gdzieś w programie?

    Cytat:
    Czy testowałeś na programie typu terminal ?


    nie za bardzo wiem jak? może mi coś podpowiesz?
    nie wiem jak to zrobić żeby terminal podglądał i wyświetlał to co się dzieje na nim podczas komunikacji procesor -komp


    Cytat:
    Układ nawet bez podłączenia do komputera powinien po włączeniu generować sinusa 1kHz...


    hmmm.. nie ma nic na wyjściu tzn nie ma żadnego przebiegu na oscyloskopie jest tylko stałe ok 2,75V może ten at90s2313 się uszkodził? jutro sprawdzę na atmega8 bo taki mam

    0
  • #12 22 Maj 2005 22:54
    rdt
    Poziom 24  

    mam pytanko
    at90s2313 jest maxymalnie taktowany do 10 Mhz
    czy 11.059 mu nie zaszkodzi ?

    0
  • #13 22 Maj 2005 23:17
    LordBlick
    VIP Zasłużony dla elektroda

    W asemblerze nie istnieje coś takiego jak "deklaracja". Albo używasz jakiegoś rejestru i jakiś wartości, albo nie. Ale w komentarzach kodu źródłowego jest co trzeba zaznaczone. Osobiście dla wygody i elastyczności kodu przy zmianach procesorka, zegara itp. stosuję definicje stałych i kompilator mi przelicza, co potrzeba, ale nie jest to konieczne. Program terminala :
    http://www.elester-pkp.com.pl/vftppl.php?ftp=41&ftpaction=download
    Prędkośc jest 115200bps 8bit 1 bit stopu bez kontroli parzystości.
    Co do sprawności układu, jakie jest napięcie na XTAL2 ? Najlichsze mierniki pokażą połowę napięcia zasilania, znakiem czego zegar tyka. Jeśli jest inaczej, to do wymiany. Na ATmega8 trzeba poustawiać odpowiednio fusebity, aby program działał, czyli najpierw je zczytujemy i wszystki CKSEL(0-3) mają być odznaczone, a CKOPT zaznaczony. Nic innego nie ruszać bez obeznania się z notą katalogową tam jest opisane co jest do czego.
    Co do nominalnej prędkości zegara, to producent gwarantuje te 10MHz. Jak mu dać te 11% z kawałkiem więcej, też pewnie ruszy... ;) Nie powinno być z tym problemu, PIC16F84A-04 z prędkością nominalną 4MHz może iść na 12MHz, tak przynajmniej twierdzi autor picpong-a... ;)

    0
  • #14 23 Maj 2005 21:10
    Marko121
    Poziom 17  

    Witam
    :cry: :cry: :cry:
    nie ukrywam że jest mi ciężko i coraz ciężej na duszy powiem tak nie mogę strawić tego asemblera (a człowiek najbardziej szuka problemu w tym czego nie zna lub nie rozumie ) ale nauczenie się go w ciągu kilku dni to raczej nie możliwe.
    Powiem szczerze ,pomyślałem tak: - jest schemat ,jest program ,jest kod -myślę pestka
    więc podjąłem się wykonania tego projektu ,ale że nic nie przychodzi w życiu łatwo o czym się niejednokrotnie przekonałem i tym razem też schodki .
    Panowie proszę pomóżcie bo od 5 dni nic innego oprócz tego co muszę nie robię tylko zajmuje się tym prościutkim projektem i już prawie nie śpię bo czas mnie goni . Wybaczcie ale przeżywam kryzys z tym projektem już dawno nic nie dało mi tak popalić
    -dobra to tyle użalania się nad sobą powracam do tematu

    Cytat:
    Co do sprawności układu, jakie jest napięcie na XTAL2 ? Najlichsze mierniki pokażą połowę napięcia zasilania, znakiem czego zegar tyka. Jeśli jest inaczej, to do wymiany.

    to akurat sprawdziłem na samym początku przebieg na xtal2 jest na oscyloskopie i na mierniku ok. 2,37V

    pozwólcie że powrócę jeszcze do tego :
    Cytat:
    Układ nawet bez podłączenia do komputera powinien po włączeniu generować sinusa 1kHz...

    czy jesteś tego pewny Light'­I ?
    podłączyłem dzisiaj ten układ i włączyłem terminala ustawiłem jak mi podałeś
    Cytat:
    Prędkość jest 115200bps 8bit 1 bit stopu bez kontroli parzystości.

    włączyłem echo i wciskałem po kolei klawisze (bo oczywiście nie wiem co mam napisać żeby zasymulować wciśnięcie np: "<" albo ">" albo jeszcze coś innego z programu sterującego "ddscontrol" ) klawiatury obserwując co się dzieje na wyjściu podpiętego do oscyloskopu ukladu .
    I co?
    O dziwo po wciśnięciu klawisza numerycznego 4 na oscyloskopie pojawiła się sinusoida po wciśnięciu klawisza 2 już jej nie było - znowu 4 i znowu jest na wyjściu
    Po odłączeniu układu od kompa i wyłączeniu zasilania i po ponownym podłączeniu -sinusoidy nie ma , po powtórnej komunikacji z terminalem wciskam-4 i znowu jest , a więc

    układ według mnie po podłączeniu tylko do zasilania nie powinien nic generować dopiero po ustawieniu coś z kompa powinna zacząć się generacja przebiegów o tym min. świadczy zastosowanie max 603 ,który włącza zasilanie dopiero po uruchomieniu programu sterującego „ddscontrol „ bo wtedy dopiero na linii nr4 rs232 (DTR) pojawia się stan wysoki i co za tym idzie stan ten uruchamia przełącznik w max 603 ,który z kolei podaje zasilanie na procka (to są moje przemyślenia jeżeli się myle proszę o sprostowanie)

    Więc wniosek jest taki :
    1)procesor jest sprawny (zresztą wcześniej wgrałem inny program i działał)
    2)program hex. wgrałem poprawnie (co moim zdaniem nie znaczy że działa poprawnie)
    3)droga rs232 od kompa do procka jest ok. o czym świądczy komunikacja z terminalem(coś żyje)
    pytanie podstawowe:
    co może być w takim przypadku nie tak ?
    moim niedoświadczonym zdaniem program w procku albo program sterujący całym ustrojstwem, ale może się mylę bo nie potrafię tego sprawdzić (asembler) .W takiej desperacji łatwo o pomyłkę.
    Dodam że na win 2000 i 98 testuję a jak zapodalem na 95 to win się zawiesił

    pytania pomocnicze:

    1)dalej nie wiem jak ustwić terminal żeby na bieżąco podczas pracy (połączenia) kompa z układem w czasie rzeczywistym obserwować co się dzieje na terminalu rs232 tzn. żebym widział co zadaje z programu sterującego i co odpowiada procek albo przynajmniej żebym widział co wysyła program sterujący do układu po terminalu rs232 (może jestem za ciemny)
    proszę o łapotologiczne wytłumaczenie tego zagadnienia. Na pewno się przyda na potem mnie albo komuś innemu?

    2)Co mam wpisać na klawiaturze kompa żeby zasymulować z terminala to co zadaje program sterująsy?


    Naprawdę bardzo liczę na waszą pomoc

    Pozdrawiam Marek

    0
  • Pomocny post
    #15 23 Maj 2005 21:21
    McRancor
    VIP Zasłużony dla elektroda

    Musisz skołować leprzego terminala! Takiego który pozwala na makra wysyłające i posiada dwa okna, nadawcze i odbiorcze, poszukaj w internecie jakiegoś konkretnego, albo napisz na PW to wyśle Ci mój ulubiony ;)

    0
  • #16 24 Maj 2005 00:03
    LordBlick
    VIP Zasłużony dla elektroda

    Marko121 napisał:
    układ według mnie po podłączeniu tylko do zasilania nie powinien nic generować dopiero po ustawieniu coś z kompa powinna zacząć się generacja przebiegów o tym min. świadczy zastosowanie max 603 ,który włącza zasilanie dopiero po uruchomieniu programu sterującego „ddscontrol „ bo wtedy dopiero na linii nr4 rs232 (DTR) pojawia się stan wysoki i co za tym idzie stan ten uruchamia przełącznik w max 603 ,który z kolei podaje zasilanie na procka
    Pisałeś, że nie zastosowałeś MAX-a, więc o czym piszesz teraz ? W kodzie programu wyraźnie jest zaznaczone, że zaraz po resecie mikrokontrolera pojawi się sinusoida.
    Code:
          ; set sinewave output as default
    
          
          ldi      r31,high(sine)   ; setup Z pointer hi
          ldi      r30,low(sine)   ; setup Z pointer lo
          ; clear accumulator
          ldi    r29,0x00      ; clear accumulator
          ldi    r28,0x00      ; clear accumulator
          ; setup adder registers      
          ldi    r24,0x55      ; setup adder value
          ldi    r25,0x35      ; to 1 kHz
          ldi    r26,0x00      ;
    Mamy sinus 1kHz na wstępie ?
    A trudne jest tylko to, w co nie wierzymy...
    W procedurce RX_COMPLETE_INT masz dokładnie w komentarzach, co trzeba wysyłac do procesorka, aby nim sterować. Skoro jednak udało się tobie uruchomic sinusa na wyjściu, to czarów nie ma, układ jest dobrze zaprogramowany.

    0
  • #17 25 Maj 2005 00:25
    Marko121
    Poziom 17  

    Cytat:
    Pisałeś, że nie zastosowałeś MAX-a, więc o czym piszesz teraz ? W kodzie programu wyraźnie jest zaznaczone, że zaraz po resecie mikrokontrolera pojawi się sinusoida.


    Trochę może nie umiejętnie to opisałem .Rzeczywiście nie zastosowałem max-a602 ale Zastosowanie max-a w tym układzie miało właśnie na celu włączenie zasilania dla układu z chwilą uruchomienia programu sterującego a więc dlatego pomyślałem że może musi być jeszcze jakiś spełniony warunek na drodze programowej aby układ wystartował

    Dlaczego tak pomyślałem?
    Dlatego że układ po podłączeniu tylko do zasilania (bez max-a) nie generuje nic (wszystkie porty wyjściowe to 5V i właśnie to najbardziej na tym etapie mnie irytuje) dopiero po podaniu odpowiedniego znaku z terminala układ wystawia sinus
    Dlaczego tak jest ?skoro mówisz że powinien startować od włączenia zasilania?
    Cytat:

    Kod: ; set sinewave output as default

    ldi r31,high(sine) ; setup Z pointer hi
    ldi r30,low(sine) ; setup Z pointer lo
    ; clear accumulator
    ldi r29,0x00 ; clear accumulator
    ldi r28,0x00 ; clear accumulator
    ; setup adder registers
    ldi r24,0x55 ; setup adder value
    ldi r25,0x35 ; to 1 kHz
    ldi r26,0x00 ;

    Ok. zgadzam się wynika z tego że jest sinus ustawiany na wstępie ale w tym miejscu jeszcze nie jest wysyłany na port czy tak? czy się mylę?


    Przy okazji czy możesz mi objaśnić kilka linijek kodu?

    1)—co oznacza :
    .section .text (na początku w oryginalnym listingu)

    2) LOOP1:
    add r28,r24 ; 1(to wiem zawartość r24 + zaw r28 i wynik w r28)
    adc r29,r25 ; 1(to mniej więcej też tylko z jakimś przeniesieniem)
    adc r30,r26 ; 1(podobnie)
    lpm ; 3 ?
    out PORTB,r0 ; 1 ?
    rjmp LOOP1 ; 2 => 9 cycles (powrót do początku ale komętaż?)

    najbardziej interesuje mnie ten fragmęt:
    lpm ; 3 ?
    out PORTB,r0 ; 1 ?
    i co oznaczają te komentarze?
    ja myślę tak:
    po włączeniu zasilania program dochodzi do pętli loop1 i kręci się w kółko czekając na przerwanie od uarta a przy okazji jak się tak ręci to wysyła coś na portB i jeżeli to coś to jest zawartość rejestru r0 to u mnie na symulatorze avrstudio4 r0 ma ciągle i niezmiennie wartość FF (natomiast zmieniają się r28,r29 r30) a wiec jeśli w tym momencie r0 jest wysyłany na port B i ma on wartość ciągle FF to sinusoidy nie będzie tak? Czy może żle myślę? Jeśli się mylę proszę mnie poprawić

    pozdrawiam Marek

    0
  • #18 25 Maj 2005 00:48
    LordBlick
    VIP Zasłużony dla elektroda

    ad.1 dyrektywa dla kompilatora avr-as-gcc, że następne linie dotyczą pamięci programu.
    ad.2 Cyfry po komentarzach to jest ilość cykli procesora, przypadających na wykonanie danego rozkazu.
    lpm - load program memory - za pomocą rejestru Z(ZL-r30:ZH-r31), służącego do adresowania, pobierana jest wartość z pamięci programu do rejestru r0, w tym przypadku dane z tablic próbek kształtu poszczególnych przebiegów (wcześniej ZL:ZH jest ustawiana na początek tablicy. Trochę ten kod jak dla mnie jest pogmatwany, lepiej to wygląda, gdy się używa nazw symbolicznych, zdefiniowanych w C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\*def.inc(ale to jest już inny asembler, który zresztą najbardziej mi pasuje... ;) ) :

    Code:
    .def   XL   =r26
    
    .def   XH   =r27
    .def   YL   =r28
    .def   YH   =r29
    .def   ZL   =r30
    .def   ZH   =r31
    W kodzie jest opisane przeznaczenie pozostałych rejestrów :
    Code:
    ;   r28,r29,r30 is the phase accumulator
    
    ;     r24,r25,r26 is the adder value determining frequency

    0
  • #19 25 Maj 2005 11:57
    Marko121
    Poziom 17  

    Dzięki za wyjaśnienia

    zostańmy na chwile przy tym kawałku kodu :

    ; main loop
    ;
    ; r28,r29,r30 is the phase accumulator
    ; r24,r25,r26 is the adder value determining frequency
    ;
    ; add value to accumulator
    ; load byte from current table in ROM
    ; output byte to port
    ; repeat
    ;
    LOOP1:
    add r28,r24 ; 1
    adc r29,r25 ; 1
    adc r30,r26 ; 1
    lpm ; 3
    out PORTB,r0 ; 1
    rjmp LOOP1 ; 2 => 9 cycles

    jeśli dobrze zrozumiałem wyjaśnienia to rejestr r0 powinien być załadowywany wartością danej z pod adresu który jest wskazywany przez rejestry r30 i r31 a więc jeśli na symulatorze wartość rejestru r30 zmienia się od 0 do FF co 1 to w rejestrze r0 powinna pojawiać się po kolei coraz to inna wartość (następna dana z kolei z tablicy sine:) a następnie ta wartość jest wysyłana na port czy tak?

    dla jasności:
    gdy r31=0x01(bo cały czas tyle pokazuje symulator)
    i gdy r30=0x00 (r30 zmienia się od 0x00 do 0xFF wskazując kolejne dane)
    to w rejestrze r0 po wykonaniu instrukcji lpm powinna pojawić się dana o wartości 0x80
    po zwiększeniu r30 o1 i po lmp w r0 powinna znaleźć się wartość 83 itd. z tablicy sine:

    ; force table to begin at 256 byte boundary

    .org 0x100

    sine: ; 256 step sinewave table
    .db 0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae

    czy tak? Wszystko dobrze zrozumiałem?

    Bo jeśli tak to czy mógłbyś mi wyjaśnić dlaczego na symulatorze wartość rejestru r0 pozostaje ciągle stała FF?? tak jakby instrukcja lpm nie była wykonywana wcale .? a może to wina symulatora?

    pozdrawiam Marek

    0
  • #20 25 Maj 2005 13:29
    LordBlick
    VIP Zasłużony dla elektroda

    No więc tłumacząc kod na AVRStudio, nie zastanawiałem się nad takim szczegółem, że adres ładowany do ZL:ZH powinien być 2 razy wiekszy od adresu etykiety, ponieważ podstawowy rozmiar słowa rozkazowego w AVR wynosi 16bit. Ja sprawdzałem tylko, czy kompilator nie ma problemów z kodem, przyjmując, że autor projektu ten kod przetestował. Możliwe, że asembler od avr-gcc wprowadza automatycznie poprawkę na ewentualność ładowania Z-ki, a jeśli nie, to byk pochodzi od autora... ;) Teraz już powinno być dobrze, poprawiłem oba załączniki w odpowiednim poście powyżej i dołączyłem pliki obj przydatne w symulacji.
    Zastąpiłem odpowiednie fragmenty kodu używanym przeze mnie makro :

    Code:
    .macro LoadZ_LpmAddr
    
       ldi ZL, low(@0<<1) ; Load Z register low
       ldi ZH, high(@0<<1) ; Load Z register high
    .endmacro
    Jego przykładowe wywołanie :
    Code:
          LoadZ_LpmAddr sine   ; setup Z pointer
    Pozdrawiam, Daniel

    0
  • #21 26 Maj 2005 01:33
    Marko121
    Poziom 17  

    Tak to jest to dzięki Ci Light'I
    nigdy bym na to nie wpadł.
    jakie to piękne uczucie móc oglądać jak teraz pięknie przesuwają się te okienka od portu B w symulatorze ( to jak piękna melodia) szczególnie po kilku dniach wpatrywania się w nie jak były ciemne i martwe , a potem równie piękny widok przebiegu sinusoidy na ekranie oscyloskopu.

    Już byłem o krok do pełni szczęścia ,kiedy to okazało się że komunikacja po rs232 za pomocą programu „ddscontrol” jak była do kitu to dalej tak pozostała (to jak kubełek lodowatej wody wylanej na rozgrzaną głowę )

    I co ja biedny szaraczek mam teraz począć?
    Na razie nie wiem nawet o co pytać.
    Mam tylko nadzieje Light'I że nie opuścisz mnie w potrzebie i depresji.


    Pozdrawiam Marek
    :D :D :) 8O :( :( :cry:

    0
  • #22 26 Maj 2005 01:52
    LordBlick
    VIP Zasłużony dla elektroda

    1. Ustawiony w programie właściwy port, do którego się program odwołuje ?
    2. Jaki system operacyjny ?
    3. Czy na forum jest ktoś, komu udało się uruchomic ten projekt całkowicie ? Mam pewne wątpliwości... (brak skompilowanego kodu hex, brak źródeł programu sterującego)

    0
  • #23 26 Maj 2005 03:08
    Marko121
    Poziom 17  

    1)com ustawiony właściwie ( na początku nie wiedziałem gdzie trzeba nacisnąć aby ten potrt sobie w programie wybrać- prawy przycisk myszy na górnym niebieskim pasku i wybrać preferencje tam jest min. wybór comu)
    poza tym widze że jakaś komunikacja jest tylko coś przekłamuje i procek nie reaguje właściwie w zasadzie wcale nie reaguje sygnałem wyjściowym
    tylko odpowiada jakieś pierdoły do kompa (komp -układ nie mogą znależć wspólnego języka mimo że mają się w zasięgu wzroku)

    2) windows 2000 na nim cały czas testuje( wcześniej sprawdzałem na win 98 i to samo a win 95 się zawieszał)

    3)też tak myślę spotkałem się z linkami do tego generatora na forum ale wątpię żeby ktoś go uruchomił

    w chwili desperacji dzisiaj poprosiłem autora o kod .hex do procka i spytałem czy był testowany ten program. Nie wiem co z tego wyjdzie bo z angielskim u mnie krucho (translator)

    nie dawno dostałem linki od kolegi McRancor do monitora rs232 ( niestety shareware ale można coś podejrzeć ) podam może komuś się przyda:

    http://www.tucows.com/preview/244012
    http://www.tucows.com/preview/337692
    http://www.tucows.com/preview/301057
    http://www.tucows.com/preview/355297
    http://www.lammertbies.nl/comm/cable/RS-232-spy-monitor.html
    Dzięki McRancor

    Zainstalowałem serial monitor i wydaje mi się że program wysyła dobre znaki do procka tylko procek mu głupio odpowiada –ale nie jestem pewien czy tak jest Dobrze było by gdyby sprawdził to ktoś bardziej kompetentny


    Cytat:

    3. Czy na forum jest ktoś, komu udało się uruchomic ten projekt całkowicie ? Mam pewne wątpliwości... (brak skompilowanego kodu hex, brak źródeł programu sterującego)

    Light,I czy to znaczy że trzeba się poddać? Że nic nie da się zrobić?
    :cry: :cry: :cry: :cry:

    0
  • #24 26 Maj 2005 18:20
    LordBlick
    VIP Zasłużony dla elektroda

    Po co dramatyzujesz ? ;)
    Zrobić się zawsze da, tylko nie mam układu przed sobą, aby wszystko co trzeba posprawdzać. Inna kwestia, kod na ATmega8 w takiej postaci nie ma sensu, PORTB jest tam nieosiągalny w całości - PB6 i PB7 są potrzebne do oscylatora kwarcowego 11.0592MHz, a PORTD zawiera linie RxD(PD0) i TxD(PD1)... W zamian kod dla ATtiny2313 i ATmega8515. Oprócz tego usunąłem drobne błędy, więc najlepiej ściągnąć jeszcze raz... ;)
    Co do "dziwnych odpowiedzi", to przytoczę fragment procedurki :

    Code:
    send_data:
    
          push   DataByte            ; save DataByte
          ldi      DataByte, 'F'         ; flag
          rcall   send_char

          clr      DataByte            ; zero byte for 32-bit compatibility
          rcall   send_char      ; MSB

          mov      DataByte, XL
          rcall   send_char      ; high add

          mov      DataByte, AddH
          rcall   send_char      ; mid add

          mov      DataByte, AddL
          rcall   send_char      ; low add

          ldi      DataByte, 0x0a
          rcall   send_char      ; terminator
          pop      DataByte
          ret
    Jak widać najpierw wysyłane jest F, zero, potem wartości binarne, a na końcu 0x0A(10). Najlepiej te odpowiedzi oglądać w podglądzie hex, który równiez można włączyć w programie terminala, do którego podałem odsyłacz. Umożliwia on także definiowanie makroinstrukcji wywoływanych później Alt+X, gdzie X to klawisz 0-9.
    W najnowszej wersji kodu dodałem możliwość zmiany baudrate bez głębszego wnikania, gdyby były ewentualne chęci na napisanie własnego programu sterującego :
    Code:
    #define USART_BAUD   115200 //Oryginal MiniDDS baudrate
    Pozdrawiam, Daniel

    0
  • #25 27 Maj 2005 19:54
    Marko121
    Poziom 17  

    Witam
    Na początek może zapodam oryginalny plik .hex , który otrzymałem od autora projektu oto on :(na samym dole bo nie udało mi sie zamieśćić go tu:

    I co mogę powiedzieć. Załadowałem go i po włączeniu zasilania sinusoida owszem od razu się pojawia ale komunikacja niestety kuleje podobnie jak w pozostałych wcześniejszych kodach przerobionych przez Light'I, plik ten waży 4,3 KB a więc więcej niż poprzednie (chociaż nie wiem czy to ma znaczenie)

    Light'I-załadowałem ostatni soft od Ciebie i chyba coś jest nie tak bo sinusoida już po uruchomieniu układu wygląda jak przepuszczona przez mostek z prostowniczy czyli tak: (rys poniżej)
    [/img]przebieg.gif


    Wracając do układu . Udało mi się dwa razy na chyba 200 prób(na różnych softach od Light'I (pierwszym raz i ostatnim-raz) uzyskać poprawną komunikację tzn. wciskając wszystkie przyciski programu sterującego układ poprawnie odpowiadał i reagował i zadana częstotliwość po odpowiedzi układu wyświetlała się w górnym okienku sterowniczym (nie wiem jak sygnał wyjściowy reagował bo go akurat nie mierzyłem) dodam że oba przypadki zdarzyły się na różnych kompach .Jak już udało mi się nawiązać tą komunikacje to włączałem układ ,wyłączałem i program sterujący też i ta komunikacja poprawna dalej była i nie mogłem jej zachwiać , natomiast wstałem rano i podłączyłem ten sam układ i wszystko to samo
    I już nie udało mi się uzyskać prawidłowej transmisji znowu nie reaguje na przyciski funkcyjne i w górnym okienku pokazuje co innego niż zadaję (jakieś kosmiczne cyfry i nie za każdym razem w ogóle reaguje)
    Zimny lut albo nie kontakt raczej nie możliwy(sprawdzałem zmieniałem kable, comy i nic)
    Co to może być w takim razie ?
    Skąd ta 99% niepewność działania ?
    Czy może coś z resetem ? albo już sam nie wiem co?

    Pozdrawiam Marek

    0
  • #26 27 Maj 2005 22:30
    LordBlick
    VIP Zasłużony dla elektroda

    Już zdążyłem zauważyć, poprawiłem, co trzeba - był błąd w adresowaniu rejestru DDRB, którego adres jest o 1 mniejszy od PORTB, a nie większy, jak było w kodzie - układ działał na samych podciągnięciach, a nie na push-pull, stad obcinanie dolnych fragmentów sinusoidy. Z tego wszystkiego postanowiłem zbudować ten układ dla siebie, przyda się przy naprawie torów akustycznych. Przy tej okazji dam znać, jak mi poszło, ATtiny2313, kwarc i MAX232 już nabyłem, na razie nie mam pod ręką drabinki R/2R.

    0
  • #27 27 Maj 2005 23:44
    Marko121
    Poziom 17  

    Super .Cieszę się że zamierzasz wykonać sobie ten układzik –przyda ci się na pewno -ale co najważniejsze może coś się wreszcie wyjaśni

    Jeżeli chodzi o drabinkę to też na razie jej nie mam bo jakoś tak nie mogę jej nigdzie kupić
    Musiałem na razie zrobić sobie ją z oporników do testów( bo czas mnie goni), jak jej nigdzie nie kupię to zrobię z smd ,najważniejsze żeby to ustrojstwo zadziałało.

    Życzę powodzenia w budowie i pozdrawiam
    Marek

    0
  • #28 19 Lip 2005 12:13
    Marko121
    Poziom 17  

    Witam po urlopie .
    Czas zakończyć jakoś ten temat .Układ uruchomiłem i działa za każdym razem . Okazuje się że program sterujący działa tylko pod win 98 ,nie wiem dlaczego wcześniej nie działało ale jak wykasowałem plik minidds.ini ,który tworzy sobie program ( po ustawieniach comu itd. ) , po ponownych ustawieniach wszystko było i jest ok.
    Powiem jeszcze że aby program właściwie pokazywał to co się zadaje należy w ustawieniach w okienku „synthesizer frequency” wpisać odpowiednią liczbę przelicznika ja wpisałem 1,225e+006 i jest ok.

    A co u ciebie Light'I udało ci się wykonać ten układzik czy zaniechałeś budowy ?

    Jeszcze raz dziękuję za pomoc
    Pozdrawiam Marek

    0
  • Pomocny post
    #29 21 Lip 2005 22:58
    LordBlick
    VIP Zasłużony dla elektroda

    Marko121 napisał:
    A co u ciebie Light'I udało ci się wykonać ten układzik czy zaniechałeś budowy ?
    W takim kształcie jak jest to zaniechałem, a akurat mam sporo roboty, więc ten inny kształt jest odłożony na wolną chwilę, będzie on miał własny wyświetlacz oraz klawiaturę i będzie służył jako taki zgrubny generator do napraw audio.

    0
  • #30 13 Lis 2005 00:03
    Marko121
    Poziom 17  

    Układ działa pod win98 tak jak opisałem w moim ostatnim poście.
    Temat więc można zamknąć.
    Dziękuję za pomoc i pozdrawiam
    Marek

    0