Hjälp. min h-brygga funkar inte
Postat: 21 oktober 2004, 19:30:05
hejsan.
jag kopplade upp en h-brygga efter detta schema

och denna kod i min ATMega32:a
jag kollade med en multimeter och jag får något blinkade mellan 0 och 13
sedan råkade jag komma åt basen och kolektorn på 2n2222:an sammtidigt och då började motornn gå igång..
någon som har en aning om vad som kan vara fel?
[/code]
jag kopplade upp en h-brygga efter detta schema

och denna kod i min ATMega32:a
Kod: Markera allt
/*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* <joerg@FreeBSD.ORG> wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you think
* this stuff is worth it, you can buy me a beer in return. Joerg Wunsch
* ----------------------------------------------------------------------------
*
* Simple AVR demonstration. Controls a LED that can be directly
* connected from OC1/OC1A to GND. The brightness of the LED is
* controlled with the PWM. After each period of the PWM, the PWM
* value is either incremented or decremented, that's all.
*
* $Id: demo.c,v 1.1 2002/09/30 18:16:07 troth Exp $
*/
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "a2d.c"
# define OC1 PB5
# define DDROC DDRD
# define OCR OCR1A
volatile uint16_t pwm;
volatile uint16_t freq;
volatile uint8_t direction;
SIGNAL (SIG_OVERFLOW1)
{
//OCR = pwm_min + ((pwm_scope/255)*pwm); /* Note [4] */
//ICR1=0x1000+(freq*24);
// Pulslängd ca 10ms gav bra respons
ICR1=10000;
//Försök att använda hela området på vridpot
//pwm_scope=(936/1024)*pwm;
//OCR=600+pwm_scope;
// Det som funka bäst
if(pwm*2<1536) // För att inte ge för lång pulstid till servot
OCR=600+(pwm*2);
// Försök med 8bit ad, 512*3=1536
//OCR=600+(pwm*3);
}
void
ioinit (void)
{
a2dInit(); // Initierar ADC
// Using phase & freq correct pwm, TOP=ICR1, freq scaling = 8
TCCR1A = _BV (COM1A1);
TCCR1B = _BV (CS11) | _BV (WGM13);
/* set PWM value to 0 */
OCR = 0;
ICR1 = 0;
/* enable OC1 and PB2 as output */
DDRD = _BV (OC1);
//DDRD= 0xFF;
timer_enable_int (_BV (TOIE1));
/* enable interrupts */
sei ();
}
int
main (void)
{
ioinit ();
while(1)
{
pwm=a2dConvert10bit(0);
freq=a2dConvert10bit(2);
}
return (0);
}
sedan råkade jag komma åt basen och kolektorn på 2n2222:an sammtidigt och då började motornn gå igång..
någon som har en aning om vad som kan vara fel?
[/code]