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

Przeportowanie programu z attiny84 na attiny85

p4trykx 03 Lut 2011 03:17 2437 5
REKLAMA
  • #1 9095645
    p4trykx
    Poziom 16  
    Na początku chciałbym zaznaczyć, że znam się na programowaniu w C tylko natomiast jeśli chodzi o mikrokontrolery to jestem początkujący.
    Wszystko zaczęło się od tego, że potrzebowałem zamiennika układu 1-wire DS2423. Jest to podwójny licznik impulsów. Niestety Maxim/Dallas już go nie produkuje ale znalazłem implementację tego licznika na uC AVR.
    https://github.com/smurfix/owslave
    Kod wynikowy ma ok. 2,3 KB więc Attiny 2313 odpada chyba żeby coś pokombinować.
    Problem jest w tym, że standardowo program kompiluje się tylko na ATTiny84 i Atmega168. Attiny84 jest trochę drogi i ciężko dostępny. Natomiast na tme.pl można dostać Atiny85 za ok 9 zł. Z tego co wyczytałem różni się od 84 ilością pinów(8 pinów a 84 ma 16) i kilkoma rejestrami.

    Patrząc na kod dokonałem kilku zmian, dzięki czemu kod się kompiluje. Generalnie ruszyłem tylko konfigurację pinów i rejestrów.
    Z grubsza skopiowałem sekcje __Attiny84__ później zmieniłem trochę makra.

    Kod się kompiluje choć to nie jest przecież gwarancją poprawności.Prosiłbym o zerknięcie na kod czy to co pozmieniałem jest prawidłowe.

    Plik ds2423.c tu po prostu skopiowałem
    
    #elif defined(__AVR_ATtiny85__) //patryk
    #define ADLARREG ADCSRB
    #define ADLARMUX 0
    

    Plik onewire.c tu też nic nie zmieniałem bo wydaje mi się, że attiny85 ma tylko portB
    
    #elif defined(__AVR_ATtiny85__)
    #define OWPIN PINB
    #define OWPORT PORTB
    #define OWDDR DDRB
    #define ONEWIREPIN 2		 // INT0
    

    plik features.h tu poczyniłem trochę zmian
    
    #ifdef __AVR_ATtiny85__
    #define F_CPU_                8000000
    
    #define TIFR0 TIFR //tu chyba jest tylko jeden taki rejestr 
    #define TIMSK0 TIMSK//jak wyżej
    #define PCIF0 PCIF
    #define PCIE0 PCIF
    
    #define IMSK GIMSK
    #define IFR GIFR
    #define ADPIN PINB //tu dla 84 było PINA ale 85 ma tylko PINB chyba
    #define ADPIN_vect PCINT0_vect
    #define ADMSK PCMSK //tez tlko jeden rejest PCMSK więc usunąłem 0 z PCMSK0
    #endif
    


    Kod oryginału jest dostępny na https://github.com/smurfix/owslave lub w załączniku. Całość z moimi zmianami w załączniku attiny85.
    Kompilować należy w ten sposób
  • REKLAMA
  • REKLAMA
  • #3 9096983
    p4trykx
    Poziom 16  
    Na razie jeszcze nie kupiłem procesora bo nie wiem czy będzie to na nim działać. Na AVR studio chyba jedyne co mogę sprawdzić to czy zliczanie będzie funkcjonować.
    Jeśli nie ma jakichś fundamentalnych przeciwwskazań, żeby to działało na Attiny85 to go zamówię i będę dalej eksperymentował. Sześć pinów wej/wyj powinno mi wystarczyć.
  • REKLAMA
  • #4 9097520
    asembler
    Poziom 32  
    Spokojnie kupuj a jak nie to przerobimy na ASM i attiny13 za 2zł.
  • REKLAMA
  • #5 9316001
    bedy01
    Poziom 10  
    No i jak, udało się uruchomić na którymś z atiny?
REKLAMA