Forum: Mikrocontroller und Digitale Elektronik DCF77 Signal auswerten MEGA2560


von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich habe folgendes Problem...

Ein Timer "1ms" ruft mir eine Routine auf & soll prüfen wie lange der 
Eingang auf einen gewissen Pegel ist. Leider klapppt das nicht ganz.

Wenn eine neue Minute anfängt, sollte die Low Phase ja ca 2000ms lang 
sein.
Diese kann ich mit meinem AVR leider nicht zählen / empfangen.
1
        /* >1500 ms low? */
2
        if( dcf_cntL >= 1500 )
3
        {
4
            dcf_available = true;
5
            dcf_value = DCF_START;
6
            dcf_cntL = 0;
7
      PORTB |= (1<<PB7);
8
        }

wenn ich 1500 jedoch auf 800 setze, empfange ich den neubeginn der 
Minute sauber. Was kann das blos sein? Habe ich evtl. doch den Timer 
falsch konfiguriert?

von Oldie (Gast)


Lesenswert?

Wahrscheinlich macht dein "1ms"-Timer nicht das, was er soll.

Hier haben schon 1000 Leute eine DCF-Uhr gebastelt.

Dein Ansatz ist etwas übertrieben: Mit einem 10 ms Raster
kann man ausreichend genau die Zeiten von 100 ms, 200 ms,
1000 ms und 2000 ms auseinanderhalten.

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Hier lasse ich den PIN Togglen...
Ist doch fast "1ms".

von Jochen S. (jochen_s)


Lesenswert?

Hallo Jan,

die einzige konstante Zeit ist 2ms, nämlich immer dann wenn dein Pin auf 
High geht. Falls du beide Flanken auswertest, fehlt dir immer 3ms in der 
kein Flankenwechsel statt findet.


So habe ich zumindest deinen Screenshot gedeutet.

Gruß
Jochen

: Bearbeitet durch User
von kast (Gast)


Lesenswert?

sind "fast" 1.4 ms
womit 1500 x 1.4 ms größer 2000 ms ist.

von Jochen S. (jochen_s)


Lesenswert?

Sorry, bei Zeitablenkung von 2ms/div kommt die steigende Flanke 
natürlich nur alle 4ms....

Jochen S. schrieb:
> Hallo Jan,
>
> die einzige konstante Zeit ist 2ms, nämlich immer dann wenn dein Pin auf
> High geht. Falls du beide Flanken auswertest, fehlt dir immer 3ms in der
> kein Flankenwechsel statt findet.
>
> So habe ich zumindest deinen Screenshot gedeutet.
>
> Gruß
> Jochen

von Jan (Gast)


Lesenswert?

