Forum: Mikrocontroller und Digitale Elektronik Attiny13 PWM generieren


von Jörg (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.
Bin gerade dabei ein Projekt zur Motoransteuerung mittels ATtiny13 zu
realisieren.
Leider bekomme ich die Geschichte mit der PWM in Assembler nicht auf
die Reihe. Assembler muss es leider sein, da ich höhere
Programmiersprachen wie C nicht beherrsche.
Es Wäre nett, wenn mir jemand weiterhelfen könnte, oder sogar ein Stück
Assemblercode für mich hätte, wie ich eine PWM mittels ATtiny13
realisieren kann.
Die Anleitung auf der Seite hilft mir auch insoweit nicht weiter, da
ich beide PWM Ausgänge abwechselnd nutzen Möchte. Da bringt mich das
Beispiel doch etwas durcheinander.
Wäre super, wenn mir jemand weiterhelfen könnte.


Danke.
Jörg

von Jörg (Gast)


Angehängte Dateien:

Lesenswert?

Hier nochmal der PAP lesbar.

von Jörg (Gast)


Angehängte Dateien:

Lesenswert?

Versuch Nummer 3.
Wenns jetzt nicht klappt eifach einen vorherigen versuch vergrößern.
Danke schonmal im voraus.

von Jörg (Gast)


Lesenswert?

Kann ich mit dem untenstehenden code schon eine PWM erzeugen und mit
Veränderungen in den Registern Org0a und Org0b die Pulsweite an den
beiden Ausgängen modulieren? Sorry wenn ich grade nervig werde.
Mich überkommts einfach gerade etwas.






#include <tiny13.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 4
#pragma optsize-
CLKPR=0x80;
CLKPR=0x02;
#ifdef OPTIMIZE_SIZE
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State5=T State4=T State3=T State2=T State1=0 State0=0
PORTB=0x00;
DDRB=0x03;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Non-Inverted PWM
TCCR0A=0xA3;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

while (1)
      {
      // Place your code here

      };
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.