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

SPI BASCOM AVR – błąd 46 przy przypisaniu do SPDR, jak poprawnie wysłać bajt?

MADevil 09 Kwi 2008 19:47 2604 7
REKLAMA
  • #1 5012268
    MADevil
    Poziom 18  
    Posty: 363
    Pomógł: 1
    Ocena: 25
    Hej,

    Mam problem z obsługą SPI w Bascom AVR.
    Próbowałem wykorzystać kod z tego tematu: https://www.elektroda.pl/rtvforum/topic278055.html
    ale się nie kompiluje.

    
    Declare Sub Write_spi(_bajt As Byte) 
    Config Spi = Hard , Master = Yes , Noss = 0 , Clockrate = 16 , Interrupt = Off , Data Order = Msb , Phase = 1 
    Cs Alias Portb.2 
    
    Spiinit 
    
    Sub Write_spi(_bajt As Byte) 
       Cs = 0 
       Spdr = _bajt 
       Gosub _spi_wait 
       Cs = 1 
    End Sub 
    
    _spi_wait: 
       sbis SPSR,SPIF 
       rjmp _spi_Wait 
    Return
    



    błąd:
    
    Error : 46    Line :   9     Assignment error [SPDR: 0   _BAJT: 2]  


    Wiecie może o co biega?
  • REKLAMA
  • #2 5013943
    11111olo
    Poziom 42  
    Posty: 13609
    Pomógł: 1
    Ocena: 793
    Błąd 46 oznacza BŁĘDNE PRZYPISANIE. Może nie ustawiłeś odpowiedniego procka??
  • REKLAMA
  • #3 5016086
    MADevil
    Poziom 18  
    Posty: 363
    Pomógł: 1
    Ocena: 25
    W ustawieniach "ATtiny2313" jak byk.



    ********* dodane ****************

    ok, zaczynam kapować, jak dałem innego proca, to się kompiluje, znaczy dla mojego jest to inny rejestr? Bo przecież ma SPI....
  • #4 5016267
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Ale nie ma rejestru SPDR, powyższy kod napisany został przecież dla Mega8 a nie tiny2313.
  • REKLAMA
  • #5 5016302
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    Ściśle rzecz biorąc ATtiny2313 ma moduł USI, który może pracować jako SPI, ale trzeba go do tego skonfigurować. Nie znam Bascoma, więc nie wiem, czy zrobi to za Ciebie.
  • #6 5020191
    MADevil
    Poziom 18  
    Posty: 363
    Pomógł: 1
    Ocena: 25
    To może zapytam nieco inaczej: jak w Bascomie wygodnie wysylać szeregowo dane na ATtiny2313? Potrzebne mi to do sterowania LCD 7seg podłączonym pod 4 rejestry przesuwne.
  • REKLAMA
  • #7 5020931
    11111olo
    Poziom 42  
    Posty: 13609
    Pomógł: 1
    Ocena: 793
    Może spróbuj na kostkach 4094.
  • #8 5021345
    MADevil
    Poziom 18  
    Posty: 363
    Pomógł: 1
    Ocena: 25
    11111olo napisał:
    Może spróbuj na kostkach 4094.


    Nieno, układ wyświetlacza już mam nawet uruchomiony (wszystkie segmenty się pięknie pokazują), teraz potrzebna mi jest tylko jakaś wygodna procedurka wyświetlająca, czyli szeregowe wysyłanie 4 bajtów po zdekodowaniu syfry na bajt ją oznaczający.

Podsumowanie tematu

✨ Problem dotyczy błędu kompilacji w Bascom AVR przy próbie przypisania wartości do rejestru SPDR na mikrokontrolerze ATtiny2313. Błąd 46 oznacza nieprawidłowe przypisanie, co wynika z braku rejestru SPDR w tym układzie. Kod, który działa dla ATmega8, nie jest kompatybilny z ATtiny2313, ponieważ ten ostatni nie posiada dedykowanego rejestru SPI, lecz moduł USI, który wymaga innej konfiguracji do pracy jako SPI. W Bascom AVR konieczne jest odpowiednie skonfigurowanie USI lub zastosowanie alternatywnych metod przesyłania danych szeregowo, np. do sterowania wyświetlaczem 7-segmentowym przez rejestry przesuwne. Dyskusja sugeruje, że dla ATtiny2313 nie można bezpośrednio używać rejestru SPDR, a do wygodnego wysyłania danych szeregowo potrzebne są specjalne procedury lub inne układy, np. 4094.
Wygenerowane przez model językowy.
REKLAMA