Go Down

Topic: (Résolu) Attiny84a SPI ( nRf24l01 ) et ISP (Read 826 times) previous topic - next topic

wtdo

Feb 04, 2015, 11:52 am Last Edit: Feb 06, 2015, 06:57 am by wtdo
Bonjour à tous.

j'aurai besoin à nouveau d'un petit coup de main pour comprendre un truc.

J'ai fait un montage très simple composé d'un Atmega328, un régulateur LDO 3,3v, une sonde DS18B20 et un module nRf24l01. Tout marche bien pas de soucis.

A présent, j'essaye de faire la même chose avec un Attiny84a mais impossible de faire fonctionner le module nRF24l01 via le SPI.
J'ai lu beaucoup de doc et j'ai cru comprendre qu'il y avait une confusion quant aux PINs communément appelées MISO MOSI et SCK et que ces dernières ne servaient uniquement à programmer le uC (ISP) et c'est tout.

Seulement dans la datasheet :


Donc là j'y perds un peu mon latin...

- Est-il possible d'utiliser la liaison SPI pour communiquer par exemple avec le module nRF24l01
- Sur le principe sur suis bon ? :



nRF24l01                   Attiny84a

 MOSI    ============> Pin 7 (MOSI)
 MISO    ============> Pin 8 (MISO)
 SCK      ============> Pin 9 (SCK)
 CE        ============> Pin 6
 CSN      ============> Pin 5


Merci d'avance

icare

Bonjour,
As-tu regardé ce lien.
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

wtdo

Oui bien sûr, c'est lui qui m'a embrouillé en premier d'ailleurs :-)

Le truc c'est qu'il applique des modifs dans une ancienne version de la librairie, qui semble être corrigée aujourd'hui.
Ou alors j'ai rien compris

wtdo

Une autre page où il est question de la confusion entre les broches SPI et ISP :
http://www.caron.ws/index.html?120ComsansfilAttiny84.html

Je cite :
Quote
// This USI was defined in SPI85.cpp
// Not to be confused with SPI (MOSI/MISO) used by ICSP pins
// Refer to page 61 of attiny84 datahseet
//
//#define USI-DO  5
//#define USI-DI  4
//#define USCK   6

#define CE    8   
#define CSN   7

wtdo

En fait, je crois que je suis en train de comprendre où est la confusion... Les Pin 7, 8 et 9 (Mosi, Miso et Sck) ne peuvent être utilisées que pour la programmation du uC (ie SPI esclave).
On ne peut pas configurer le bouzin comme "SPI maître".
Par contre, on peut utiliser le protocole USI pour simuler le SPI...

Bon, je ne dis pas que ça va être facile, mais au moins c'est plus clair.
Je suis désolé, ça fait 15 jours que je cherche, et il suffit que je poste ma question pour commencer à comprendre...

Je vais essayer de voir si il existe des librairies faisant cela.



Quote
Although these chips have pins named after SPI functions (SCK, MISO, MOSI) they are primarily for programming the chip over SPI, not for use in the SPI master role, to control other devices. However USI (for Universal Serial Interface), which can be used to implement SPI, is provided. In principle, therefore, it should be possible to talk to an nrf24l01 radio from an ATtiny, and it turns out by forking the Mirf library, it has been done.

wtdo

Personne n'a jamais fait joujou avec cette bestiole alors ?

icare

Bonjour,
Si, je l'utilise pour commander des interfaces I2C
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

wtdo

Bon, alors ça y est, j'y suis parvenu :-)
Donc au cas où ça puisse dépanner quelqu'un :

J'ai utilisé la librairie de Stanley Seow : https://github.com/stanleyseow/arduino-nrf24l01/

Ensuite, j'ai connecté :

la Pin MISO du module nRf24l01 sur la pin 7 (MOSI) de l'ATtiny84
la Pin MOSI du module nRf24l01 sur la pin 8 (MISO) de l'ATtiny84
la Pin SCK du module nRf24l01 sur la pin 9 (SCK) de l'ATtiny84
la Pin CE du module nRf24l01 sur la pin 5 (D2) de l'ATtiny84
la Pin CSN du module nRf24l01 sur la pin 6 (D3) de l'ATtiny84

Et ça marche :-)
Mes données transitent bien comme il faut

En fait mon erreur venait du fait que je branchais MISO sur MISO et MOSI sur MOSI....

@++

Go Up