QUOTE (kennykiller @ May 3 2012, 10:29)

вот основной кусок
Из этого куска не видно, где и что вы пишете в регистры OCR.
QUOTE (kennykiller @ May 3 2012, 10:29)

1. Как получить еще 2 ШИМ? Пробовал через TCCR2A и TCCR2B как написано в даташите не получатся, и на каких вообще выходах должны быть эти 2 ШИМа?
Согласно документации - на выводах PB3 и PD3.
QUOTE (kennykiller @ May 3 2012, 10:29)

2. Почему на выходах PB1 и PB2 напряжение плавно нарастает с 0 до 5 В и остается на 5 В, а на выходах PD6 и PD5 плавно нарастает с 0 до 5 В затем скачком сбрасывается до 0 и снова плавно нарастает. Разве они не должны одинаково работать?
Кода не видно, вероятно вы наращиваете переменную типа int и не учитываете, что OCR1A, OCR1B - 16-битные регистры, а OCR0A, OCR0B, OCR2A, OCR2B - 8-битные, и в них попадает лишь младший байт. Пишите в OCR1AL, OCR1BL - получите одинаковое поведение.
P.S. ваша функция pause() перестанет работать как только вы включите оптимизацию. Либо добавьте к параметру a квалификатор volatile, либо используйте функции _delay_ms(), _delay_us() из <util/delay.h> если ваш компилятор - avr-gcc, либо __delay_cycles() из <intrinsics.h>, если ваш компилятор - ИАР.