- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: PWM mit AT90S2313?

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    35
    Beiträge
    2.624
    Anzeige

    Powerstation Test
    Ich habe mich entschlossen den Code hier zu posten, denn vielleicht kann ihn ja noch jemand anderes gut gebrauchen! :o9

    Code:
    .include	"m8def.inc"
    
    	.def	temp		= r16
    
    start:
    	ldi	 temp		, LOW  (RAMEND)
    	out	 SPL		 , temp
    
    	ldi	 temp		, HIGH (RAMEND)
    	out	 SPH		 , temp
    
    
    	ldi	 temp		, 0xFF
    	out	 DDRB		, temp
    
    
    	ldi 	temp		, 0xF3
    	out 	TCCR1A	 , temp
    
    	ldi 	temp		, 0x0A
    	out 	TCCR1B	 , temp
    
    	sei
    
    main:
    	ldi	 temp		, 0x01
    	out 	OCR1AH	 , temp
    
    	ldi	 temp		, 0xFF
    	out 	OCR1AL	 , temp
    
    	ldi	 temp		, 0x00
    	out 	OCR1BH	 , temp
    
    	ldi	 temp		, 0xFF
    	out 	OCR1BL	 , temp
    
    	rjmp   main
    Das ist der selbe Code wie auf http://www.mc-project.de, nur übersetzt in Asm!
    Die PWM-Impulse kommen aus den beiden Pins PB1/2 also OC1A/B heraus.
    Wenn man sich den Text auf http://www.mc-project.de genau durchließt kann man die PWM-Signale leicht konfigurieren.

    Zur Erklärung:
    Code:
    	ldi	 temp		, LOW  (RAMEND)
    	out	 SPL		 , temp
    
    	ldi	 temp		, HIGH (RAMEND)
    	out	 SPH		 , temp
    Hier wird als Erstes der Stackpointer initalisiert!

    Code:
    	ldi	 temp		, 0xFF
    	out	 DDRB		, temp
    Hier wird PB als Ausgang konfiguriert.

    Code:
    	ldi 	temp		, 0xF3
    	out 	TCCR1A	 , temp
    Als Nächstes wird Modulator eingestellt.
    Hier ist der Modulator auf 10bit PWM im Phase Correct PWM Mode eingestellt. Durch umstellen der bits kann man wie auf http://www.mc-project.de erklärt die Auflösung usw. ändern.

    Code:
    ldi 	temp		, 0x0A
    	out 	TCCR1B	 , temp
    Hier wird der Prescaler eingestellt.

    Code:
    sei
    Interrupts werden global aktiviert.

    Code:
    	ldi	 temp		, 0x01
    	out 	OCR1AH	 , temp
    
    	ldi	 temp		, 0xFF
    	out 	OCR1AL	 , temp
    
    	ldi	 temp		, 0x00
    	out 	OCR1BH	 , temp
    
    	ldi	 temp		, 0xFF
    	out 	OCR1BL	 , temp
    
                    rjmp   main
    Hier wird die PWM-Frequenz eingestellt und in einer Endlosschleife widerholt.


    Ich hoffe ich konnte helfen, wenn noch Fragen offen sind, was ich sehr stark vermute, dann stellt sie ruhig! :o)

    Viel Spass und Erfolg! :o)[/code]

  2. #12
    Gast
    Sowas habe ich gesucht! Besten Dank!

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    35
    Beiträge
    2.624
    Funktioniert denn der Code auch?
    Ich habe in meinem Sammelsurium lange gestöbert und dazwischen waren auch einige nicht funktionierende Nieten! ;o)

Seite 2 von 2 ErsteErste 12

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests