Porting della libreria SoftModem su attiny85

Buon giorno a tutti, ho visto con quanto entusiasmo è stato trattato lo sviluppo su attiny85 e volevo tentare il porting della libreria softmodem realizzata da arms22 (Google Code Archive - Long-term storage for Google Code Project Hosting.) per attiny85.
Per ora non ho ancora un attiny85 sotto mano (mi arriveranno entro la fine della settimana) ma mi sono messo a modificare un po' di codice.
Il problema nasce dal fatto che la libreria usa direttamente le chiamate ai registri sia del timer sia dei comparatori e, mentre nel caso del arduino uno/mega ecc questo non da problemi dato che usa il counter 2, nel caso del tiny il counter2 non è presente.
Dato che non vorrei usare il counter0 in quanto poi non avrei più un counter da usare, mi piacerebbe usare il counter1 ma alcuni registri non sono disponibili (TIMSK1,TCCR1A,TCCR1B ecc).
Qualcuno ha qualche suggerimento o considera la cosa fattibile?

Il timer 2 degli Atmega328 è un timer a 16 8 bit. Sui Tiny il timer 0 è a 8 bit mentre il timer 1 è a 16, però puoi spostare le funzioni temporali delay e millis sul timer 1, è ad esempio una cosa che faccio già io sulla swRTC. In questo modo hai il timer 0 del Tiny ad 8 bit libero.

Buona idea, grazie che mi hai fatto notare ho paura che mi servano 16 bit =(

A tale scopo esiste nel core Tiny un file denominato core_build_options.h, scorrendolo trovi l'opzione per spostare le funzioni temporali sul timer 1.

Grazie della dritta e secondo il file che mi hai suggerito di guardare le funzioni temporali sono già sul 1 quindi posso usare tranquillamente lo 0.

#if defined( __AVR_ATtiny25__ ) || defined( __AVR_ATtiny45__ ) || defined( __AVR_ATtiny85__ )
#define __AVR_ATtinyX5__
#endif

#if defined( __AVR_ATtinyX5__ )

/*
  For various reasons, Timer 1 is a better choice for the millis timer on the
  '85 processor.
*/
#define TIMER_TO_USE_FOR_MILLIS                   1

/*
  If the following is true (non-zero) there will be two phase-correct PWM 
  pins and one fast PWM pin.  If false there will be one phase-correct PWM 
  pin and two fast PWM pins.
*/
#define FAVOR_PHASE_CORRECT_PWM                   1

/*
  Tone goes on whichever timer was not used for millis.
*/
#if TIMER_TO_USE_FOR_MILLIS == 1
#define TIMER_TO_USE_FOR_TONE                     0
#else
#define TIMER_TO_USE_FOR_TONE                     1
#endif

#define HAVE_ADC                                  1

#define DEFAULT_TO_TINY_DEBUG_SERIAL              1

#endif

L'ultima cosa da modificare sono i pin tx e rx che io ho messo 0 e 1, in attesa dell'arrivo dei attiny qui c'è la libreria:

Ciao!
ho provato ad utilizzare la libreria con ide 1 e 0022 con attiny85, ma non va.
hai qualche consiglio da dare?

Come avrai potuto leggere, la lib non è compatibile con l'Attiny85. Bisogna vedere se l1q1d ha già finito il porting.

niko23:
Ciao!

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Ma te li becchi tutti, eh? :stuck_out_tongue_closed_eyes:
Basta che arrivino qui e gli chiedi i documenti :stuck_out_tongue_closed_eyes:

Fatto! Scusate :slight_smile:
Comunque ho usato la lib e non va. Mi chiedevo se qualcuno potesse darmi qualche consiglio su come implementarla.

niko23:
ho usato la lib e non va.

Quella originale non può andare, perché sfrutta periferiche presenti solo nell'HW dell'Atmega328.

Mi chiedevo se qualcuno potesse darmi qualche consiglio su come implementarla.

Come ti ho già detto, aspettando che l1q1d completi il porting. Oppure farti il porting tu stesso. Non vedo altre alternative. Contattalo via PM/mail e senti a che punto è.

Lo sviluppo è fermo.
--> GitHub - l1q1d/SoftModem-for-attiny85

leo72:
Basta che arrivino qui e gli chiedi i documenti :stuck_out_tongue_closed_eyes:

Tocca dare in dotazione a Nid paletta, distintivo e lampeggiante blu con sirena :grin:

PaoloP:
Lo sviluppo è fermo.
--> GitHub - l1q1d/SoftModem-for-attiny85

Ed oltretutto l'utente l1q1d non si collega dal 19/7/2012... :cold_sweat: