Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Soft SPI avec XC8
Soft SPI avec XC8
- paulfjujo
Expert- Messages : 2600
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Bruno,
la question est Software SPI Hardware
ou SPI Software ( bit bang) ?
Pour quel PIC ?
sinon un bon morceau de discussion sur ce sujetICI
OLED GC9A01 et SPI Hardw 18F27K42
ou
LCD OLED 1,3" grafique 128 x64 , PIC 18F26K22
utiliser l'outil MPLAB MCC permet de dégrossir (avec selection Ressources SPI)
mais inclus énormement de code dormant ... beaucoup plus que nécessaire.
la question est Software SPI Hardware
ou SPI Software ( bit bang) ?
Pour quel PIC ?
sinon un bon morceau de discussion sur ce sujetICI
OLED GC9A01 et SPI Hardw 18F27K42
ou
LCD OLED 1,3" grafique 128 x64 , PIC 18F26K22
utiliser l'outil MPLAB MCC permet de dégrossir (avec selection Ressources SPI)
mais inclus énormement de code dormant ... beaucoup plus que nécessaire.
Soft SPI avec XC8
Soft SPI avec XC8
- paulfjujo
Expert- Messages : 2600
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
non testée personellement
et la version asm de tempsX ? à transposer en C
Code : Tout sélectionner
*
Software SPI library functions
*/
#ifndef softwareSPI_h
#define softwareSPI_h
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 8000000
/*#define SCK RC3
#define MOSI RC5
#define MISO RC4*/
#define SCK RA0
#define MOSI RA1
#define MISO RA2
unsigned char writeSPIByte(unsigned char transmit);
int writeSPIWord(unsigned short int setting);
int writeSPI24bits(unsigned short long setting);
int readSPIWord();
unsigned char readSPIByte();
#endif
Code : Tout sélectionner
/*
Software SPI library functions - currently only works in mode 1 used for 25AA** EEPROM
*/
#include <xc.h>
#include "softwareSPI.h"
unsigned char writeSPIByte(unsigned char transmit){
unsigned char received = 0;
unsigned char bits = 8;
unsigned char tmpbit = 0;
SCK = 0;
//make the transmission
unsigned char mask = 0x80; //Initialize to write and read bit 7
unsigned char ret = 0; //Initialize read byte with 0
do{
//Clock out current bit onto SPI Out line
if (transmit & mask)
MOSI = 1;
else
MOSI = 0;
SCK = 1; //Set SPI Clock line
if (MISO)
ret |= mask; //Read current bit fromSPI In line
__delay_us(1); //Ensure minimum delay of 500nS between SPI Clock high and SPI Clock Low
SCK = 0; //Set SPI Clock line
mask = mask >> 1; //Shift mask so that next bit is written and read from SPI lines
__delay_us(1); //Ensure minimum delay of 1000ns between bits
}while (mask != 0);
return ret;
}
int writeSPIWord(unsigned short int setting)
{
int data;
unsigned char b1, b2;
b1 = writeSPIByte(setting >> 8);
b2 = writeSPIByte(setting);
data = b1 << 8 | b2;
__delay_us(50);
return data;
}
int writeSPI24bits(unsigned short long setting)
{
unsigned short long data;
unsigned char b1, b2, b3;
b1 = writeSPIByte(setting >> (unsigned short long)16);
b2 = writeSPIByte(setting >> 8);
b3 = writeSPIByte(setting);
data = (unsigned short long)b1 << (unsigned short long)16 | b2 << 8 | b3;
__delay_us(50);
return data;
}
int readSPIWord(){
int data;
unsigned char b1, b2;
b1 = writeSPIByte(0x00);
b2 = writeSPIByte(0x00);
data = b1 << 8 | b2;
return data;
}
unsigned char readSPIByte(){
unsigned char data;
data = writeSPIByte(0x00);
return data;
}
et la version asm de tempsX ? à transposer en C
Qui est en ligne
Utilisateurs parcourant ce forum : gwion et 4 invités