Forum: Mikrocontroller und Digitale Elektronik Was soll das bedeuten Phase and Frequency correct PWM


von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Hallo zusammen,

Phasen und Frequenz korrekte Pulsweitenmodulation.

Was ist mit Phasenkorrekt gemeint ?

Was wäre denn Phasenunkorrekt ? :-)

Welche Phase überhaupt ?

======================================================================== 
===

Was ist mit Frequenzkorrekt gemeint ?

Welche Frequenz ist überhaupt gemeint ?

Oder ist damit eher Systemtaktsynchron gemeint ?


Bernd_Stein

von Hannes L. (hannes)


Lesenswert?

Bernd Stein schrieb:
> Hallo zusammen,

Hallo alleine...

>
> Phasen und Frequenz korrekte Pulsweitenmodulation.
>
> Was ist mit Phasenkorrekt gemeint ?

Dass die Mitte des Impulses immer dieselbe Stelle der Zeitachse trifft. 
der Impuls wird also vorn und hinten verändert. Siehe grafische 
Darstellung im Datenblatt.

>
> Was wäre denn Phasenunkorrekt ? :-)

Wenn man nur das Ende des Impulses moduliert. Also Highspeed-PWM.

>
> Welche Phase überhaupt ?

Die Phase der erzeugten Frequenz.

>
> ======================================================================== ===
>
> Was ist mit Frequenzkorrekt gemeint ?

Dass sich die Frequenz beim Verändern des Tastgrades nicht verändert.

>
> Welche Frequenz ist überhaupt gemeint ?

Die Frequenz der erzeugten PWM.

>
> Oder ist damit eher Systemtaktsynchron gemeint ?

Eher nicht.

>
>
> Bernd_Stein

Sieh den Unterschied erstmal so:

High-Speed-PWM:
Timer zählt hoch, PWM-Pin wird bei erreichen des Compare-Wertes 
ausgeschaltet und beim Timerüberlauf eingeschaltet (kann man auch 
umkehren). Es wird also das Impulsende moduliert.

Phase-correct-PWM:
Timer zählt hoch und wieder runter, ist der Zählerstand unter dem 
Compare-Wert, dann ist der PWM-Pin ein. Ist er drüber, dann ist er aus. 
Ein/Aus kann man natürlich auch umkehren. Es wird also Impulsanfang und 
Impulsende moduliert.

...

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Hannes Lux schrieb:
...
>
> Sieh den Unterschied erstmal so:
>
> High-Speed-PWM:
> Timer zählt hoch, PWM-Pin wird bei erreichen des Compare-Wertes
> ausgeschaltet und beim Timerüberlauf eingeschaltet (kann man auch
> umkehren). Es wird also das Impulsende moduliert.
>
> Phase-correct-PWM:
> Timer zählt hoch und wieder runter, ist der Zählerstand unter dem
> Compare-Wert, dann ist der PWM-Pin ein. Ist er drüber, dann ist er aus.
> Ein/Aus kann man natürlich auch umkehren. Es wird also Impulsanfang und
> Impulsende moduliert.
>

Danke für die komplette Beantwortung aller meiner Fragen,
das alles muß ich erstmal verdauen.

Bernd_Stein

von spess53 (Gast)


Lesenswert?

Hi

>das alles muß ich erstmal verdauen.

In den Datenblätter findest du für jeden Timer einen Punkt 'Modes of 
Operation'. Da gibt es Beschreibungen und Diagramme zu den PWM-Modes.

MfG Spess

von Juergen G. (jup)


Lesenswert?

So einfach wie Hannes es erklaert hat steht es aber nicht im Datenblatt.

Ich erinnere mich noch daran wie lange ich das Datenblatt hoch und 
runtergescrollt habe bis ich das kapiert hatte was Hannes kurz und 
buendig erklaert hat.

Wenn man lange genug und tief genug mit PWM vertraut ist, liest sich das 
Datenblatt einfach. Aber wenn man gerade damit auf Tuchfuehlung gehen 
will sieht das schon alles sehr verwirrend aus.
Da hilft es viel Leute wie Hannes zu haben der es in ein paar Worten in 
der Muttersprache daherbringt.

Ju

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Juergen G. schrieb:
> So einfach wie Hannes es erklaert hat steht es aber nicht im Datenblatt.
>
> Ich erinnere mich noch daran wie lange ich das Datenblatt hoch und
> runtergescrollt habe bis ich das kapiert hatte was Hannes kurz und
> buendig erklaert hat.
>
> Wenn man lange genug und tief genug mit PWM vertraut ist, liest sich das
> Datenblatt einfach. Aber wenn man gerade damit auf Tuchfuehlung gehen
> will sieht das schon alles sehr verwirrend aus.
> Da hilft es viel Leute wie Hannes zu haben der es in ein paar Worten in
> der Muttersprache daherbringt.
>
> Ju
>
em kann ich nur voll und ganz zustimmen.

Bernd_Stein

von Maik K. (Gast)


Lesenswert?

Moin,
mein erstes PWM-Register das ich gesehen habe stammt von einem 
TMS320F28335.
Das hat wirklich ein paar Tage gedauert bis ich da durchgestiegen bin.
Bis heute habe ich keine Ahnung wozu das Trip-Zone Register dient. :)
Viel Spaß beim durcharbeiten der Doku!

Viele Grüße
Maik

von spess53 (Gast)


Lesenswert?

Hi

Die Erklärung von Hannes ist aber nur die halbe Miete. Du hattest nach 
dem Unterschied zwischen 'Phase Correct' und 'Phase & Frequency correct' 
gefragt.

