Sida 4 av 4
Postat: 30 oktober 2005, 00:45:39
av sodjan
> när jag tarbort den där loopen verkar allt vara normalt, spänningarna kommer upp i 5v istället för 2,5 som de va å lura vid förut med loopen...
Ligger spänninge fast på 2.5V eller är det ett genomsnitt (t.ex av en 38 Khz signal) du ser ?
> jag vet inte hur jag ska göra för att få det att funka!
Använd en PWM modul !
Postat: 30 oktober 2005, 00:59:21
av Virr3
den hoppar lite runt 2,5...
ja, det blir nog bäst så...
kör på pwm då

hehe...
jo, pwm får de bli... det ska bli kul att lära sig de:)
då kan jag använda de i framtida projekt ifall jag vill ha motorer osv med
aja, tack sodjan...
Edit: för er som försöker med(troligen är de ingen mer, men kasnke i framtida liv)
http://atmel.com/dyn/products/faq_card.asp?faq_id=1581 finns lite pwm exempel...
Postat: 30 oktober 2005, 09:33:09
av exile
Länken du hänvisar till är för atmels 8051 och inte AVR nu är det inte så stor skilnad men namn och några siffror i formel är fel....
Postat: 30 oktober 2005, 09:43:37
av Virr3
ne, jag vet...
men, det är lite hjälp, jag vet lite vad jag ska leta efter i databladet

Postat: 30 oktober 2005, 10:51:44
av frejo
jag postade mer eller mindre komplett pwm-kod för atmega32 tidigare, kolla upp de registrena som används där.
Postat: 30 oktober 2005, 11:45:36
av Virr3
Provade att kompilera den koden du skickade, men den funkade inte så bra...
men, det kanske va ja som missade något när jag skrev av de, det va rätt sent, ska prova sen ikväll igen...
Postat: 4 november 2005, 22:48:14
av Virr3
Nu har jag fått lite hjälp med koden... den funkar bra...
det är bara det att jag äger inget oscilloscop och jag vet inte vad jag ska ställa ICR1A på för att få rätt frekvens...
om det nu är där jag ställer in frekvensen(?)
Kod: Markera allt
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
int main (void)
{
// Using phase & freq correct pwm, TOP=ICR1, freq scaling = 8
TCCR1A = _BV (COM1A1);
TCCR1B = _BV (CS11) | _BV (WGM13);
OCR1A = 600; // ~10% dutycycle
ICR1 = 4167; // 30Hz (tror jag att det är iaf)
DDRD = _BV (PD5); // enable OC1 as output
/* enable interrupts */
sei ();
}