programmare 2 uscite PWM su UNO+Eth shield

Salve a tutti, premesso che non sono un esperto, ma mi pare di aver guardato tutto quello che da solo potevo capire, ho il seguente problema:
Sto sviluppando un piccolo ricevitore radio controllato con Arduino.

  • ho un Arduino Uno rev.2 con sopra una Ethernet shield con slot per microSD (non usato ora nel progetto, ma lo sarà più avanti).
  • devo mandare su 2 distinti pin, 2 PWM con duty cicle indipendente
  • da quel che ho letto nella pagine del sito Arduino, posso usare l'istruzione analog.write(pin,pwm) sui pin 3,5,6,9,10,11 se non già usati da altre funzioni/interfaccie
  • il pin 5 (T1) lo uso come ingresso per un segnale digitale di cui leggo la frequenza con la libreria FreqCounter.h
  • il pin 3 mi risulta usato dalla shield ethernet, così come i pin 0,1,2,4,10,14,15
  • "liberi" per il PWM mi rimangono quindi i 6,9,11

Purtroppo però, solo il pin 6 funziona. Se programmo il 9 o l'11 non esce nulla, questo anche con il UNO senza shield

Cosa sto sbagliando? Come potrei risolvere?

Grazie infinite.
Pierluigi

#include <FreqCounter.h>

// ingresso frequenza sul pin digitale 5
// ethernet shield con SD riserva pin 4,11,12,13

const short pwm1=9; // pin 9 è il PWM dei 8 MSB
const short pwm2=6; // pin 6 è il pwm dei 8 LSB

long int frq; //frequenza letta dall'ingresso
long int IF=10700000; // valore della prima IF del ricevitore
const short prescaler=8; // divisione del prescaler esterno
const long int fastro1=25610000; // astro1 = prima frequenza radiostronomia in HF
const long int fastro2=13385000; // astro2 = seconda frequenza radioastonomia in HF
long int OLnow; // frequenza corrente dell'oscillatore locale
long int RXnow; // frequenza corrente di ricezione
long int errore=0; // differenza di frequenza fra attuale e desiderata

int pwmh; // contiene gli 8 bit più significativi del PWM d'uscita
int pwml; // contiene gli 8 bit meno significativi del PWM d'uscita

float Vastro1=0.2035; // tensione input VCO nominale per rx frequenza fastro1
// float Vastro2=3; // tensione input VCO nominale per rx frequenza fastro2

int bitbase1=Vastro165535/5; // bit di PWM totali (risoluzione 16) del feed forward tensione VCO a freq. astro1
// int bitbase2=Vastro2
65535/5; // bit di PWM totali (risoluzione 16) del feed forward tensione VCO a freq. astro1

void setup() {
Serial.begin(9600); // connect to the serial port
Serial.println("Frequency Counter");
}

void loop() {

FreqCounter::f_comp= 5; // Set compensation
FreqCounter::start(1000); // Start counting with gatetime of 100ms
while (FreqCounter::f_ready == 0) // wait until counter ready

frq=FreqCounter::f_freq; // read result
OLnow= frq*prescaler; // calcolo frequenza OL considerando il prescaler esterno
RXnow= OLnow-IF; //calcolo frequenza rx considerando OL e IF
errore= RXnow-fastro1; //calcolo errore di sintonia

pwmh= bitbase1/256;
pwml= bitbase1-256*pwmh;

// analogWrite(pwm1, pwmh);
// analogWrite(pwm2, pwml);

analogWrite(pwm1,100);
analogWrite(pwm2, 200);

Serial.print("bitbase1= ");
Serial.print(bitbase1);
Serial.print(" pwmh= ");
Serial.print(pwmh);
Serial.print(" pwml ");
Serial.print(pwml);
Serial.print(" frq= ");
Serial.print(frq);
Serial.print(" OLnow= ");
Serial.print(OLnow);
Serial.print(" RXnow= ");
Serial.print(RXnow);
Serial.print(" Errore= ");
Serial.println(errore);
delay(20);
}