Forum: Mikrocontroller und Digitale Elektronik ATtiny13 Fast PWM-Mode mit OCR0A und extremwerten


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



Lesenswert?

Hallo zusammen,

wollte mir mal diesen Abschnitt aus dem Datenblatt Seite 64
des ATtiny13 ansehen. Das heißt, wie so ein Spike auf dem Oszilloskop 
aussieht.

" The extreme values for the OCR0A Register represents special cases 
when generating a PWM waveform output in the fast PWM mode. If the OCR0A 
is set equal to BOTTOM, the output will be a narrow spike for each MAX+1 
timer clock cycle. Setting the OCR0A equal to MAX will result in a 
constantly high or low output
(depending on the polarity of the output set by the COM0A1:0 bits.) "

Leider kann ich mit meinem Analogen Oszi ( 20Mhz ) irgendwie diesen 
Spike nicht sehen. Habe mal ein paar Bilder von dem gemacht was ich 
sehen kann.

BOTTOM_7_AC_NON_003.jpg
Zeigt den Fast PWM-Mode 7 mit OCR0A=$00 im Non-invert Mode
(COM0A1 = 1 ; COM0A0 = 0 ).


Oszi Einstellungen sind :

AC
TIME  / DIV   0,2µs
VOLTS / DIV    50mV
TRIGGERMODE   AUTO

Bei der Oszi Einstellung DC ist ein Dauer High zu sehen ( ca. 5V )
Was seltsamerweise zu Seite 68  Table 27 Note: 1. passt
obwohl ja OCR0A = BOTTOM ist und nicht MAX.

Wer kann mir mal ein Oszibild zeigen, der diesen Spike,
der im oben genannten Datenblattabschnitt erzeugt werden soll ?

Anbei noch das Progamm für den ATtiny13 im Auslieferungszustand.


Bernd_Stein

von Falk B. (falk)


Lesenswert?

@Bernd Stein (bernd_stein)

>      Webbild_BOTTOM_7_AC_NON_003.jpg
>      746.1 KB, 1 Downloads
>      MAX_7_AC_NON_012.jpg
>      737.3 KB, 2 Downloads
>      MAX_7_AC_DC_INVERT_013.jpg
>      728.8 KB, 1 Downloads
>      Mode_3_016.jpg
>      747.3 KB, 2 Downloads
>      BOTTOM_7_AC_DC_INVERT_005.jpg
>      723.1 KB, 3 Downloads

Deine Bilder sind nichtsagend.

>des ATtiny13 ansehen. Das heißt, wie so ein Spike auf dem Oszilloskop
>aussieht.

Ganz einfach. Es ist ein Puls von der Dauer eines Zählertaktes.

>Leider kann ich mit meinem Analogen Oszi ( 20Mhz ) irgendwie diesen
>Spike nicht sehen.

Doch, du muss es "nur" richtig einstellen.

>AC
>TIME  / DIV   0,2µs
>VOLTS / DIV    50mV
>TRIGGERMODE   AUTO

Unsinn. Mach DC, 2V/DIV, Trigger Normal

>Bei der Oszi Einstellung DC ist ein Dauer High zu sehen ( ca. 5V )

Weil der Puls (Spike) sehr dünn ist, 1/256 der PWM-Periode.

Setz mal den Prescaler auf ein paar höhere Werte, dann siehst du den 
Puls.

MFG
Falk

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


Angehängte Dateien:

Lesenswert?

Falk Brunner schrieb:
>
> Deine Bilder sind nichtsagend.
>
Das würde ich nicht sagen. Ok habe nicht alle Bilder beschrieben, wollte 
erstmal auf Resonanz warten.
>
>
> Ganz einfach. Es ist ein Puls von der Dauer eines Zählertaktes.
>
Habe mal den CLKT0 durch 64 geteilt ( CS00 und CS01 auf 1 ).
Dachte schon jetzt hab ich es. Schön punktierte Linie. Leider musste ich 
feststellen das mein Oszi spinnt, obwohl kein Signal angelegt ist und 
auf GND steht. Mal abwarten das hatte ich schonmal. Nach einiger Zeit 
ist das Oszi warmgelaufen und verrichtet wieder seinen Dienst.
>
>>Leider kann ich mit meinem Analogen Oszi ( 20Mhz ) irgendwie diesen
>>Spike nicht sehen.
>
> Doch, du muss es "nur" richtig einstellen.
>
>>AC
>>TIME  / DIV   0,2µs
>>VOLTS / DIV    50mV
>>TRIGGERMODE   AUTO
>
> Unsinn. Mach DC, 2V/DIV, Trigger Normal
>
Nein. Diese Angaben dienen der Bilderklärung ..._003.jpg
>
>>Bei der Oszi Einstellung DC ist ein Dauer High zu sehen ( ca. 5V )
>
> Weil der Puls (Spike) sehr dünn ist, 1/256 der PWM-Periode.
>
Ja und das würde ich halt trotzdem gerne sehen wollen können. Aber denke 
das schafft mein Oszi nicht.

