logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Komunikacja Atmega32 i ISD4004

alexiel 26 Lis 2009 19:09 1602 5
REKLAMA
  • #1 7312199
    alexiel
    Poziom 15  
    Witam szanownych kolegów, zwracam się do Was z prośbą, ponieważ zawsze mogłem na Was liczyć.
    Mam problem z komunikowaniem się atmegi z ISD4004 po SPI programowym, kiedyś bez żadnych problemów mogłem sterować ISD małym atmelem AT89C2051 przy takiej konfiguracji

    Config SPI = SOFT, DIN = P1.0 , DOUT = P1.1, CS = P1.2, CLK = P1.3
    SPIINIT
    SPIOUT var , 1        

    i wszystko chodziło bez pudła, teraz musiałem użyć atmegi i pojawił się problem,
    używam programowej komunikacji po SPI i
    Config SPI = SOFT, DIN = Pinc.3 , DOUT = Portc.2, SS = Portc.4, CLK = Portc.5


    ISD jest głuchy

    Macie może jakieś pomysły?
  • REKLAMA
  • #2 7315228
    Freddy
    Poziom 43  
    Dlaczego nie korzystasz z helpa kolego ?
    
    CONFIG SPI = SOFT, DIN = PIN, DOUT = PIN , SS = PIN|NONE, CLOCK = PIN , SPIIN=value
    
  • REKLAMA
  • #3 7326475
    alexiel
    Poziom 15  
    Freddy napisał:
    Dlaczego nie korzystasz z helpa kolego ?
    
    CONFIG SPI = SOFT, DIN = PIN, DOUT = PIN , SS = PIN|NONE, CLOCK = PIN , SPIIN=value
    


    Korzystałem z helpa, ale u mnie w konfiguracji SOFT nie miałem parametru SPIIN=value

    spróbuje wpisać tą konfigurację i zobaczę czy działa. Po za tym pomierzyłem przebiegi i wychodzi mi że na atmedze są szybsze przebiegi i to prawie dwukrotnie chociaż w datasheet ISD4004 sygnał CLK dopuszcza 1MHz, a mierząc na atmedze miałem około 500kHz tak więc powinien się wyrobić czyli jeszcze coś nie tak jest.
  • REKLAMA
  • #4 7326702
    Freddy
    Poziom 43  
    ALe jest CLOCK, a nie tak jak Ty wpisałeś CLK
  • REKLAMA
  • #5 7326774
    alexiel
    Poziom 15  
    Freddy napisał:
    ALe jest CLOCK, a nie tak jak Ty wpisałeś CLK




    Masz kolego racje, ale to tylko literówka. W każdym razie najważniejsze że znalazłem błąd.
    Piszę bo może ktoś będzie miał podobny problem i zaoszczędzi dużo pracy i czasu.
    Wyjaśnię na przykładzie
    chodzi o ISD4004 jest tam komenda np.
    POWERUP 00100XXX

    korzystając z atmela i wysyłając instrukcję
    
    spiuot, &B00100000
    

    Bascom 8051 wysyłał instrukcję od młodszego bitu, a bascom AVR wysyłał od najstarszego bitu i tu był błąd przy takim zapisie
    
    spiuot, &B00000100
    


    ISD 4004 ruszył, dotyczy to tylko konfiguracji SOFT bo w HARD można to ustawić.
    Mam nadzieje że komuś się to przyda, dziękuje i pozdrawiam
    alexiel
  • #6 7331153
    Freddy
    Poziom 43  
    :) to dobrze. Kolejny dowód na to, że trzeba czytać dokumentacje.
REKLAMA