Reading the local temperature sensor on the AMC6821 gives around 80-90C. This is immediately after power on, so the AMC6821 should be basically at room temperature, and using a thermal camera shows the AMC6821 is indeed around room temperature.
Also, the value jumps around a lot - perhaps 8 degrees between two readings a second or so apart.
All other reads and writes to the AMC6821 have the expected results.
Are there any software settings that could possibly cause this behavior? The configuration registers are set as shown below:
/* Fan configuration registers*/ // Default: 11010100 #define CONFIG1 0b01101001 // |||||||| // |||||||\- START (Enables temperature and speed monitoring) // ||||||\-- INT-EN (Enables interrupt from n_SMBALERT pin) // |||||\--- FANIE (Fan RPM interrupt enable) // ||||\---- PWMINV (0: active low PWM. 1: active high PWM) // |||\----- FAN-Fault-EN (Enables n_FAN-FAULT output) // |\\------ FDRC[0:1] (00: DCY ctrl. 01: RPM ctrl. 10: remote temp ctrl. 11: local/remote temp ctrl) // \-------- THERMOVIE (Enables THERM interrupt) // Default: 00111101 #define CONFIG2 0b00000111 // |||||||| // |||||||\- PWM-EN (Enables pwm output) // ||||||\-- TACH-MODE (0: For fans where power is PWM'd. 1: For fans where power is constant and PWM is a control signal) // |||||\--- TACH-EN (Enable TACH) // ||||\---- RTFIE (Remote temp sensor failure interrupt enable) // |||\----- LTOIE (Local temperature interrupt enable bit) // ||\------ RTOIE (Remote temperature interrupt enable bit) // |\------- PSVIE (LPSV interrupt enable) // \-------- RST (Write 1 to reset device) // Default: 10000010 #define CONFIG3 0b10000010 // |||||||| // ||||\\\\- Part rev number (Read only, read back 0010) // |\\\----- Reserved (Read only) // \-------- THERM-FAN-EN (Forces fan to 100% DCY under overtemp conditions) // Default: 00001000 #define CONFIG4 0b10001000 // |||||||| // ||||\\\\- Reserved (Read back 1000) // |||\----- OVREN (Enable n_OVR pin) // ||\------ TACH-FAST (0: Tach updates at 1Hz. 1: tach updates at 4Hz) // |\------- PSPR (Fan tach output pulses per revolution. 0: 2 PPR. 1: 4 PPR) // \-------- MODE (Must write 1 to this bit) // Default: 00011101 #define FANCHAR 0b00011101 // |||||||| // |||||\\\- STIME (Spin up time. [0.2, 0.4, 0.6, 0.8, 1, 2, 4, 8] seconds. 0b101 = 2 seconds.) // ||\\\---- PWM (PWM frequency. [1, 10, 20, 25, 30, 40, 40, 40] kHz. 0b011 = 25kHz)) // |\------- Reserved // \-------- FSPD (0: Fan spin up enabled. 1: disabled.) // Default: 01010010 #define DCYRAMP 0b10010010 // |||||||| // ||||||\\- THRE (Duty cycle change threshold. Only used in temp control mode.) // |||\\\--- RATE (Duty cycle update rate. Ignored in RPM control mode - use TACH-FAST instead.) // |\\------ STEP (Max DCY step size, out of 256. [1, 2, 4, 8] counts.) // \-------- RAMPE (Ramp enable. If disabled, new duty cycles take effect immediately. Ignored (forced on) in rpm ctrl mode)