piła na wyjściu AVR?

Problem jak zwykle pewnie banalny ale wymiękłem :P Na wyjściu z AVRa (MEGA162), gdzie powinienem mieć piękny sygnał zegarowy dla PGA2310 po software'owym SPI ale chwilowo jest nic niepodłączone mam cś takiego:

formatting link
z którego to wychodzi (dolna połówka portu C) zainicjowany poprawnie, zresztą wcześniej działało to i dawało elegancki przebieg a w kodzie nic się nie zmieniło. Procek zmieniony, dalej to samo. Nic też nie wskazuje na jakąś globalną usterkę AVRa tudzież oscyloskopu bo przebieg z wyjścia TXD jest elegancki, prostokątny. Zgłupiałem do reszty

/
Reply to
badworm
Loading thread data ...

Powitanko,

A z jakims obciazeniem? Bo wyglada, jakby jakas pojemnosc sie rozladowywala nie majac za bardzo przez co.

Pozdroofka, Pawel Chorzempa

Reply to
Pawel O'Pajak

W dniu 2012-11-19 23:25, badworm pisze:

Jesteś pewien, że to ten sam wsad procesora? Mnie to wygląda, że port jest ustawiony na wejście(DDRC dla tego bitu=0), a rejestrem danych kluczujesz między pull-up a Hi-z.

Pozdrawiam, Paweł

Reply to
Paweł Hadam

Wygląda jakby "w dół" sygnał był ciągnięty tylko jakimś pull-down. Po mojemu zamienione DDR i PORT.

Reply to
Michoo

Dnia Tue, 20 Nov 2012 17:22:56 +0100, Michoo napisał(a):

Ok, znalazłem rozwiązanie, nie trafiłeś choć byłeś blisko. Najpierw miałem coś takiego: DDR(SPI_PORT)=1<<SPI_CS | 1<<SPI_SCK | 1<<SPI_MOSI; a kilka linijek dalej DDR(MUTE_PORT)=1<<MUTE_OUT; przy czym SPI_PORT i MUTE_PORT to to samo. Zebranie tego w jeden wiersz: DDR(SPI_PORT)=1<<SPI_CS | 1<<SPI_SCK | 1<<SPI_MOSI | 1<<MUTE_OUT; rozwiązało problem. Dzięki za podpowiedź, tak coś czułem, że piny odpowiedzialne za soft-spi mogą pracować jako wejścia ale nie mogłem znaleźć gdzie robię błąd.

Reply to
badworm

Na przyszłość imo lepiej zrobić makra pokroju SET_BITS(port,bits) port|=bits CLEAR_BITS(port,bits) port&=!(bits) TOGGLE_BITS(port,bits) port^=bits

mniejsza szansa, ze się operator = gdzieś "omsknie".

Reply to
Michoo

Tylda, nie wykrzyknik.

Reply to
shg

Zgadza się. &=~ Palec mi się omsknął.

Reply to
Michoo

Z ciekawości - wiesz (Ty albo ktoś), dlaczego akurat tak wygląda wykres? Na moje oko to właśnie dla Hi-Z powinny być szumy i jakieś piły z pinów obok, a dla pull-up powinna być stabilna jedynka. Na tym RIGOL-u masz to zainwertowane?

Swoją drogą (1<<bit), w avr/io.h masz makro _BV(), IMO programy wtedy są czytelniejsze.

Reply to
Adam Wysocki

"Jedynka" robiona przez pull-up właśnie jest stabilna, widać że narasta bardzo szybko. Za to Hi-Z na porcie to tak na prawdę pull-down przez sondę oscyloskopu (10MOhm?). Pojemności układu i samej sondy rozładowują się wtedy dłużej niż trwa naładowanie przez pull-up. To dlatego przebieg nie schodzi do zera - te zęby to nie "popsuta" jedynka, tam powinna być seria impulsów 1,0,1,0...

Pozdrawiam, Paweł

Reply to
Paweł Hadam

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.