MAX31855 a SW SPI
Napísané: 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
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