'Phase correct' bedeutet, das die Umschaltzeitpunkte (H-L/L-H) im 
gleichen Abstand vor und hinter 0 bzw. Top des Timers liegen. Beide Modi 
unterscheiden sich in dem Zeitpunkt, in dem der OC-Wert und der Top-Wert 
vom Timer übernommen werden. Bei 'Phase correct' ist das beim erreichen 
des Top-Wertes. Da der Timer nach erreichen des Topwertes abwärts zählt, 
schaltet das PWM-Signal bei erreichen des OC-Wertes ein. Der Timer zählt 
dann bis Null und ab dann wieder aufwärts. Wenn der OC-Wert erreicht 
ist, geht das PWM-Signal wieder auf L.

Bei 'Phase and Frequency correct' erfolgt die Übernahme von OC- und 
Top-Wert wenn der Zähler Null erreicht. Der Timer schaltet, aufwärts 
zählend, bei erreichen des OC-Wertes den Ausgang au L, zählt weiter bis 
zum Top-Wert und setzt, abwärts zählend, beim OC-Wert den Ausgang auf H. 
Da die L-Phase des PWM-Signals symmetrisch um den Top-Wert, der die 
PWM-Frequenz bestimmt, liegt kommt hier noch 'frequency correct' dazu.

MfG Spess

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

spess53 schrieb:
> Hi
>
> Die Erklärung von Hannes ist aber nur die halbe Miete. Du hattest nach
> dem Unterschied zwischen 'Phase Correct' und 'Phase & Frequency correct'
> gefragt.
>
...
Finde ich nicht, er hat schon beides beantwortet.
>
> Bei 'Phase and Frequency correct' erfolgt die Übernahme von OC- und
> Top-Wert wenn der Zähler Null erreicht. Der Timer schaltet, aufwärts
> zählend, bei erreichen des OC-Wertes den Ausgang au L, zählt weiter bis
> zum Top-Wert und setzt, abwärts zählend, beim OC-Wert den Ausgang auf H.
> Da die L-Phase des PWM-Signals symmetrisch um den Top-Wert, der die
> PWM-Frequenz bestimmt, liegt kommt hier noch 'frequency correct' dazu.
>
Irgendwie seid ihr beide da unterschiedlicher Meinung.
>
> Was ist mit Frequenzkorrekt gemeint ?
Hannes Lux schrieb:
Dass sich die Frequenz beim Verändern des Tastgrades nicht verändert.

Bernd_Stein

von Hannes L. (hannes)


Lesenswert?

Bernd Stein schrieb:
> spess53 schrieb:
>> Hi
>>
>> Die Erklärung von Hannes ist aber nur die halbe Miete. Du hattest nach
>> dem Unterschied zwischen 'Phase Correct' und 'Phase & Frequency correct'
>> gefragt.
>>
> ...
> Finde ich nicht, er hat schon beides beantwortet.

Neenee, da hat Spess schon recht.

>>
>> Bei 'Phase and Frequency correct' erfolgt die Übernahme von OC- und
>> Top-Wert wenn der Zähler Null erreicht. Der Timer schaltet, aufwärts
>> zählend, bei erreichen des OC-Wertes den Ausgang au L, zählt weiter bis
>> zum Top-Wert und setzt, abwärts zählend, beim OC-Wert den Ausgang auf H.
>> Da die L-Phase des PWM-Signals symmetrisch um den Top-Wert, der die
>> PWM-Frequenz bestimmt, liegt kommt hier noch 'frequency correct' dazu.
>>
> Irgendwie seid ihr beide da unterschiedlicher Meinung.

Eigentlich nicht, denn soooo intensiv habe ich mich mit den 
verschiedenen PWM-Modi des 16-Bit-Timers nicht auseinandergesetzt, denn 
ich habe sie noch nicht gebraucht.

Vom 16-Bit-Timer brauche ich bisher meist nur die beiden 
Compare-Einheiten (zum Generieren von Interrupts), und auch mal die 
ICP-Einheit zum Messen von Impulsbreiten, Impulsabständen oder 
Frequenzen. Zur Erzeugung von Hardware-PWM hat mir bisher immer ein 
8-Bit-Timer gereicht, so konnte ich den 16-Bit-Timer für Interrupts 
nutzen.

>>
>> Was ist mit Frequenzkorrekt gemeint ?
> Hannes Lux schrieb:
> Dass sich die Frequenz beim Verändern des Tastgrades nicht verändert.

Das war eine sehr grobe Feststellung, die von Spess präzisiert wurde.

Ich gab Dir immer ganz bewusst Tipps, die Dich auf die Grundfunktionen 
lenken sollten. Die "Erbsenzählerei" (Erkundung der Zusatz-Features) 
fällt dann leichter, wenn man die Grundfunktionen verstanden hat.

>
> Bernd_Stein

Maik K. schrieb:
> mein erstes PWM-Register das ich gesehen habe stammt von einem
> TMS320F28335.
> Das hat wirklich ein paar Tage gedauert bis ich da durchgestiegen bin.

Meine erste (Mikrocontroller-) PWM war auf dem Tiny12 in Software und 
alles Andere als befriedigend:
http://www.hanneslux.de/avr/mobau/fr_t12/Fahrst3.html
Hat aber etwas beim Verstehen der PWM-Einheiten der AVRs (andere 
Controller nutze ich nicht) geholfen.

...

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Hier ist dies mal gut erklärt :


https://www.youtube.com/watch?v=0tHXmy1orUE


Bernd_Stein

von spess53 (Gast)


Lesenswert?

Hi

>Hier ist dies mal gut erklärt :

>Youtube-Video "0x16 Timer - Fast und Phase-Correct PWM - Erzeugung, >Parameter, 
Unterschiede"

Und wo ist da der Unterschied zwischen Phase-Correct PWM und 
Phase&Freuency-Correct PWM .

Mal ehrlich. In >7 Jahren hättest du dir das bischen Englisch, das zum 
Verständnis der AVR-Datenblätter notwendig ist, problemlos selbst 
aneignen können. Was hast du eigntlich in dieser Zeit gemacht? Immer 
noch veraltete 'Lehrbücher' aus den 90ern durch gearbeitet?

MfG Spess

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Hier geht es um den Timer / Counter0 des ATmega88PA.

Was will mir die gekennzeichnete Verbindung mitteilen ?


Bernd_Stein

von spess53 (Gast)


Lesenswert?

Hi

>Was will mir die gekennzeichnete Verbindung mitteilen ?

Das ist das Signal für die PWM-Modes die OCR0A für den Top-Wert 
benutzen.

MfG Spess

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

spess53 schrieb:
> Hi
>
>>Was will mir die gekennzeichnete Verbindung mitteilen ?
>
> Das ist das Signal für die PWM-Modes die OCR0A für den Top-Wert
> benutzen.
>
> MfG Spess
>
Und wo liegt nun genau der Unterschied zu diesem Pfad ?


Bernd_Stein

von spess53 (Gast)


Lesenswert?

Hi

>Und wo liegt nun genau der Unterschied zu diesem Pfad ?

Ich muss mich korrigieren: Der Pfad im ersten Bild dürfte dürfte nur bei 
CTC zum Einsatz kommen. Allerdings kann man ohne Kenntnis der genauen 
Signale für die Umschalter nur vermuten.

Wozu willst du das eigentlich wissen?

MfG Spess

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

spess53 schrieb:
> Ich muss mich korrigieren: Der Pfad im ersten Bild dürfte dürfte nur bei
> CTC zum Einsatz kommen.
>...
> Wozu willst du das eigentlich wissen?
>
Nun ja, man arbeitet sich in etwas ein, sieht ein Blockschaltplan und 
versucht diesen zu verstehen. Habe da nämlich immer noch ein Problem mit 
dem TC0 Fast PWM Mode 7. Dies mal jedoch mit dem ATmega88PA. Werde dies 
jedoch erst schildern, wenn ich mehr Zeit dazu habe und Interesse 
besteht.


Bernd_Stein

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)



Lesenswert?

Hallo zusammen,

es ist zwar der Phase Correct PWM-Mode - aber ist ja ähnlich.


Wer kann hier schreiben, warum das PWM-Signal diese Aussetzer hat?


Ich find den Fehler einfach nicht. Man muss schon auf mindestens 2ms bei 
der Sec/DIV Einstellung am Oszilloskop gehen, um den Fehler zu 
entdecken.

Im Anhang ist ein ATMEL STUDIO 7 Assemblerprojekt.


Bernd_Stein

: Bearbeitet durch User
von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Bearbeiten ging nicht mehr deshalb ...

Das ist ein einfaches Programm, also keine Angst wegen der 38KB.
1
;
2
.include "Header.inc"       ;Label und Werte Zuweisungen
3
.include "Hardware.inc"     ;Hardware Label  Zuweisungen
4
;
5
;Programmstart nach RESET  ( Interrupt Vektoren Tabelle )
6
;
7
.CSEG                       ;Was ab hier folgt kommt in den FLASH-Speicher
8
.ORG $0000                  ;Programm beginnt an der FLASH-Adresse 0x0000..
9
 rjmp  _reset               ;..mit der RESET-Vectortabelle
10
11
.include "IRQm88PA.inc"     ;Restliche Interrupt Vektortabelle
12
13
.ORG INT_VECTORS_SIZE       ;Programmadresse nach den ganzen IRQ-Vektoren
14
;
15
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
16
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
17
;I Erstinitialisierungen
18
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
19
;IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
20
;
21
;Stapelzeiger initialisieren (fuer Unterprogramme und / oder Interrupts)
22
;
23
_reset:
24
 ldi  a,High(RAMEND)        ;RAMEND, also das Ende vom SRAM, ist in der.. 
25
 out  SPH,a                 ;..Definitions-datei festgelegt  
26
 ldi  a,Low (RAMEND)
27
 out  SPL,a
28
;
29
;Timer/Counter2: Phase Correct PWM-Mode ( 5 ) initialisieren, NON-INVERT, 
30
;ohne Vorteiler. Clear OC2B on Compare Match upcounting, set OC2B on Compare 
31
;Match downcounting. OC2B ist der PWM-Pin, da OCR2A ja den TOP-Wert enthält
32
;Pin17/PB3 ( OC2A ) ist als normaler I/O-Pin konfiguriert. TOV2-Flag bei BOTTOM.
33
;
34
 ldi  a,#pcpwm_freq         ;5,5kHz an OC2B einstellen,..
35
 sts  OCR2A,a              ;..
36
 sts  OCR2B,null      ;Erstmal keine PWM sondern Low-Pegel
37
38
ldi  a,3          ;-------------------------------------------------------------
39
sts  OCR2B,a        ;--------------------------------------------------------------
40
41
 ldi  a,NINV2B        ;Phase Correct PWM-Mode 5, Non Inverting..
42
 sts  TCCR2A,a              ;..Upcouting clear OC0B on Compare Match, Down-..
43
 ldi  a,1<<CS20|1<<WGM22    ;...counting set OC0B on Compare Match, ohne Vor-..
44
 sts  TCCR2B,a              ;..teiler, Timer/Counter0 starten und..
45
 sbi  PWM2B_DDR,pwm2b.oc2b  ;..PWM-Portpin5/PD3 ( OC2B ) freigeben
46
 
47
 rjmp PC          ;Endlosschleife ( PC = Program Counter )

Bernd_Stein

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Sieht softwareseitig okay aus, und ja, läuft folglich bei mir ohne 
Aussetzer. Bleibt also nur, die Hardware zu kontrollieren.


Und übrigens steht da doch in ROT: "für neue Fragen einen neuen Beitrag 
erstellen".

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

S. Landolt schrieb:
> Sieht softwareseitig okay aus, und ja, läuft folglich bei mir ohne
> Aussetzer. Bleibt also nur, die Hardware zu kontrollieren.
>
Danke. Damit hast du mir sehr weiter geholfen. Hab gerade nur den 
Ausgang über einen Pull-Down von 15k dran, sieht aber bei mir immer noch 
so aus.

Da muss wohl der µC defekt sein. Wie schaffe das nur immer?

Poste die Tage mal ein Foto vom Aufbau.


Bernd_Stein

von S. Landolt (Gast)


Lesenswert?

PS & nur am Rande:

Dieses null sieht zwar hübsch aus, hat aber mitnichten diesen Wert.

von S. Landolt (Gast)


Lesenswert?

> Da muss wohl der µC defekt sein.

Also der Controller selbst käme bei mir ganz weit hinten in der Reihe 
der Verdächtigen. Und es ließe sich ja sofort durch einen fabrikneuen 
abklären.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

S. Landolt schrieb:
> PS & nur am Rande:
>
> Dieses null sieht zwar hübsch aus, hat aber mitnichten diesen Wert.
>
Ja stimmt, wird allerdings sofort überschrieben. Die Formatierung ist 
hier nicht ganz so wie ich es wollte, dann würde es besser ins Auge 
fallen.
Bei mir ist nach 80 Zeichen schluss.

Das Programm ist auf das wensentliche reduziert, um den Fehler finden zu 
können, da schleichen sich halt Sachen ein, die ich übersehen habe 
heraus
zu nehmen.


S. Landolt schrieb:
> Also der Controller selbst käme bei mir ganz weit hinten in der Reihe
> der Verdächtigen. Und es ließe sich ja sofort durch einen fabrikneuen
> abklären.
>
Bei mir auch, mein µC Verschleiss ist zur Zeit wirklich ein Problem.

Beitrag "ATmega16 irgendwie über JTAG abgeschossen"


Bernd_Stein

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Wieder mal unglaublich. Habe immer noch den Fehler mit einem nagelneuen 
µC.

Wo der Widerstand ist und die rote Klemme, da messe ich den OC2B mit 
meinem DSO. Die Lila Verbindung ( EN ) zur anderen Schaltung ( L298N ) 
ist extra abgezogen.


Hast du die Time-Base am Oszi richtig eingestellt?
Vielleicht ist es bei dir ja erst bei 4ms, 8ms oder noch höher sichtbar.

Hast du den gleichen µC ( ...88PA )?


Werde den Aufbau so ändern das alles unnötige wegkommt.
Am besten den µC in andere Löcher stecken, dann hab ich zwei Fliegen mit 
einer Klappe erschlagen.

Ohne Erfolg :-(

Bernd_Stein

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Ich habe nur einen ATmega88; irgendwo noch einen ATmega48PA, den müsste 
ich aber erst suchen. Und kann mir beim besten Willen nicht vorstellen, 
dass das ein Fehler der PA-Version sein soll, da hätten sich sicher 
schon andere gemeldet.

> Werde den Aufbau so ändern das alles unnötige wegkommt.

Das ist sinnvoll. Anschließend bei der Messung mit dem Oszilloskop auch 
noch die Betriebsspannung direkt am uC anschauen.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)



Lesenswert?

S. Landolt schrieb:
> Das ist sinnvoll. Anschließend bei der Messung mit dem Oszilloskop auch
> noch die Betriebsspannung direkt am uC anschauen.
>
Das Letzte was ich jetzt noch machen werde, aber für nicht 
Erfolgsversprechend halte ist, den µC gesockelt auf eine 
Lochstreifenrasterplatine zu löten. Also die Schaltung im Bild mit dem 
"alten" µC.

Ich hatte damals die Breadboards verflucht, da ich damit stundenlang 
Fehler gesucht hatte, die auf mangelde Kontaktierung beruhten. Und dies 
ist so ein billig China Board.

Für kleiner Schaltungen nehme ich BPS BB400 Boards
( BusBoardPrototypeSystems ), die allerdings auch in China fertigen 
lassen.


Bernd_Stein

von S. Landolt (Gast)


Lesenswert?

Also gut, ich grabe mal meinen ATmega48PA aus. Sie könnten derweil das 
.lst-File hier einstellen.

von S. Landolt (Gast)


Lesenswert?

PS:
GND auf Pin 20 anschließen wäre auch nicht schlecht.

von S. Landolt (Gast)


Lesenswert?

Also, auch der ATmega48PA-PU (von 1024) verhält sich so wie er soll. 
Weiter kann ich nicht mehr helfen.

von Teo D. (teoderix)


Lesenswert?

Bernd S. schrieb:
> Also die Schaltung im Bild mit dem
> "alten" µC.

Was soll die Zenerdiode in der Versorgungsleitung?
Da schlägt der BOR zu, würd ich mal raten. Auf welchen Level haste den 
den gestellt?

von S. Landolt (Gast)


Lesenswert?

Ich dachte, das sei eine normale Schottky-Diode - und BOD ist doch gar 
nicht eingeschaltet?

von Helmut S. (helmuts)


Lesenswert?

Mal ein ganz blöde Frage. Ist die Abtastrate deines Oszis groß genug. 
Die sollte mindestens so groß sein, dass auch die schmalsten Pulse 
mindestens zweimal abgetastet werden. Es zählt nicht die maximale 
Abtastrate sondern die für den gewählten Zeitbereich der Anzeige.

Mindestpulsbreite?

Abtastrate des Oszilloskops in der gewählten Einstellung der Zeitbasis?

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

S. Landolt schrieb:
> Ich dachte, das sei eine normale Schottky-Diode -
Schottky oder nicht, was macht die da?

> und BOD ist doch gar
> nicht eingeschaltet?
 Na dann.....?

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)



Lesenswert?

S. Landolt schrieb:
> PS:
> GND auf Pin 20 anschließen wäre auch nicht schlecht.
>
Hast du das auch gemacht?

Werde dann mal AVCC auch auf GND setzen.
Interessant, das die Spannung dadurch herunter geht ( Siehe Screen Shot 
).
Die Frequenzangabe könnte wegen des falsch bzw. vorher eingestellten 
Triggerpegel falsch dargestellt sein. Warum bei der Spannungsversorgung 
( Gelb ) eine Frequenz gemessen wird, kann ich nicht sagen.

Danach habe ich AVCC & Aref jeweils über einen 100nF gegen GND 
geschaltet, aber das brachte auch nichts. Ist Reichelt-Ware, weiß jetzt 
nicht ob ich dort wieder bestellen soll?

Die gesockelte und gelötete Variante bringt auch nichts, ( siehe Screen 
Shot )

@Helmut S.
Das vermute ich langsam auch, weiß aber nicht wie ich so etwas 
einstellen soll. Habe das VOLTCRAFT DSO-1062D in der 200Mhz Variante 
;-).

Ach, hoffe mal die lss-Datei hoch geladen zu haben.
Wie ich sehe, funktioniete das schon ohne die Datei zu zippen.


Bernd_Stein

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Bernd S. schrieb:

> Ach, hoffe mal die lss-Datei hoch geladen zu haben.

Hast du.

Und damit ist erstmal klar, was passiert. Es fehlt eine Endlosschleife 
nach der Initialisierung.

Wenn das ein frischer AVR ist, wird das unweigerlich dazu führen, dass 
in regelmäßigen Abständen die Initialisierung erneut erfolgen wird. Wenn 
schon irgendwelcher alter Kram hinter dem Nutzcode im Flash steht, kann 
alles mögliche passieren.

Übrigens: der Erwartungswert für das Programm wäre, dass überhaupt nix 
auf dem Oszi zu sehen ist. Im Gegensatz zu fast PWM gibt es bei 
phase-correct PWM nämlich keine Nadelimpulse bei einem der beiden 
Extremwerte, sondern stabil Low oder High, je nach gewählter Polarität 
der Ausgabe.

Siehst du also nach Hinzufügen der Endlosschleife immer noch irgendwas, 
wäre die nächste Frage: hast du den Pin belastet? An einem unbelasteten 
Pin wirst du immer Spikes mit der Taktfrequenz sehen. Die könnte dein 
viel zu langsames Oszi dank der Alias-Effekte zu beliebigen hübschen 
Mustern aufbereiten.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

c-hater schrieb:
> Es fehlt eine Endlosschleife
> nach der Initialisierung.
>
Freue mich von dir mal wieder ein konstruktives Posting zu erhalten.

Die lss-Datei ist sehr aufschlussreich, nur verstehe ich nicht warum sie 
den letzten Befehl nicht anzeigt?

Siehe hier am Ende :

Beitrag "ATmega88PA: Phase Correct PWM"

Werde jetzt mal die .EXIT Direktive hinzufügen.

Habe ich gerade getan. Die lss-Datei ist nun vollständig, aber dass DSO 
zeigt immer noch diesen Mist an.

Ist das alles seltsam, habe die Direktive per Semikolon wieder 
rausgenommen, aber die lss-Datei ist immer noch OK.


So, jetzt würde ich gerne die Firmware aus dem µC holen und 
disamblieren,
um zu sehen was da wirklich heruntergeladen wurde.

Das AS7 dissambliert nur Dateien, deren Quellcode auch im Projekt ist, 
deshalb wäre ein Tipp für ein unabhängigen Disassembler für Win10 Pro 
gut.


Bernd_Stein

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Bernd S. schrieb:

> deshalb wäre ein Tipp für ein unabhängigen Disassembler für Win10 Pro
> gut.

ReAVR funktioniert auch unter Windows10.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

c-hater schrieb:
> ReAVR funktioniert auch unter Windows10.
>
Meinst du dies :

https://www.johannes-bauer.com/mcus/avrdisas/


Bei mir blitz nur kurz ein Fenster auf. Ich habe zudem Win10 64-Pro

Das hatte schon mal mit einem Disassemblerprogramm, war evtl. sogar das 
gleiche.


Bernd_Stein

von c-hater (Gast)


Angehängte Dateien:

Lesenswert?

Bernd S. schrieb:

> Meinst du dies :
>
> https://www.johannes-bauer.com/mcus/avrdisas/

Nein.

Lustigerweise heisst auch der Verfasser von ReAVR Johannes. Allerdings 
mit Nachnamen "Assenbaum". Keine Ahnung, ob hier hier irgendwelche 
Namensverwirrung betrieben wurde oder nur Google diese betreibt.

Ich hänge mal einen Screenshot des "About"-Fensters des Tools an, was 
ich hier habe.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

c-hater schrieb:
> Ich hänge mal einen Screenshot des "About"-Fensters des Tools an, was
> ich hier habe.
>
Danke.
Ich habe jetzt die 3.5.0 Version und es wurde wirklich die 
Endlosschleife mittels rjmp PC herunter geladen. Was ein Scheiss.
1
;----------------------*
2
; pc=0x1A(0x34)
3
;
4
_reset:
5
; L001A:
6
  ldi  r16,k04
7
  out  p3E,r16
8
  ldi  r16,kFF
9
  out  p3D,r16
10
  ldi  r16,k5C
11
  sts  D00B3,r16
12
  sts  D00B4,r2
13
  ldi  r16,k03
14
  sts  D00B4,r16
15
  ldi  r16,k21
16
  sts  D00B0,r16
17
  ldi  r16,k09
18
  sts  D00B1,r16
19
  sbi  p0A,b3
20
L002D:
21
  rjmp  L002D
22
;  -----------  jump on last line
23
; pc=0x2E(0x5C)
24
;
25
  .dw  0xFFFF  ; pc=0x002E(0x005C)
26
  .dw  0xFFFF  ; pc=0x002F(0x005E)


Bernd_Stein

von S. Landolt (Gast)


Lesenswert?

> Es fehlt eine Endlosschleife

Wo, zum Teufel, ist im .lss-File die Zeile
1
 rjmp PC  ;Endlosschleife ( PC = Program Counter )
geblieben?

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