BOTTOM_7_AC_DC_INVERT_005.jpg
Zeigt den Fast PWM-Mode 7 mit OCR0A=$00 im invert Mode
(COM0A1 = 1 ; COM0A0 = 1 ).


Oszi Einstellungen sind :

AC
TIME  / DIV   0,2µs
VOLTS / DIV    20mV
TRIGGERMODE   AUTO

Hier ist das Signal doppelt so stark, da sich 20mV/cm eingestellen 
ließen ohne das über den Bildschrim dargestellt wurde.

Außerdem bei der Oszi Einstellung DC ist ein Dauer High
zu sehen ( ca. 5V )
Was seltsamerweise zu Seite 68  Table 27 Note: 1. nicht mehr passt
da ja durch INVERT ( COMOA0 & COM0A1 = 1 ) dauer Low-Signal zu sehen 
sein sollte.

Bernd_Stein

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


Angehängte Dateien:

Lesenswert?

Bernd Stein schrieb:
>
> Habe mal den CLKT0 durch 64 geteilt ( CS00 und CS01 auf 1 ).
> Dachte schon jetzt hab ich es. Schön punktierte Linie. Leider musste ich
> feststellen das mein Oszi spinnt, obwohl kein Signal angelegt ist und
> auf GND steht. Mal abwarten das hatte ich schonmal. Nach einiger Zeit
> ist das Oszi warmgelaufen und verrichtet wieder seinen Dienst.
>
Nun Funktioniert das Oszi wieder. Aber alle Einstellversuche bringen das 
gleiche Bild mit gleicher Frequenz, obwohl der Prescaler ja umgestellt 
wurde ( / 64 ).

Seltsam.

Hier mal das Programm. Allderdings ist hier der ATtiny13 in seinem 
Auslieferungszustand ( 1,2MHz ).
Vielleicht ist ja jemand von Euch in der Lage,
ein gescheites Oszibild damit hinzukriegen und hier mal zu zeigen.

> Bernd_Stein

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das Signal klingelt wie blöde. Hätte das Scope zu geringe Bandbreite, 
würde das Signal einfach nur kleiner und gleichzeitig flacher 
dargestellt. Daher vermute ich, daß du ein Masseproblem hast. Also 
ordentliches Bild deines Aufbaus posten.
Wobei bei einem 20MHz Scope der Masse-Clip keine so große Rolle spielt. 
Aber warten wir ab.

von Falk B. (falk)


Lesenswert?

@  Bernd Stein (bernd_stein)

>auf GND steht. Mal abwarten das hatte ich schonmal. Nach einiger Zeit
>ist das Oszi warmgelaufen und verrichtet wieder seinen Dienst.

Mit einem defekten Oszi kann man schlecht messen.

>Oszi Einstellungen sind :

>AC
>TIME  / DIV   0,2µs
>VOLTS / DIV    20mV
>TRIGGERMODE   AUTO

Bis du so merkbereit oder tust du nur so?

20mV/DIV ist vollkommener UNSINN! Du braucht 1V/DIV bzw. wenn du einen 
10:1 Tastkop hast 0,1V/DIV.

>Außerdem bei der Oszi Einstellung DC ist ein Dauer High
>zu sehen ( ca. 5V )

Genau DAS ist der SINN der Sache. Das Signal ist fast immer HIGH, es 
gibt nur einen kurzen Puls nach LOW.

>Was seltsamerweise zu Seite 68  Table 27 Note: 1. nicht mehr passt
>da ja durch INVERT ( COMOA0 & COM0A1 = 1 ) dauer Low-Signal zu sehen
>sein sollte.

Dann hast du auch eine falsche Einstellung in der Software.

Mach es so. Stell erstmal 50% Tastverhältnis ein und stelle es SAUBER 
auf deinem OSZI dar.
Dann 2$%, 10%, 1%, 1/256.

Irgendwann steigt deine Gurke aus. Dann weißt du aber, dass es eine 
Gurke ist.

MFG
Falk

P.S EIN Thread reicht!

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ein Zehntel der Bilder reicht eigentlich auch. Sorry.

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



Lesenswert?

Abdul K. schrieb:
> Das Signal klingelt wie blöde. Hätte das Scope zu geringe Bandbreite,
> würde das Signal einfach nur kleiner und gleichzeitig flacher
> dargestellt. Daher vermute ich, daß du ein Masseproblem hast. Also
> ordentliches Bild deines Aufbaus posten.
> Wobei bei einem 20MHz Scope der Masse-Clip keine so große Rolle spielt.
> Aber warten wir ab.
>
Oh Mann,