Ich habe laut dem AVR Calculator genau die Werte errechnet :(
Hier ist meine Konfig vom Timer. Vill. seht ihr ja auf anhieb einen 
Fehler? Es handelt sich hier um einen MEGA2560.
1
/* Settings for the 1ms Base on TIMER1 */
2
TCCR1B  |=  ((1<<CS10) | (1<<CS11)); // Prescaler 64
3
TCCR1A  |=  (1<<WGM11); // CTC (Mode 2) Page 184
4
TIMSK1  |=  (1<<OCIE1A);
5
OCR1AH  |=  0x00; // High Register 
6
OCR1AL  |=  0x7C; // Low Register   --> Value for 1ms ( 0x00F9Hex ) Page 159

von Jan (Gast)


Lesenswert?

Jochen S. schrieb:
> Sorry, bei Zeitablenkung von 2ms/div kommt die steigende Flanke
> natürlich nur alle 4ms....

Ich zähle nur die Impuls der High / Low Phasen.
Mit Flankenerkennung mach ich nichts.

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Ich habe laut dem AVR Calculator genau die Werte errechnet :(
> Hier ist meine Konfig vom Timer. Vill. seht ihr ja auf anhieb einen
> Fehler? Es handelt sich hier um einen MEGA2560.
>
>
1
> 
2
> /* Settings for the 1ms Base on TIMER1 */
3
> TCCR1B  |=  ((1<<CS10) | (1<<CS11)); // Prescaler 64
4
> TCCR1A  |=  (1<<WGM11); // CTC (Mode 2) Page 184
5
> TIMSK1  |=  (1<<OCIE1A);
6
> OCR1AH  |=  0x00; // High Register
7
> OCR1AL  |=  0x7C; // Low Register   --> Value for 1ms ( 0x00F9Hex ) Page 
8
> 159
9
>


Von welcher Taktfrequenz des µC ist auszugehen.

Machs doch nicht so kompliziert.
Es gibt keinen Grund warum du dir selbst die Mühe machen sollst, den 
Wert in High und Low Byte aufzudröseln
1
  OCR1A = 0x007C;   // oder doch 0x00F9?

weiters gibt es keinen Grund, den Wert in Hex anzugeben.
1
  OCR1A = 124;

und weiters gibt es keinen Grund, den Wert selber auszurechnen.
1
   OCR1A = ( F_CPU / 64 / 1000 ) - 1;

F_CPU, weil der Timer in 1 Sekunde genau soviele Takte zählen würde
Fast. Denn durch den Vorteiler von 64 macht er genau nur ein 64-tel 
davon.
Jetzt willst du nicht wissen, wieviele Takte er in 1 Sekunde macht, 
sondern in einem Tausendstel davon.
Und davon noch 1 weg, weil der CTC Übergang auf 0 ja auch ein Taktzyklus 
ist.

ALso: wie gross ist F_CPU? Wie schnell wird der µC getaktet?

: Bearbeitet durch User
von Jan (Gast)


Lesenswert?

Hallo Karl Heinz,

Wieso gibt es dann ein "OCR1AL" & "OCR1AH" Register?

Die CPU Arbeitet mit 8Mhz.

von Joachim B. (jar)


Lesenswert?

Jan schrieb:
> Wieso gibt es dann ein "OCR1AL" & "OCR1AH" Register?

16 bit Timer (Achtung nicht alle haben 16 Bit!)

Karl Heinz schrieb:
>> OCR1AH  |=  0x00; // High Register
>> OCR1AL  |=  0x7C; // Low Register   --> Value for 1ms ( 0x00F9Hex ) Page

und das OCR1AH zu verodern ist keine gute Idee

aber als OCR1A=
wie vorgeschlagen wäre eine gute Idee

Karl Heinz schrieb:
1
OCR1A = ( F_CPU / 64 / 1000 ) - 1;

: Bearbeitet durch User
von Jan (Gast)


Lesenswert?

Joachim B. schrieb:
> und das OCR1AH zu verodern ist keine gute Idee

Sorry, warum nicht?

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Hallo Karl Heinz,
>
> Wieso gibt es dann ein "OCR1AL" & "OCR1AH" Register?

Weil es die Regiuster tatsächlich gibt.
Aber: Das weiß auch dein Compiler. Der macht die Aufteilung für dich.

>
> Die CPU Arbeitet mit 8Mhz.

Dann stimmen die 124

Schreibs trotzdem als Formel hin. Ist auf lange Sicht einfacher, wenn du 
den Compiler rechnen lässt.

Lass den Compiler für dich arbeiten! Der macht nämlich weniger Fehler.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Joachim B. schrieb:
>> und das OCR1AH zu verodern ist keine gute Idee
>
> Sorry, warum nicht?

weil du dort definitiv einen bestimmten Wert drinn stehen haben willst! 
Und zwar unabhängig davon, was vorher drinn stand.

Wenn du i auf 5 haben willst, dann schreibst du ja auch
1
  i = 5;

und nicht
1
   i |= 5;
und machst dich damit angreifbar und abhängig davon, welchen Wert i 
vorher hatte.

von Daniel (Gast)


Lesenswert?

Jan schrieb:
> Sorry, warum nicht?

Weil

> OCR1AH  |=  0x00;

genau dem hier entspricht:

> OCR1AH = OCR1AH;

bzw. dem hier

> ;

Gruß
Daniel

von Jan (Gast)


Lesenswert?

Joachim B. schrieb:
> OCR1A = ( F_CPU  64  1000 ) - 1;

Wird die Zeit immer in µs angegeben?

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Joachim B. schrieb:
>> OCR1A = ( F_CPU  64  1000 ) - 1;
>
> Wird die Zeit immer in µs angegeben?

?

Dir scheint nicht klar zu sein, was hier eigentlich gerechnet wird!

Wenn dein µC mit 8Mhz betrieben wird und du einen Vorteiler von 1 
hättest, wie weit würde der Timer dann in 1 Sekunde zählen?

Na bis 8000000, weil ja der Takt 8Mhz ist.

Jetzt hast du keinen Vorteiler von 1, sondern einen Vorteiler von 64. 
D.h. der Timer zählt nur jeden 64ten Haupttakt.
Wie weit kommt er dann in 1 Sekunde?

Na logischereweise nur bis zu einem 64tel von 8000000.

Das wären 125000.

Wenn du also den Timer bis 125000 zählen lassen würdest, dann würde das 
genau 1 Sekunde langh dauern

Jeztt bist du aber nicht an 1 Sekunde interessiert, sondern an 1 
Millisekunde. Also einem Tausendstel einer Sekunde.
Wie weit muss man daher den Timer zählen lassen, damit dieses zählen 
genau 1/1000 Sekunde dauert.
Na, ein Tausendtel von 125000. Das macht 125

Wenn der Timer also (mit der Takteinstellung) 125 mal zählt, dann dauert 
das 1 Millisekunde.

FAQ: Timer


Ein bischen überlegen, etwas 3 Satz und man braucht keine derartigen 
Timer-Rechner.

: Bearbeitet durch User
von Jan (Gast)


Lesenswert?

Danke Karl Heinz!

Hast du dir meinen Quellcode mal anschauen können? Bei anderen klappt 
die Auswertung ja auch. Ich weiß echt nicht was ich falsch mache. Der 
Empfang ist prima.

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Danke Karl Heinz!
>
> Hast du dir meinen Quellcode mal anschauen können?

Nur schnell überflogen ohne gross durchdenken.

> Bei anderen klappt
> die Auswertung ja auch. Ich weiß echt nicht was ich falsch mache. Der
> Empfang ist prima.

Lass dir mal die gemessenen Zeiten wo ausgeben. Auch die für die Low 
bzw. Highs, die festgestellt werden.

von Dieter F. (Gast)


Lesenswert?

Hallo Jan,

schau Dir doch mal die diversen F_CPU-Definitionen in Deinen 
Code-Bausteinen angeschaut?

Das findet sich in clock.c

#ifndef F_CPU
#define F_CPU 16000000
#endif

das in DCF77_Encode.c

/* Setting for the Crystal */
#ifndef F_CPU
#define F_CPU 8000000
#endif

Wat denn nu? Und welche Definition wird denn wohl gezogen?

von Karl H. (kbuchegg)


Lesenswert?

Dein Oszi Bild ist seltsam.

Der Abstand zwischen den steigenden Flanken beträgt 4ms. Das hätte ich 
jetzt so nicht erwartet.

mach da mal
1
void dcf_check (void)
2
{
3
  
4
   PORTB ^= ( 1 << PB7 );
5
6
...
ganz am Anfang rein und miss noch mal (alle anderen Portzugriff auf PB7 
still legen!).


Ich hab so den Verdacht, dass deine 8Mhz nicht stimmen und es in 
Wirklichkeit nur 4Mhz sind.

von Jan (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> Hallo Jan,
>
> schau Dir doch mal die diversen F_CPU-Definitionen in Deinen
> Code-Bausteinen angeschaut?
>
> Das findet sich in clock.c

Hallo Dieter,

Die "clock.c" habe ich nicht mit eingebunden.

von Jan (Gast)


Lesenswert?

Karl Heinz schrieb:
> Dein Oszi Bild ist seltsam.
>
> Der Abstand zwischen den steigenden Flanken beträgt 4ms. Das hätte ich
> jetzt so nicht erwartet.
>
> mach da malvoid dcf_check (void)
> {
>
>    PORTB ^= ( 1 << PB7 );
>
> ...
> ganz am Anfang rein und miss noch mal (alle anderen Portzugriff auf PB7
> still legen!).
>
> Ich hab so den Verdacht, dass deine 8Mhz nicht stimmen und es in
> Wirklichkeit nur 4Mhz sind.

Ich werde heute abend mal ein Screenshot posten, von meinen Fuses.
Der Quarz ist aufjedenfall auf "INT8MHZRC" eingestellt.

von Dieter F. (Gast)


Lesenswert?

Du hast nicht zufällig alles (FUSES) im Auslieferungszustand belassen?

The device is shipped with inte
rnal RC oscillator at 8.0MHz a
nd with the fuse CKDIV8 pro-
grammed, resulting in 1.0MHz system clock

von Jan (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> The device is shipped with inte
> rnal RC oscillator at 8.0MHz a
> nd with the fuse CKDIV8 pro-
> grammed, resulting in 1.0MHz system clock

Das werde ich mir heute abend noch mal direkt anschauen. Soweit ich das 
weiß, war die CKDIV8 Fuse nicht gesetzt. Nur die 8MHZ.

von Dieter F. (Gast)


Lesenswert?

TCCR1A  |=  (1<<WGM11); // CTC (Mode 2) Page 184

Sollte das nicht Mode 4 und damit WGM12 sein?

Für Timer1 entnehme ich das so dem Datenblatt ... Mode 2 ist PWM bis 
TOP-Wert 0x01FF - oder?

von Karl H. (kbuchegg)


Lesenswert?

Dieter Frohnapfel schrieb:
> TCCR1A  |=  (1<<WGM11); // CTC (Mode 2) Page 184
>
> Sollte das nicht Mode 4 und damit WGM12 sein?
>
> Für Timer1 entnehme ich das so dem Datenblatt ... Mode 2 ist PWM bis
> TOP-Wert 0x01FF - oder?


Jep. Dieter hat hier einen Punkt. Das lese ich ebenfalls aus dem 
Datenblatt.

Und Achtung: WGM12 ist nicht in TCCR1A sondern in TCCR1B!

: Bearbeitet durch User
von Jan (Gast)


Lesenswert?

Karl Heinz schrieb:
> Jep. Dieter hat hier einen Punkt. Das lese ich ebenfalls aus dem
> Datenblatt.
>
> Und Achtung: WGM12 ist nicht in TCCR1A sondern in TCCR1B!

Mode "2" ist doch ClearCompareMatch oder nicht ? Müsste ich Mode "4" 
nehmen?

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Karl Heinz schrieb:
>> Jep. Dieter hat hier einen Punkt. Das lese ich ebenfalls aus dem
>> Datenblatt.
>>
>> Und Achtung: WGM12 ist nicht in TCCR1A sondern in TCCR1B!
>
> Mode "2" ist doch ClearCompareMatch oder nicht ?

Wo siehst du nach?

Datenblatt
http://www.atmel.com/images/doc2549.pdf

Seite 148. Die Tabelle 17.2

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:
> Jan schrieb:
>> Karl Heinz schrieb:
>>> Jep. Dieter hat hier einen Punkt. Das lese ich ebenfalls aus dem
>>> Datenblatt.
>>>
>>> Und Achtung: WGM12 ist nicht in TCCR1A sondern in TCCR1B!
>>
>> Mode "2" ist doch ClearCompareMatch oder nicht ?
>
> Wo siehst du nach?
>
> Datenblatt
> http://www.atmel.com/images/doc2549.pdf
>
> Seite 148. Die Tabelle 17.2

Kann es sein, dass du die falsche Tabelle benutzt hast?
Seite 131, Tabelle 16.8
Die ist aber nur für den Timer 0 zuständig!
Du benutzt aber den Timer 1!

von Karl H. (kbuchegg)


Lesenswert?

Jup. Damit erklärt sich dein Oszi Bild.

ein Top Wert von 511 ergibt

8000000/64 = 125000
125000/512 = 244

Kehrwert davon: 0.004...

da sind die 4ms, die am Oszi zu sehen sind.

von Jan (Gast)


Lesenswert?

Karl Heinz schrieb:
> Jup. Damit erklärt sich dein Oszi Bild.
>
> ein Top Wert von 511 ergibt
>
> 8000000/64 = 125000
> 125000/512 = 244
>
> Kehrwert davon: 0.004...
>
> da sind die 4ms, die am Oszi zu sehen sind.

Oh man,

ich könnte mich selbst schlagen schlag
Auf die Seite "184" habe ich mich die ganze Zeit konzentriert.

Vielen dank an euch!

von Jan (Gast)


Lesenswert?

Ich habe die Settings geändert, jetzt gibt er mir ein Sägezahn ähnlichen 
Verlaus aus, dass ist doch auch nicht richtig...

/* Settings for the 1ms Base on TIMER1 */
TCCR1B  |=  ((1<<CS10) | (1<<CS11) | (1<<WGM12)); // Prescaler 64 & CTC 
Mode
TIMSK1  |=  (1<<OCIE1A); // Output Compare Interrupt Enable
OCR1A  |=  ((F_CPU  64  1000 ) - 1 ); // Counter Register

von Joachim B. (jar)


Lesenswert?

Jan schrieb:
> Joachim B. schrieb:
>> und das OCR1AH zu verodern ist keine gute Idee
>
> Sorry, warum nicht?

was ist denn wenn alter Schrott in OCR1AH steht?

sagen wir 120d und das oderst du mit 0, was kommt raus?

was gibt 120d ODER 0 ? (bitweise)

und was machst du wenn es einen Überlauf im Timer gibt während du an low 
oder high rumoderst?

von Dieter F. (Gast)


Lesenswert?

Jan schrieb:
> jetzt gibt er mir ein Sägezahn ähnlichen
> Verlaus aus

Fällt uns allen schwer, das zu Sehen ... Und wo kommt der 
Sägezahn-ähnliche-Verlauf denn raus?

Jan schrieb:
> OCR1A  |=  ((F_CPU  64  1000 ) - 1 ); // Counter Register

Hast Du keine / -Striche, dann wird auch nicht geteilt ... 
(Kursiv-Schrift hilft da auch nicht :-) )


Oh, und guggst Du da:

Formatierung (mehr Informationen...)
1
C-Code

dann ist das auch richtig lesbar :-)

von Jan (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> Jan schrieb:
>> jetzt gibt er mir ein Sägezahn ähnlichen
>> Verlaus aus
>
> Fällt uns allen schwer, das zu Sehen ... Und wo kommt der
> Sägezahn-ähnliche-Verlauf denn raus?
>
> Jan schrieb:
>> OCR1A  |=  ((F_CPU  64  1000 ) - 1 ); // Counter Register
>
> Hast Du keine / -Striche, dann wird auch nicht geteilt ...
> (Kursiv-Schrift hilft da auch nicht :-) )
>
> Oh, und guggst Du da:
>
> Formatierung (mehr Informationen...)C-Code
> dann ist das auch richtig lesbar :-)

Sorry war vom Handy aus...
Wie wo kommt der raus ? Aus meinem Digital Ausgang ?!

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:

> Sorry war vom Handy aus...
> Wie wo kommt der raus ? Aus meinem Digital Ausgang ?!


Wie, wo, was?

Da kann nirgends ein Sägezahn rauskommen. Noch nicht mal, wenn du 
irrtümlich einen PWM Modus programmiert hättest. Schliessliche vergreift 
sich nach der Initialisierungsphase niemand mehr am OCR1A

von Dieter F. (Gast)


Lesenswert?

Jan schrieb:
> Aus meinem Digital Ausgang ?!

Ich weiß es nicht, ich sehe es nicht, ich kann nur annehmen, dass es 
Dein "Toggle-Pin" PORTB.7 ist.

Ein Sägezahn ist dort (an einem Digital-Ausgang) recht ungewöhnlich - da 
würde mich die Timebase doch sehr interessieren (ein Bild nicht 
weniger).

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Sorry,

das ist doch kein Sägezahn, dass ist irgend ein Mist was der macht :(

von Dieter F. (Gast)


Lesenswert?

Jan schrieb:
> das ist doch kein Sägezahn, dass ist irgend ein Mist was der macht :(

Na immerhin haben wir jetzt 1 mS.

10mV sind natürlich recht wenig, also WO MISST DU DAS? Sieht mir mehr 
nach einem "Überschwinger" aus ... (aber ich bin ja auch Laie!)

von Peter W. (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> Jan schrieb:
> das ist doch kein Sägezahn, dass ist irgend ein Mist was der macht :(
>
> Na immerhin haben wir jetzt 1 mS.
>
> 10mV sind natürlich recht wenig, also WO MISST DU DAS? Sieht mir mehr
> nach einem "Überschwinger" aus ... (aber ich bin ja auch Laie!)

Ich habe einen anderen freien Pin genommen... Vorher als Ausgang 
deklariert (PIND2)

von Dieter F. (Gast)


Lesenswert?

Peter W. schrieb:
> Ich habe einen anderen freien Pin genommen... Vorher als Ausgang
> deklariert (PIND2)

Prima, toggelst Du den auch? Hänge doch bitte mal das aktuelle 
Programm/Projekt an ...

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Dieter Frohnapfel schrieb:
> Peter W. schrieb:
>> Ich habe einen anderen freien Pin genommen... Vorher als Ausgang
>> deklariert (PIND2)
>
> Prima, toggelst Du den auch? Hänge doch bitte mal das aktuelle
> Programm/Projekt an ...

von holger (Gast)


Lesenswert?

>#define DCF77_PON_ON    PORTJ |=  (1<<PJ1)
>#define DCF77_PON_OFF    PORTF &= ~(1<<PJ1)

Interessant;) Auf PORTJ wird PON High gesetzt
und auf PORTF auf Low.

von Peter W. (Gast)


Lesenswert?

holger schrieb:
> #define DCF77_PON_ON    PORTJ |=  (1<<PJ1)
> #define DCF77_PON_OFF    PORTF &= ~(1<<PJ1)
>
> Interessant;) Auf PORTJ wird PON High gesetzt
> und auf PORTF auf Low.

Copy & Paste...  Danke, werde ich gleich mal ändern. Das Modul braucht 
zum Glück kein PON

von Dieter F. (Gast)


Lesenswert?

Was hast Du denn jetzt noch alles geändert - außer WGM12 in TCCR1B zu 
Setzen?

von Peter W. (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> Was hast Du denn jetzt noch alles geändert - außer WGM12 in TCCR1B
> zu Setzen?

Nur die geniale Formel. Sonst weiter nichts.

von Dieter F. (Gast)


Lesenswert?

Peter W. schrieb:
> Nur die geniale Formel. Sonst weiter nichts

Veralbern kann ich mich auch selbst - viel Spaß noch ...

von Jan (Gast)


Lesenswert?

Dieter Frohnapfel schrieb:
> Peter W. schrieb:
> Nur die geniale Formel. Sonst weiter nichts
>
> Veralbern kann ich mich auch selbst - viel Spaß noch ...

Was habe ich denn nun gemacht?

von holger (Gast)


Lesenswert?

>Was hast Du denn jetzt noch alles geändert - außer WGM12 in TCCR1B zu

Müsste das nicht WGM11 sein?

von Who the fuck is Peter W (Gast)


Lesenswert?

Ich bin verwirrt... Ist Peter W. == Jan?

von holger (Gast)


Lesenswert?

>Müsste das nicht WGM11 sein?

Nein, vertan. Falsche Tabelle erwischt.

von Jan (Gast)


Lesenswert?

Who the fuck is Peter W schrieb:
> Ich bin verwirrt... Ist Peter W. == Jan?

Sorry. Ein Freund von mir hat mal via. Meinem Handy hier was gepostet. 
Habe es eben auch gesehen und direkt geändert. Entschuldigt bitte. Hier 
ist der Jan und nicht der Peter.

von Jan (Gast)


Lesenswert?

holger schrieb:
> Müsste das nicht WGM11 sein?
>
> Nein, vertan. Falsche Tabelle erwischt.

Das ging mir auch so..

von Jan (Gast)


Lesenswert?

Wenn ich den PIN in der while(1) Toggle, habe ich ein sauberes rechteck 
Signal

von Jan (Gast)


Lesenswert?

Habe den Fehler gefunden ^^ Jetzt habe ich ein perfektes Rechtecksignal 
;) Danke für eure Hilfe.

von Das mittelgroße Arschloch (Gast)


Lesenswert?

Jan schrieb:
> Habe den Fehler gefunden ^^ Jetzt habe ich ein perfektes Rechtecksignal

Na prima, da habe ja alle was von ...

von Joachim B. (jar)


Lesenswert?

Jan schrieb:
> Habe den Fehler gefunden ^^ Jetzt habe ich ein perfektes Rechtecksignal

und warum nennst du ihn nicht?

manno so hasse ich zu helfen.


und Fragen beantwortest du nicht:

Joachim B. schrieb:
> was ist denn wenn alter Schrott in OCR1AH steht?
>
> sagen wir 120d und das oderst du mit 0, was kommt raus?
>
> was gibt 120d ODER 0 ? (bitweise)

: Bearbeitet durch User
von Jan (Gast)


Lesenswert?

Guten Morgen,

Sorry, musste gestern noch weg. Also ihr werdet es nicht glauben. Es lag 
an MIR !

Also, von meinem Oszi die Klemmspitze ist fürn Ars***... Wo mir diese 
abgefallen ist vom CPU Board, dachte ich mir das ich die Spitze einfach 
mal so an die Pin halte. Siehe da, ein sauberes Rechtecksignal.

Nochmal vielen lieben dank, an alle die mitgeholfen haben!

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.