S. Landolt schrieb:
>> Es fehlt eine Endlosschleife
>
> Wo, zum Teufel, ist im .lss-File die Zeile rjmp PC  ;Endlosschleife ( PC
> = Program Counter )
> geblieben?
>
Wir sind schon etwas weiter ;-)

Nee ist echt verhext bei mir hab noch einen ATmega168PA gefunden und was 
soll ich schreiben ...


Weiß echt nicht mehr weiter und weil es bei dir klappt muss ja etwas mit 
meinem DSO nicht stimmen .., aber halt da war doch vor kurzem das hier 
und da sieht man das selbe Verhalten, aber ein wirkliches sinken der 
Kondensatorspannung, also muss dass DSO funktionieren.

Versuche nachher mal ein paar ATmega88PA über iBäh zu beziehen.

Beitrag "AVR8ASM-Projekte : PID-Reglung"



Bernd_Stein

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Ich bin der Meinung, dass es mit diesem fehlenden 'rjmp pc' 
zusammenhängt, denn das Fehlerbild passt perfekt, wie c-hater ja bereits 
erklärt hat. Weitere Controller einsetzen oder am Oszilloskop 
herumdrehen wird nicht helfen.

von c-hater (Gast)


Lesenswert?

Bernd S. schrieb:

> Weiß echt nicht mehr weiter und weil es bei dir klappt muss ja etwas mit
> meinem DSO nicht stimmen

Nein, mit dem DSO ist alles in Ordnung. Dir fehlt nur die Kompetenz, es 
sinnvoll zu benutzen bzw. dessen Ergebnisse sinnvoll zu interpretieren.

So hast du z.B. auf folgende Frage nicht geantwortet:

> Siehst du also nach Hinzufügen der Endlosschleife immer noch irgendwas,
> wäre die nächste Frage: hast du den Pin belastet?

von S. Landolt (Gast)


Lesenswert?

Vorschlag:
  Statt des 'rjmp pc' einen gleichmäßigen Takt auf einem Pin ausgeben 
und per Oszilloskop kontrollieren:
1
; SLdt 191026 
2
; fuer Bernd Stein: Aussetzer-Problem
3
4
; Kontroll-Pin mit gleichmaessigem Takt: D1
5
6
.include "m88PAdef.inc"
7
8
.def   tmp0 =   r16
9
10
;----------------------
11
.macro  put
12
.if  @0 < $60
13
  out    @0,@1
14
.else
15
  sts    @0,@1
16
.endif
17
.endmacro
18
;----------------------
19
.macro  puti
20
  ldi    tmp0,@1
21
  put    @0,tmp0
22
.endmacro
23
;----------------------
24
25
  puti   OCR2A,$5C     ; original (was auch immer)
26
  puti   OCR2B,10
27
  puti   TCCR2A,$21    ; original (was auch immer)
28
  puti   TCCR2B,$09    ; original (was auch immer)
29
  sbi    DDRD,3        ; OC2B
30
  sbi    DDRD,1        ; Kontrollpin
31
32
loop:
33
   sbi   PIND,1        ; Kontrollpin
34
   rcall wait7
35
   rcall wait7
36
   rcall wait7
37
   rcall wait7
38
  rjmp   loop
39
40
wait7:
41
  ret

von Holger L. (max5v)


Angehängte Dateien:

Lesenswert?

Also bei mir läuft es auch.

Der Aufbau sollte identisch sein, bis auf die Bat, wobei ich das auch 
versucht hatte und keine Änderung brachte. Fuses sind identisch, die 
Versorgung warscheinlich auch, 3.3V ?!

In der Zip ist der Debugordner nicht das es an irgend welchen Compiler 
Einstellungen liegt. Kannst die Hex ja mal ausprobieren.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

c-hater schrieb:
> Nein, mit dem DSO ist alles in Ordnung. Dir fehlt nur die Kompetenz, es
> sinnvoll zu benutzen bzw. dessen Ergebnisse sinnvoll zu interpretieren.
>
> So hast du z.B. auf folgende Frage nicht geantwortet:
>
>> Siehst du also nach Hinzufügen der Endlosschleife immer noch irgendwas,
>> wäre die nächste Frage: hast du den Pin belastet?
>>
Geht das mit dir schon wieder los?

Naja, vielleicht haben wir uns beim Schreiben ja überlappt

Siehe und lese aufmerksam :

Beitrag "Re: Was soll das bedeuten Phase and Frequency correct PWM"


@S.Landolt:
Bei mir sieht das Programm am DSO so aus ( siehe Screen Shot ).
Musste SEC/DIV allerdings auf 4ms stellen um die unregelmäßigen 
Aussetzer
besser erkennen zu können.

Gelb -> Pin3 ( PD1 )
Cyan -> Pin5 ( PD3 ) mit 15k gegen GND


@Holger L.:
Kannst du deine Timebase nicht auf 2ms stellen?

Kann mit Win10 Pro dieses ZIP-Format nicht entpacken und werde mir auch 
kein weiteres Programm hierzu downloaden.

Holger L. schrieb:
> Kannst die Hex ja mal ausprobieren.
>
Lade doch einfach diese HEX-Datei hoch, dann kann ich sie ja durch den 
ReAVR disamblieren lassen und der OUTPUT müsste ja so aussehen wie in 
meinem vorherigen Posting. Bei Unstimmigkeiten müsste ich mich aber erst 
mit diesem Programm auseinandersetzen, damit es wenigstens einigermaßen 
Vernüftiges anzeigt, wenn dies überhaupt möglich ist.


Bernd_Stein

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Es ist einfach nur zum kotzen.
Wollte das Ganze dann einfach mal für den Timer0 machen, da passiert 
seltsamerweise am Pin11 ( PD5 bzw. OC0B ) nichts. Wollte nun mit dem 
Simulator gucken was da wie passiert.

Der Scheiß AS7 Simulator macht alles beim Timer2 und beim Timer0 streikt 
er.


Bernd_Stein

von S. Landolt (Gast)


Lesenswert?

> Wollte das Ganze dann einfach mal für den Timer0 machen ...

Und wie sieht die Port-Freigabe genau aus? Der Kommentar ist ja falsch.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Bernd S. schrieb:
> Der Scheiß AS7 Simulator macht alles beim Timer2 und beim Timer0 streikt
> er.
>
Man muss ihn nur mit OUT anstatt STS füttern, dann geht auch alles.

Trotzdem auch beim Timer0 hab ich das Problem :

Gelb -> OC0B ( Pin11/PD5 )
Cyan -> OC2B ( Pin5 /PD3 ) mit 15k Pulldown


Der eine µC der noch nicht mit DebugWire gelaufen ist stammt aus TAIWAN 
und kommt aus 1620, was wohl bedeutet 16te Woche und Jahr 2000.

Hab gerade noch mal beim Landolt nachgeschaut :
Wohl eher 2016 & 20igste Woche

>
>Und wie sieht die Port-Freigabe genau aus? Der Kommentar ist ja falsch.
>
Stimmt Kommentar ist Falsch. Kommt halt von COPY/PASTE und schusselig 
sein.



Bernd_Stein

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Habe ich das jetzt richtig verstanden - es ist nur dieser eine 
ATmega88PA betroffen, auf dem ATmega168PA ist alles in Ordnung?

"1620" heißt übrigens Kalenderwoche 20 von 2016.

von S. Landolt (Gast)


Lesenswert?

> Man muss ihn nur mit OUT anstatt STS füttern, dann geht auch alles.

Sehen Sie, und genau deshalb hatte ich Ihnen das macro put angeboten.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

S. Landolt schrieb:
> Habe ich das jetzt richtig verstanden - es ist nur dieser eine
> ATmega88PA betroffen, auf dem ATmega168PA ist alles in Ordnung?
>
> "1620" heißt übrigens Kalenderwoche 20 von 2016.
>
N E I N.
Alle drei machen den Mist ( 2x Mega88 ).

Der 168 stammt ebenfalls aus TAIWAN aus 1726.


Weil Reichelt mir den Gefallen nicht tut, warte ich auf Rückmeldung von 
ELPRO.org und werde ggf. dort meine µC her beziehen.

Beitrag "Reichelt Wishlist im µC.net"

>
>Sehen Sie, und genau deshalb hatte ich Ihnen das macro put angeboten.
>
Ich hab gar nicht gerafft was da bezüglich des MACROS passiert und dann 
einfach das Programm assembliert und den µC geflashed. Werde mich mal 
bei Gelegenheit und Lust mit MACROS befassen.


Bernd_Stein

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Bernd S. schrieb:
> N E I N.
> Alle drei machen den Mist ( 2x Mega88 ).
> ....

Heißt das jetzt, alle Prozessoren sind defekt?

von S. Landolt (Gast)


Lesenswert?

Also im Augenblick bin ich ratlos, tut mir leid.

von Helmut S. (helmuts)


Lesenswert?

Hallo Bernd.

Stell doch mal dein Oszilloskop auf Spitzenerfassung.

Handbuch
https://produktinfo.conrad.com/datenblaetter/100000-124999/122485-an-01-de-VOLTCRAFT_DSO_1062D_DIGITAL_OSZILLOSKOP.pdf

Datenerfassung
Wenn Sie ein Analogsignal erfassen, dann wandelt das Oszilloskop dieses 
in ein Digitalsignal um.Es gibt zwei Erfassungsarten: Echtzeiterfassung 
und Äquivalentzeiterfassung. Es gibt drei Arten der  Echtzeiterfassung: 
Normal,  Spitzenwert  erfassen  und  Mittelwert.  Die  Erfassungsrate 
hängt  von der Einstellung der Zeitbasis ab.


Normal,  Spitzenwert  erfassen  und  Mittelwert.
Die  Erfassungsrate  hängt  von der Einstellung der Zeitbasis ab.

Normal: Bei dieser Erfassungsart tastet das Oszilloskop das Signal in 
gleichmäßigen Abständen ab, um die Signalform zu erstellen. Bei dieser 
Methode werden die Signale meistens sehr präzise dargestellt. Jedoch 
kann man bei dieser Methode keine schnellen Schwankungen im Analogsignal 
erfassen,   die   eventuell   zwischen zwei   Abtastungen   auftreten 
können,   welches   zu   einem   Aliasingfehler und zum Auslassen 
schmaler Impulse führen kann. In diesen Fällen sollten Sie den 
Spitzenerfassungsmodus zur Datenerfassung wählen.

Spitzenerfassung: Bei dieser Erfassungsart erhält das Oszilloskop die 
maximalen und minimalen Werte des Eingangssignals jedes Abtastinvervalls 
und verwendet diese Werte, um die Signalform anzuzeigen. Auf diese Weise 
kann das Oszilloskop die schmalen Impulse erfassen und anzeigen, die 
ansonsten  im  Normalmodus verloren  gegangen  wären.  Allerdings  kann 
es  bei  dieser  Methode zu stärkerem Rauschen kommen.

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Also ich habe jetzt extra einen ATmega168PA (Taiwan, 1703) aus einem 
Datenschreiber ausgebaut und mit Ihrem Programm getestet: auf meinem 
alten HM604-Analogoszilloskop sehe ich keine Aussetzer.

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

S. Landolt schrieb:
> Also im Augenblick bin ich ratlos, tut mir leid.
>
Ohne eure Anmerkungen und Bemühungen hätte ich den Fehler wohl nie 
gefunden.


@Helmut S.
Ja, DSO hatte ich dann auch im Verdacht, nachdem es ja bei Landolt 
funktionierte und die µC aus verschiedenen Jahren kamen.

Es hat mit der eingestellten Speichertiefe zu tun die man unter ACQUIRE 
einstellen kann. Es war auf die kleinste eingestellt ( 4k ) je höher der 
Wert desto träger reagiert dass DSO auf die Bediendrehknöpfe, deshalb 
ist es wohl Werksseitig so eingestellt gewesen.

Mit 40k ist bei 2ms bis 8ms alles OK, allerdings dann bei der nächsten 
möglichen Einstellung ab Sec/DIV 20ms kommt es wieder zum Fehlverhalten 
des DSO, sowie dies ebenfalls ab einer Einstellung von 400ms auch bei 
512k passiert, wo die Bedienung schon sehr, sehr träge reagiert.


Danke nochmals an Alle, die hier mitgewirkt haben und dies ausnahmslos 
konstruktiv.


Bernd_Stein

von Helmut S. (helmuts)


Lesenswert?

Stell halt bei 20ms auf mindestens 120k Speichertiefe. Dann wird es 
wieder richtig dargestellt.

: Bearbeitet durch User
von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Helmut S. schrieb:
> Stell halt bei 20ms auf mindestens 120k Speichertiefe. Dann wird es
> wieder richtig dargestellt.
>
Hab ja nur das zur Verfügung was unter Aquire bereitgestellt wird.

Übrigens geht es auch mit 4k wenn Aquire -> Peak, wie du geschrieben 
hast eingestellt wird ( siehe Screen Shot ).

Und nun ist Schluss für mich mit diesem Kapitel ;-)


Bernd_Stein

von Helmut S. (helmuts)


Lesenswert?

Hallo Bernd,
danke für die Messungen. Auf das Problem mit den "verschluckten" 
schmalen Pulsen werden noch viele stoßen.
Gruß
Helmut

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Dieser µC besitzt ja :
1
-Two   8-bit Timer/Counters with Separate Prescaler and Compare Mode
2
-Four 16-bit Timer/Counters with Separate Prescaler, Compare- and Capture Mode
3
– Real Time Counter with Separate Oscillator
4
– Four 8-bit PWM Channels
5
– Six/Twelve PWM Channels with Programmable Resolution from 2 to 16 Bits
6
  (ATmega1281/2561, ATmega640/1280/2560)
Die beiden 8-Bit Zeitgeber / Zähler sind T/C 0 & T/C 2.

Die vier  16-Bit Zeitgeber / Zähler sind T/C 1, 3, 4 und 5.

Der Real Time Counter ist nicht extra, sondern nutzt dann den T/C 2.

Vier 8-Bit PWM-Kanäle ergeben sich aus jeweils 2 für jeden 8-Bit T/C.

Sechs bzw. zwölf PWM-Kanäle mit Auflösungen von 2 bis 16 Bit.
Da muss ich etwas überlegen. OC0A teilt sich mit OC1C den PORT B7.

OC0 = 2 PWM-Kanäle, wenn OC1C nicht genutzt wird ( T/C0 ).

OC1 = 3 PWM-Kanäle, wenn OC0A nicht genutzt wird ( T/C1 ).

OC2 = 2 PWM-Kanäle                               ( T/C2 ).

OC3 = 3 PWM-Kanäle

OC4 = 3 PWM-Kanäle

OC5 = 3 PWM-Kanäle

Also stehen einem maximal zwölf 16-Bit PWM-Kanäle und drei 8-Bit PWM 
Kanäle, oder elf 16-Bit PWM-Kanäle und vier 8-Bit PWM-Kanäle zur 
Verfügung. Ok, das war jetzt erst einmal ein grober Überblick.


Ich brauch 5 Rechtecksignale mit in etwa gleichen An,- und Auszeiten, wo 
die Frequenz möglichst einen weiten Bereich abdeckt.
Fragen dazu folgen noch. Klar ist erstmal, dass nur die 16-Bit 
PWM-Kanäle dafür in Frage kommen.

Bernd_Stein

: Bearbeitet durch User
von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

Wenn ich alles richtig verstanden habe, habe ich vier Möglichkeiten ein 
symetrisches Rechtecksignal zu erzeugen.
1
1. Normal Mode 0
2
   Hier muss man einen Timer Overflow Interrupt benutzten.
3
   In der zugehörigen ISR ist immer wieder der Wert im Timer Count Register
4
   ( TCNTx ) neu zu schreiben, sowie der Portpin zu toggeln.
5
6
2. CTC-Mode  4   "1" Clear Timer on Compare Match.
7
   Hierbei wird dass Output Compare Register A ( OCRxA ) _einmalig_ 
8
   mit einem Wert geladen.
9
   Außerdem muss man den Timer x Compare Interrupt A ( TIMERx COMPA )   
10
   benutzen.
11
   In der zugehörigen ISR ist noch der Portpin zu toggeln.
12
13
3. CTC-Mode 12   "2" Clear Timer on Compare Match.
14
   Hierbei wird dass Input Capture Register ( ICRx ) _einmalig_ 
15
   mit einem Wert geladen.
16
   Außerdem muss man den Timer x Capture Event ( TIMERx CAPT )
17
   Interrupt benutzen.
18
   In der zugehörigen ISR ist noch der Portpin zu toggeln.
19
20
4. CTC-Mode 4    "3" Clear Timer on Compare Match.
21
   Hierbei wird dass Output Compare Register A ( OCRxA ) _einmalig_ 
22
   mit einem Wert geladen.
23
   Jetzt wird jedoch im Timer/Couter Control Register A ( TCCRxA ) dass
24
   Bitpärchen COMxA1 & COMxA0 auf Toggeln gestellt.
25
   Hinzu ist unbedingt der OCxA-Pin auf Ausgang zu konfigurieren.


Die Variante 4, halte ich für die beste, da weder ein Interrupt benötigt 
wird noch ein Portpin getoggelt werden muss. Nachteilig ist unter 
Umständen, wenn der entprechende OCxA-Pin nicht zur Verfügung steht.

Wie seht ihr das ?


Bernd_Stein

: Bearbeitet durch User
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.