langsam dämmerts mir in was für zeitlichen Dimensionen ich hier geraten 
bin.

Beitrag "Re: Spike sichtbar machen. Welches Oszilloskop kann dies leisten ?"

Wenn Du jetzt noch meine Platine siehst, wirst Du als erfahrener 
Elektroniker wahrscheinlich nur den Kopf schütteln und schmunzeln.


Bernd_Stein

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

100ns solltest du bei einem 20MHz noch gut erkennen können. Klar, die 
Kurvenform ist suboptimal.

Ich wollte auf deinem Foto den Tastkopf angeschaltet sehen. Was ist das 
eigentlich für ein Tastkopf?

Kontrolliere einfach mal die Masse zwischen AVR-GND und Scope mit einem 
Multimeter auf Durchgang.

von Hannes L. (hannes)


Lesenswert?

Was willst Du eigentlich erreichen?

Im WGM-Modus 7 ist ocr0a der Top-Wert, also der Zählumfang des Timers. 
Das dient dazu, um für Top einen anderen Wert als 255 einstellen zu 
können, also die PWM in einem anderen Raster als n/256 betreiben zu 
können. Bei Begrenzung des Zählumfangs durch OCR0A ist OC0A natürlich 
nicht mehr nutzbar, da bleibt dann nur noch OC0B übrig, dessen 
"Schaltpunkt" mit OCR0B eingestellt wird.
Oder anders ausgedrückt: OCR0A stellt im Mode 7 den Zählumfang der PWM 
ein, OCR0B stellt den Tastgrad am Pin OC0B ein, der Pin OC0A ist nicht 
(sinnvoll) nutzbar.

Es ist übrigens Unfug, den Timer von 0 bis 0 zählen zu lassen. Eine 
sinnvolle Anwendung des Mode 7 wäre z.B.:

ocr0a=100 ;100 Schritte
ocr0b=0...100 ;PWM-Tastgrad am OC0B-Pin

Was ich Dir im letzten Absatz hier
Beitrag "Re: ATtiny13 Datenblatt External Clock Source on T0-Pin"
schrieb, gilt auch für die PWM-Pins des Timers. Der Tiny13 hat nur den 
einen Timer. Nutzt man ihn für PWM mit begrenztem oder gar variablem 
Zählumfang, dann fehlt er für Interrupts zum Erzeugen einer Zeitbasis. 
Und die wird in fast jedem sinnvollen Programm gebraucht.

Nochmal zum Text Deines Betreffs:
" _Re: ATtiny13 Fast PWM-Mode mit OCR0A und extremwerten_ "

Ehe Du Dich mit "Extrem"-Situationen befasst, solltest Du Dich erstmal 
um die ganz normale Anwendung des Timers kümmern. Also Erzeugen von 
Timer-Interrupts mit konstanten und variablen Intervallen, Messen von 
Impulsbreiten bzw. -Abständen, Erzeugen von Frequenzen am OC0x-Pin, 
Erzeugen von PWM am OC0x-Pin.

Als Übungsbeispiele empfehle ich Dir:
- Dimmen einer LED mittels PWM, gesteuert von einem Poti am ADC
- unabhängiges PWM-Dimmen von 2 LEDs anhand 2 Potis an 2 ADC-Eingängen
- Einlesen und Auswerten von Servoimpulsen eines RC-Empfängers (RC-
  Schaltmodul)
- Generieren von Servoimpulsen mittels Poti am ADC
- Generieren von 2 unabhängigen Servoimpulsen mittels 2 Potis

Wenn Du das durch hast, dann kannst Du Dich auch mal mit den extremen 
Situationen befassen. Aber bis dahin wirst Du wohl selbst gemerkt haben, 
dass diese kein Mensch braucht, dass Du damit nur Deine Zeit vertrödelst 
und evtl. auch einige Leute nervst.

...

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Er gibt sich aber Mühe (Da gibts hier zuhauf andere Beispiel!). Das muß 
gewürdigt werden!
Neben der Software haben wir definitiv aber auch ein Hardware-Problem!

von Hannes L. (hannes)


Lesenswert?

Abdul K. schrieb:
> Er gibt sich aber Mühe

Ja sicher doch.

> (Da gibts hier zuhauf andere Beispiel!). Das muß
> gewürdigt werden!

Ja, trotzdem verzettelt er sich mit unwichtigen Dingen.

> Neben der Software

Ich konnte den Spike auf meinem Uralt-Oszi auch nicht sehen. Ich gehe 
aber davon aus, dass da gar keiner ist.

Zur Software:

Timer0 werkelt mit Controllertakt und soll von 0 bis 0 zählen.
Ob der aktivierte OC0A-Pin darauf reagieren kann, weiß ich nicht und es 
interessiert mich eigentlich auch nicht, da es keinen praktischen Nutzen 
hätte.
Zusätzlich gibt es aber noch einen Timer0-Überlauf-Interrupt, in dessen 
ISR zwei Zähler heruntergezählt werden und ein Portpin getoggelt wird. 
Dumm nur, dass die Abarbeitung der ISR bedeutend länger dauert, als der 
Timer zum Überlaufen braucht.
Ich kann diesem Programm daher nichts abgewinnen, obwohl es eigentlich 
recht ordentlich aussieht (Kommentare, Formatierung).

> haben wir definitiv aber auch ein Hardware-Problem!

Das habe ich mir so genau nicht angesehen, sieht aber recht wüst aus. 
Kann aber passieren, wenn man eine Testplatine für alle möglichen 
Testschaltungen benutzt.

Gruß in den Süden...

...

von Schaltungswächter (Gast)


Lesenswert?

Hat schon mal jemand daran gedacht einen Zähler dranhängen zu lassen?
74HCT393 z.B.

von Hannes L. (hannes)


Lesenswert?

Schaltungswächter schrieb:
> Hat schon mal jemand daran gedacht einen Zähler dranhängen zu lassen?
> 74HCT393 z.B.

Gedacht schon, aber nicht geschrieben, da ich diese ganze Aktion für 
Zeitverschwendung halte. Es gibt Wichtigeres zu lernen...

...

von Falk B. (falk)


Lesenswert?

@Hannes Lux (hannes)

>Ich konnte den Spike auf meinem Uralt-Oszi auch nicht sehen. Ich gehe
>aber davon aus, dass da gar keiner ist.

Doch, da ist einer. Aber der ist ein regulärer Puls von einem Timertakt. 
Man kann eben nicht DIREKT 0% UND 100% PWM erzeugen, dazu muss man die 
OCRA Funktion ausschalten, je nach Modus bei 0% oder 100%.

von Hannes L. (hannes)


Lesenswert?

Falk Brunner schrieb:
> @Hannes Lux (hannes)
>
>>Ich konnte den Spike auf meinem Uralt-Oszi auch nicht sehen. Ich gehe
>>aber davon aus, dass da gar keiner ist.
>
> Doch, da ist einer. Aber der ist ein regulärer Puls von einem Timertakt.
> Man kann eben nicht DIREKT 0% UND 100% PWM erzeugen, dazu muss man die
> OCRA Funktion ausschalten, je nach Modus bei 0% oder 100%.

Mich brauchst Du diesbezüglich nicht zu belehren, ich bin mit dem Timer 
des Tiny13 bisher immer ganz gut zurecht gekommen. Lies bitte auch meine 
anderen Texte in diesem Thread, dann weißt Du, wie ich das meine.

Nach Veränderung von Bernds Programm kann ich auch Impulse sehen.

...

von Falk B. (falk)


Lesenswert?


von Hannes L. (hannes)


Lesenswert?

Falk Brunner schrieb:
> Beitrag "Re: Spike sichtbar machen. Welches Oszilloskop kann dies leisten ?"

Das habe ich gelesen, es ist aber nicht relevant, da es nicht mehr das 
Programm von Bernd ist. Wenn ich ein sinnvolles Programm schreibe, kann 
ich mit meinem alten ED2 die Impulse auch sehen:

Hannes Lux schrieb:
> Nach Veränderung von Bernds Programm kann ich auch Impulse sehen.

...

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


Angehängte Dateien:

Lesenswert?

Abdul K. schrieb:
...
> Ich wollte auf deinem Foto den Tastkopf angeschaltet sehen. Was ist das
> eigentlich für ein Tastkopf?
>
> Kontrolliere einfach mal die Masse zwischen AVR-GND und Scope mit einem
> Multimeter auf Durchgang.
>
Der Widerstand beträgt zwischen 0,6 und 0,7 Ohm. Kurzgeschlosse 
Meßleitungen sind 0,3 Ohm also zwischen 0,3 und 0,4 Ohm.

Daten vom Tastkopf siehe Foto. War ein günstiges Teil,
das für ein 20MHz Oszi reichen sollte - so dachte ich.


Bernd_Stein

von Falk B. (falk)


Lesenswert?

der reicht, das Problem liegt woanders. U.a. an deiner fehlerhaften 
Software. Konntest du denn nun wegistens 50% Tastverhältnis sehen?

http://www.mikrocontroller.net/topic/goto_post/2216070

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


Lesenswert?

Hannes Lux schrieb:
> Was willst Du eigentlich erreichen?
>
Dachte das habe ich bereits im ersten Posting klar gemacht.
Hielt mich da an die Kurzformel. Ich glaub die war sogar von Dir.

1. Was will ich ?
2. Was habe ich ?
3. Hindernisse

Ich arbeite ja das Datenblatt des ATtiny13 in bezug auf den
" 8-Bit Timer/Counter with PWM " durch. Da wollte ich einfach mal die 
erwähnte Textpassage aus dem Datenblatt praktisch nachvollziehen.
Dabei merkte ich, das mein leicht angeschlagenes Oszi wahrscheinlich 
nicht in der Lage ist dies darzustellen.

Darauf hin ist mir die Idee gekommen, dies gleich damit zu verbinden mir 
mal ein paar Bilder von anderen ( günstigen ) Scopes ansehen zu wollen, 
die dazu in der Lage sind. Zwecks Nachkauf dieses Scopes. Deshalb der 
andere Thread. Leider haute das nicht ganz so hin. Der einzige der 
wirklich auf das einging war Jörg Wunsch ( Moderator ). Leider ist sein 
Scope mir ein wenig zu teuer.

Beitrag "Re: Spike sichtbar machen. Welches Oszilloskop kann dies leisten ?"

...
> Oder anders ausgedrückt: OCR0A stellt im Mode 7 den Zählumfang der PWM
> ein, OCR0B stellt den Tastgrad am Pin OC0B ein, der Pin OC0A ist nicht
> (sinnvoll) nutzbar.
>
Das ist ja interessant. Dachte bisher OCR0A und OCR0B sind getrennt zu 
betrachten ( PWM-Kanal A und PWM-Kanal B ).
Im Übersichtsbild des Timer/Counters auf Seite 57 ist auch zu sehen das 
OC0A beispielsweise auf das OC0A-Register und somit im PWM-Mode auf den 
OC0A-Pinn ( PB0 ) einwirkt. Dies seperat auch für OC0B.
Habe ja auch einiges zum Timer/Couter gelesen, aber das ist mir so für 
den ATtiny13 nicht als Möglichkeit aufgefallen.

>
> Es ist übrigens Unfug, den Timer von 0 bis 0 zählen zu lassen. Eine
> sinnvolle Anwendung des Mode 7 wäre z.B.:
>
...

Ja, da hast Du natürlich recht. Aber es dient ja zum erkennen das mein 
Scope gar nicht in der Lage ist solch ein Fehler ( Spike )
zu dedektieren, geschweige darzustellen.
So ein Spike kann ganz schon fiese Sachen machen, deshalb wollte ich 
halt mal sehen, ob ich mit meinem Scope so etwas auf die Schliche komme.
Du bezweifelst ja selbst das hier einer erzeugt wird.
Jörg Wunsch und auch andere sind halt in der Lage solchen Störungen auf 
die Schliche zu kommen. Auch im Mode 3 sollte dieser Spike erzeugt 
werden.

...
> Aber bis dahin wirst Du wohl selbst gemerkt haben,
> dass diese kein Mensch braucht, dass Du damit nur Deine Zeit vertrödelst
> und evtl. auch einige Leute nervst.
>
Da muß ich Dir leider zustimmen. Diese kleine Passage im Datenblatt hat 
mich ganz schön Zeit gekostet, aber jetzt bin ich damit fertig
( so lange ich noch kein neues Scope habe und falls ich es bis dahin 
nicht vegessen habe )

Bernd_Stein

von Falk B. (falk)


Lesenswert?

@  Bernd Stein (bernd_stein)

>> Oder anders ausgedrückt: OCR0A stellt im Mode 7 den Zählumfang der PWM
>> ein, OCR0B stellt den Tastgrad am Pin OC0B ein, der Pin OC0A ist nicht
>> (sinnvoll) nutzbar.

>Das ist ja interessant. Dachte bisher OCR0A und OCR0B sind getrennt zu
>betrachten ( PWM-Kanal A und PWM-Kanal B ).

Sind sie auch, aber nicht im Mode 7!!!

von Schaltungswächter (Gast)


Lesenswert?

Man muss nicht unbedingt sehen ob ein Spike da ist wenn man seine 
Wirkung kennt. Ein schneller Zählerbaustein hätte Dir das Vorhandensein 
eines (Spike) Signals auch anzeigen können.

Aber Du möchtest ja einen Oszi kaufen und jetzt hast Du einen Grund.

Mich würde interessieren für welchen Du Dich entscheiden wirst.

Ich bin ebenfalls auf der Suche.
Da ich ihn auch für Feldversuche brauchen werde, überlege ich mir einen 
USB Vorsatz für den Laptop zu beschaffen.

Etwa 100-250 Ms/s und >1M Speichertiefe.

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


Lesenswert?

Hannes Lux schrieb:
...
> Zusätzlich gibt es aber noch einen Timer0-Überlauf-Interrupt, in dessen
> ISR zwei Zähler heruntergezählt werden und ein Portpin getoggelt wird.
> Dumm nur, dass die Abarbeitung der ISR bedeutend länger dauert, als der
> Timer zum Überlaufen braucht.
>
Dachte die PWM läuft seperat ab. Rein Hardwaremäßig.
TCNT0 = OCR0A  => Portpinnzustand wie durch COM0A1 & COM0A0 eingestellt 
ändern. Dadurch sollte das PWM-Signal unbeeinflußt durch die 
zugegebeneermaßen fehlerhafte Software sauber arbeiten und nach jedem 
Update des OCR0A-Registers ( gepuffert ) ein Spike erzeugen.

Also alle fclk_I/O / 256 ein Spike.

Bernd_Stein

von Hannes L. (hannes)


Lesenswert?

Bernd Stein schrieb:
> Das ist ja interessant. Dachte bisher OCR0A und OCR0B sind getrennt zu
> betrachten ( PWM-Kanal A und PWM-Kanal B ).

Sind sie ja auch, solange man OCR0A nicht als Zählumfangsbegrenzung 
(Top-Einstellung) benutzt, was ja im Mode 7, auf den Du Dich beziehst, 
der Fall ist.

> Im Übersichtsbild des Timer/Counters auf Seite 57 ist auch zu sehen das
> OC0A beispielsweise auf das OC0A-Register und somit im PWM-Mode auf den
> OC0A-Pinn ( PB0 ) einwirkt. Dies seperat auch für OC0B.

Richtig. Nur wenn OCR0A für die Top-Einstellung verwendet wird, steht 
OCR0A nicht mehr für die Compare-Einheit zur Verfügung. Denn Compare 
macht ja nur Sinn, wenn der Compare-Wert zwischen Bottom und Top liegt.

> Habe ja auch einiges zum Timer/Couter gelesen, aber das ist mir so für
> den ATtiny13 nicht als Möglichkeit aufgefallen.

Schau Dir mal den 16-Bit-Timer 1 der meisten anderen AVRs (z.B. 
ATTiny2313) an. Da gibt es 2 Compare-Einheiten, die ICP-Einheit 
(Interrupt mit Zeitstempel-Scann) und den Überlauf. Um den Zählumfang zu 
reduzieren, gibt es neben dem CTC-Mode auch noch die Möglichkeit, das 
ICR-Register als Top-Einstellung zu benutzen. Damit bleiben beide 
Compare-Spuren erhalten, dafür muss man aif ICP verzichten.
Irgendwo (ich weiß den AVR-Typ jetzt nicht aus dem Hut) gibt es auch 
einen 16-Bit-Timer, der das Register OCR1C(H:L) hat, das zur 
Zählumfangsbegrenzung dient.

Beim ATtiny13 nutzt man dafür aber OCR0A, wodurch die Compare-A-Einheit 
für weitere Compare-Dienste ausfällt.

Bernd Stein schrieb:
> Aber es dient ja zum erkennen das mein
> Scope gar nicht in der Lage ist solch ein Fehler ( Spike )
> zu dedektieren, geschweige darzustellen.

Dann nimm Mode 3, und variiere mittels Poti am ADC den Tastgrad der PWM. 
Also PWM-Zählumfang 256, Compare-Wert 0 bis 255 (so, wie es der ADC im 
8-Bit-Modus, also mit linksbündige Formatierung liefert). Dann wird auch 
Dein Oszi diesen Spike bei 0 anzeigen können. Mein uralter ED2 aus 
DDR-Zeit macht es. Beim Tiny13 habe ich das zwar aktuell nicht getestet, 
aber am 8-Bit-Timer0 des Tiny2313 gibt es eine schön sichtbaren Nadel, 
wenn OCR0x auf 0 steht. Deshalb trenne ich z.B. in meinen 
Gartenbahn-Lokfahrtreglern den PWM-Pin vom Timer, wenn Fahrstufe 0 
(Stillstand) anliegt. Diese PWM läuft mit etwa 28,8 kHz (Baudraten-Quarz 
7,3728 MHz, Vorteiler 1:1, Zählumfang 256), der Spike ist am Oszi gut zu 
sehen. Bei anderen Vorteilern (ist per CV konfigurierbar) hörte man 
sogar den Motor piepsen, solange in Stufe 0 der Pin nicht vom Timer 
getrennt wurde.

Ob Du mit Deinem Oszi noch was Anderes falsch machst, will ich hier 
nicht bis ins Detail erörtern. Du solltest dazu die Tips von z.B. Falk 
und Jörg beherzigen und Dich von 50% Tastgrad bei Zählumfang 256 an die 
Grenzwerte 0 und 255 herantasten und dabei das Verhalten Deines Oszis 
beobachten. Ich vermute, Dein Oszi ist ok und Du bist nur (wieder mal) 
das Opfer von Missverständnissen. ^^
Denn mit Deinem Programm (Mode 7, OCR0a=0, ISR für "PLA" mal aktiv und 
mal inaktiv) hat auch mein Oszi nix angezeigt.

...

von Falk B. (falk)


Lesenswert?

@  Bernd Stein (bernd_stein)

>Dachte die PWM läuft seperat ab. Rein Hardwaremäßig.

Das tut sie auch. Aber du hast in deinem Chaos alles unmögliche auf 
einmal in das Programm gepackt.

>Also alle fclk_I/O / 256 ein Spike.

Ja.

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


Lesenswert?

Hannes Lux schrieb:
...
>
> Dann nimm Mode 3, und variiere mittels Poti am ADC den Tastgrad der PWM.
> Also PWM-Zählumfang 256, Compare-Wert 0 bis 255 (so, wie es der ADC im
> 8-Bit-Modus, also mit linksbündige Formatierung liefert). Dann wird auch
> Dein Oszi diesen Spike bei 0 anzeigen können.
> ...
>
OK. Werde dies bezüglich mal experimentieren.
Werde mich dann melden, wenn ich neuer Erkenntnisse habe.


Bis dann
Bernd_Stein

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernd Stein schrieb:
> Jörg Wunsch und auch andere sind halt in der Lage solchen Störungen auf
> die Schliche zu kommen. Auch im Mode 3 sollte dieser Spike erzeugt
> werden.

Naja, ein 100-ns-Impuls ist noch nicht wirklich ein "Spike".

Richtige "Spikes" sind das, was beim Umschalten von Gattern durch
Laufzeiteffekte entsteht, nicht wie hier synchron durch geplantes
Durchlaufen bestimmter Logikzustände.  Sowas hat wenige Nanosekunden.

> Leider haute das nicht ganz so hin. Der einzige der
> wirklich auf das einging war Jörg Wunsch ( Moderator ).

Wobei ich nicht den "daneben programmierten" Mode 7 benutzt habe,
deine originale Firmware hätte sehr wahrscheinlich auch bei mir
keinen Spike erzeugt.  Ich habe einfach nur im Mode 3 mit maximaler
Geschwindigkeit gezeigt, wie breit der Impuls dann noch ist.

> Leider ist sein
> Scope mir ein wenig zu teuer.

Naja, für'n paar Groschen waren Oszilloskope wohl noch nie zu haben.
Mein erster Eigenbau-Oszi (mit einer sagenhaft riesigen 40-mm-Röhre :)
hat mich viele Stunden Arbeit gekostet, natürlich auch viele Erkennt-
nisse dabei gebracht.  Das aktuelle Teil habe ich immerhin zu einem
Preis bekommen, für den du bei China-Neuware gerade mal zwei Kanäle
mit 50 MHz Analogbandbreite bekommen würdest.  Dafür ist es ein wenig
größer und nicht "bunt", aber ich würde es für den Preis trotzdem noch
als Schnäppchen bezeichnen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Bernd Stein schrieb:
> Der Widerstand beträgt zwischen 0,6 und 0,7 Ohm. Kurzgeschlosse
> Meßleitungen sind 0,3 Ohm also zwischen 0,3 und 0,4 Ohm.

Daran kanns dann nicht liegen.


>
> Daten vom Tastkopf siehe Foto. War ein günstiges Teil,
> das für ein 20MHz Oszi reichen sollte - so dachte ich.
>

lol

Ich habe noch zwei Tektronix-Tastköpfe von ca. 1968. Die haben beide 
33MHz Bandbreite.
Ehrlich gesagt, du hast Schrott gekauft. Schau dir mal das 
Spannungsderating vs. Frequenz für das Teil an!
Versuch lieber bei ebäh alte richtige von HP usw. zu schießen. Die sind 
meist auch mechanisch viel besser als der billige Plunder!

Aber für das Problem hier, sollte das keine Einschränkung sein. Dein 
Tastkopfer verschleift das Signal nur etwas.


Er könnte allerdings intern gebrochen sein! Hatte auch mal sowas bei 
einem billigen Teil von Reichelt. TesTek Dreck. Da war der Leiterbahn 
unterbrochen. Im Endeffekt bekommt man dann nur noch etwas kapazitive 
Kopplung rüber.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Abdul K. schrieb:
> Aber für das Problem hier, sollte das keine Einschränkung sein.

Sehe ich auch so.  Ich habe auch noch ein paar solcher Billigteile
rumfliegen, für 08/15-Zeug reichen sie.  Die gezeigten Aufnahmen
waren zwar mit einem Original-HP-Tastkopf gemacht, aber ich bin mir
sicher, dass ich den 100-ns-Impuls auch mit so'nem Billigding noch
gesehen hätte.

von Michael U. (amiga)


Lesenswert?

Hallo,

ein Problem ist mit Sicherheit die Einstellung des Oszi. Wenn der Spike 
negativ sein soll, wie schon oben geschrieben wurde, DC, 2V/DIV.
PWM auf 50% und die Zeitbasis so einstellen, daß ein Durchlauf 
dargestellt wird, also eine Low- und die zugehörige High-Phase.
Trigger dabei auf negativ und evtl. Auto-Mode aus (den Triggermode 
nehmen, wo nur bei einem Signal der Strahl ausgelöst wird).

Jetzt die PWM so, daß der Spike entsthen muß. Entweder ist jetzt ein 
Strahl zu sehen, sonst den Triggerpegel(nur den...) verstellen, bis 
sicher getriggert wird.

Der Impuls ist jetzt links, sollte also links eine senkrechte Kante 
sein, weil da getriggert wird. Er ist 1/256 der Breite der vorher 
komplett eingestellten 50% PWM.

Jetzt mit der Strahllage die linke Kante der Darstellung ca. in die 
Mitte schieben und die Y-Dehnung (hoffentlich verhanden...) aufdrehen.
Dann sollte die Kante zum Impulas aufgelöste werden.
Das bezieht sich hier alles auf einen recht einfachen Analog-Oszi ohne 
Triggerverzögerung usw.

Man kann damit so manches Darstellen, man muß aber vorher wissen, was 
man erwartet und die Einstellungen entsprechend anpassen.
Nur nach Sicht allein bekommt man solche grenzwertigen Sachen kaum 
dargestellt.

Man konnte auch den PAL-Burst auf einem EO174 noch recht stabil 
darstellen, zumindest um zu sehen, ob er wirklich da war...

Gruß aus Berlin
Michael

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich stelle gerade fest das ich dir kaum folgen kann. Bei mir geht 
Scope-Fahren wie Autofahren ganz automatisch. Denke ich gar nicht mehr 
drüber nach.

Verwundert -
Abdul

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jörg Wunsch schrieb:
> Die gezeigten Aufnahmen
> waren zwar mit einem Original-HP-Tastkopf gemacht, aber ich bin mir
> sicher, dass ich den 100-ns-Impuls auch mit so'nem Billigding noch
> gesehen hätte.

Yep, so ist es.  Interessanterweise schwingt der sogar noch ein
wenig über.  Nein, der ist nicht falsch kompensiert, wenn ich bei
dieser Frequenz an der Kompensation drehe, dann wird das gesamte
Bild größer oder kleiner, aber die Überschwinger bleiben.

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


Angehängte Dateien:

Lesenswert?

Hannes Lux schrieb:
...
>
> Im WGM-Modus 7 ist ocr0a der Top-Wert, also der Zählumfang des Timers.
> Das dient dazu, um für Top einen anderen Wert als 255 einstellen zu
> können, also die PWM in einem anderen Raster als n/256 betreiben zu
> können. Bei Begrenzung des Zählumfangs durch OCR0A ist OC0A natürlich
> nicht mehr nutzbar, da bleibt dann nur noch OC0B übrig, dessen
> "Schaltpunkt" mit OCR0B eingestellt wird.
> Oder anders ausgedrückt: OCR0A stellt im Mode 7 den Zählumfang der PWM
> ein, OCR0B stellt den Tastgrad am Pin OC0B ein, der Pin OC0A ist nicht
> (sinnvoll) nutzbar.
> ...
>
Vielen Dank an alle und vor allem an Hannes Lux.

Was ich nicht glauben konnte ( wollte ) kann ich nun schön am 
Oszilloskop beobachten. Wie oben beschrieben ist es tatsächlich mit dem 
ATtiny13 möglich mit einem Poti die Frequenz zu verändern und mit dem 
anderen Poti den Tastgrad. Oben ist der Quellcode hierzu in Assembler.

Bernd_Stein

von Hannes L. (hannes)


Lesenswert?

Bernd Stein schrieb:
> ist es tatsächlich mit dem
> ATtiny13 möglich mit einem Poti die Frequenz zu verändern und mit dem
> anderen Poti den Tastgrad.

Da bist Du einem Irrtum aufgesessen.

Mit dem einen Poti stellst Du die Periodendauer ein und damit die 
Frequenz.

Mit dem anderen Poti stellst Du aber nicht den Tastgrad ein, sondern
die Impulsdauer . Das kannst Du überprüfen, indem Du das Poti, was Du 
für Tastgrad hältst auf 50% Tastgrad (Impulsdauer = Impulspause = 1/2 
Periodendauer) einstellst und dann die Frequenz verstellst, ohne das 
"Tastgradpoti" zu verändern. Du wirst sehen, dass Dein Tastgrad von 50% 
nicht erhalten bleibt.

...

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.