• Welcome to LusoRobótica - Robótica em Português.
 

Arduino e SPI

Started by CBX, 21 de December de 2012, 16:44

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

CBX

Boas

preciso de testar um DAC, peguei no IDE do arduino para ser mais rápido e fiz o seguinte código:

#include <LiquidCrystal.h>
#include <SPI.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int SSPin = 10;


void setup() {
  lcd.begin(16, 2);
  pinMode(SSPin, OUTPUT);
  SPI.begin();
}

void loop() {
  digitalWrite(SSPin, LOW);
  SPI.transfer(11111111);
  SPI.transfer(11111111);
  digitalWrite(SSPin, HIGH);
  delay(500);
  lcd.clear();
  lcd.print(analogRead(0));
}


o output do pino MOSI deveria ser 0xFF 0xFF, mas o logic analyser diz o contrário:



já perdi aqui sei lá quantas horas de volta disto e não descubro o problema, o que é que estou a fazer mal?

rglove

Boas,
Acho que sei qual é o problema, mas não tenho a certeza...

Estás a escrever o binário em vez do número em decimal. Logo, se fizeres isso acho que tens que colocar um B antes do binário.

O arduino deve estar a interpretar 11111111 como decimal. Em binário isso é:
101010011000101011000111

A informação que estás a receber é:
11000111

Logo estás a receber os 8 primeiros bits do nr 11111111  :)

Experimenta colocar o B antes.

Cumps

CBX



como é que eu me fui esquecer do 0b  :o

ainda não testei mas deve ser isso

obrigado

rglove


CBX

#4
era isso mesmo, isto às vezes só à pancada  ;D

já agora a biblioteca liquid crystal tem alguma função para limpar só parte do ecrã?

rglove

Acho que não... Mas podes colocar o cursor onde quiseres e escrever espaços para apagar só partes.

Mas não sei, só usei lcds uma ou duas vezes :(