MAX31855 a SW SPI

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

MAX31855 a SW SPI

Príspevok od používateľa dan21 » 28 Dec 2017, 10:58

Zdravim,
postavil som si pajkovacku podla http://paja-trb.cz/konstrukce/mikropajka_2011.html . Som s nou spokojny ale chcem si tam dorobit nejake veci. Uz na zaciatku som nezohnal MAX 6675 a tak som ho nahradil MAX31855K. Original FW je pisany v bascome. Kedze v tom nemienim programovat, chcem si to prepisat do c (c++, asm ....). Tu nastava problem. Metoda na nacitanie teploty z MAX31855 v bascome funguje aj napriek tomu ze tento obvod je na 3v3 a ostatne obvody (MCU, Display) su na 5V. Pokusal som sa to prepisat do c a nic. Skusal som aj nejake zdrojaky z netu a stale mi to vracia 0. Trapim sa s tym uz druhy den. Nema niekto napad ?
Prikladm kus kodu (z netu) kde sa nacitava hodnota.
[code] int bitCount;
unsigned long data;
// Clear data
data = 0;

// Select the MAX31855 chip
//digitalWrite(cs, LOW);
PORTB &= ~(1 << cs);
_delay_us(50);

// Shift in 32-bit of data
for (bitCount = 31; bitCount >= 0; bitCount--)
{
//digitalWrite(sck, HIGH);
PORTB |= (1 << sck);
_delay_us(1);

// If data bit is high
//if (digitalRead(so))
if (PINB & (1 << so))
{
// Need to type cast data type to unsigned long, else compiler will
// truncate to 16-bit
data |= ((unsigned long)1 << bitCount);
}

//digitalWrite(sck, LOW);
PORTB &= ~(1 << sck);
_delay_us(1);
}

// Deselect MAX31855 chip
//digitalWrite(cs, HIGH);
PORTB |= (1 << cs);
_delay_us(500);

return(data);
[/code]

pozeral som to aj v datasheete a jedine co ma napada je problem v casovani. MCU mi bezi na 12MHz. Ci to nebude moc rychle ..
Diky
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: MAX31855 a SW SPI

Príspevok od používateľa peterple » 28 Dec 2017, 23:36

Program je síce neefektívny, ale chybu v nôm nevidím. Typujem že ani časovaním to nebude. Veď tam máš všade delay tak pridaj ak si myslíš že to pomôže. Toto je zase na pozretie skopom alebo analyzátorom.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: MAX31855 a SW SPI

Príspevok od používateľa dan21 » 28 Dec 2017, 23:56

HW SPI piny mam uz obsadene, tak musim ist cez SW SPI. Uz sa mi to nejako podarilo rozchodit, ale stale mi vracia chybu
short-circuited to GND aj ked nemam zapojene pero :-)
Neviem ci este na tom stravim nejaky cas. Mozno neskorsie. Dam to na policku oddychnut :-)
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: MAX31855 a SW SPI

Príspevok od používateľa peterple » 29 Dec 2017, 13:51

Nemyslel som hneď na hw riešenie. Ale ten program sám o sebe je napísaný neefektívne. Vykonáva sa tam strašne veľa zbytočných rotácií.
Pre HW riešenie tiež nevidím problém na jedno SPI rozhranie môže byť aj viac zariadení. Veď sa dajú povoľovať blokovať pomocou CS pinu.
A v čom bol teda problém? Keď to už funguje.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď