Hallo, ich würde gerne die Sinusschwingung eines Funktionsgenerators mit dem Atmega8 digitalisieren und dann über die USART ausgeben lassen. Jetzt habe ich festgestellt, dass der Funktionsgenerator über den ADC0-Eingang in die Schaltung zurückwirkt, d.h. immer wiedere in periodischen Abständen wird der analoge Sinus falsch interpretiert. Ist der EIngang des Atmega8 überhaupt geeignet, ein "potentialunabhängiges Signal" zu interpretieren oder muss das Signal-GND mit dem des Atmega8 übereinstimmen. Ich habe bei meiner Schaltung einfach den Masseanschluss des Funktionsgenerators mit dem Masseanschluss des Atmega verbunden und dann entsprechende den Siganalausgang(0-5V sinusförmig)an den Eingang ADC0 gelegt. Gibt es eine andere Möglichkeit??? Gruß adrian
Naja, der GND sollte derselbe sein, sonst misst man Mist.
> d.h. immer wiedere in periodischen > Abständen wird der analoge Sinus falsch interpretiert Wie hoch war die zu messende Frequenz? Welchen Prescaler hast du im Mega8 benutzt? Sagt dir das 'Shannonsche Abtasttheorem' etwas?
Wird denn nicht durch verbinden der GND, das Potential des Funktionsgenerators auf das des Atmega gezogen? Und ist es möglich, dass der Funktionsgenerator das AD-Wandlung stört? habe nicht gedacht, dass die Sinusspannung über den ADC-Einggang zurückwirken kann. Aber ich sehe dutlich, dass bei abgeschalteter Versorgungsspannung des Atmega über ein 7805 die Power LED pulsiert. Für die Auswertung eines Funktionsgenerators ist ein ATmega, also nicht fähig?
Gehen sollte das schon. Wenn der Mega nicht gespiesen wird, fliesst das Signal in den Mega und speist so die gesammte Schaltung. Der Funktionsgenerator hat wahrscheinlich 50 Ohm, da kommen dann 100mA zusammen. Ich koennt mir vorstellen, dass das UART den ADC stoert, zeitlich, meine ich. Kommt auf das Timing und die pufferung an.
die zu messende Frequenz lag bei 10Hz und die Sampelrate liegt bei 20Hz, habe sie aber auch schon hoch gesetzt auf 50Hz. aber immer wieder diese aussetzter.
Adrian wrote: > die zu messende Frequenz lag bei 10Hz und die Sampelrate liegt bei 20Hz, > habe sie aber auch schon hoch gesetzt auf 50Hz. aber immer wieder diese > aussetzter. OK. 10Hz sollte kein Problem sein. Zeig mal dein Programm.
hallo, hat denn noch jemand einen Einfall, woran es liegt, dass ich periodisch immer wieder einen falschen Wert empfange? habe heute mit einem Osszi, mit angelegtem Sinus des Funktionsgenerators, die Uref gecheckt aber die ist stabil. Hilfe! Mir fällt nix mehr ein! adrian
hi zusammen, habe noch mal bischen getestet. Wenn ich das USART RX Interrupt komplett herauskommentiere, dann bekomme ich einen Sinus ohne "Abweichungen" => also ist wohl ein Fehler im Rx Interrupt. Komisch ist, dass während der Messungen das Interrupt nicht aktiv ist oder nicht sein sollte, weil ich kein Zeichen sende. Warum kann der Interrupt dennoch meine Messung beeinflussen? Bekomme über einen Zeitraum von 15sec. beim Programm mit Rx_I. 300Messpunkte, beim Prog ohne Rx_I nur 150Messpunkte?! Würde mich auch über kleine Tipps freuen! gruß adrian
Der ADC laeuft auch am Interrupt ? An einem Timer Interrupt, oder anm ADC interrupt ?
Der ADC läuft über einen timer Interrupt. siehe Anhang vom 07.08! Jetzt habe ich nur den RxI auskommentiert.
Da ist einiges falsch. Der timer0 kann den ADC im interrupt neu starten, nicht im main das TIFR abfragen. Un dann dann den ADC interrupt verwenden,um das resultat in einem buffer wegzuschreiben.
ich dachte es sei besser die Interrupts nicht so voll zu schreiben und deswegen die AD-Wandlung in der main. Also den ADU-Code ins Timer Interrupt und dann sollte doch jeder Wert über USART einzeln versendet werden. Buffer? ber der Hauptfehler muss doch auch im RxI stecken!?
ich hab den ADC auch ohne Interrupt gemacht. Das mag Ansichtssache oder projektabhängig sein. Auf jeden Fall sind mir die SEI im Interrupt aufgefallen. Die sollten raus. So wie ich das sehe, läuft das Ganze auch langsam ab. Müßte daher ansonsten laufen. Ich habe für den Uart einen Puffer verwendet, damit das schneller abläuft. Ich habe keine Wartezeiten drin, sondern es wird geprüft, ob der MC noch etwas tun kann. Möglicherweise liegt ein Timingproblem vor. Ich hatte das gehabt, daß der MC nichts empfangen hat, obwohl das Programm richtig ist. Der Fehler lag daran, daß ich im PC den UART Pufferspeicher ausgeschaltet hatte. Es wurden ständig Daten vom MC zum PC übertragen und da war keine Zeit für die Übertragung vom PC. Mal prüfen, ob der Mux während einer Umsetzung gesetzt wird. Mux im Uartempfang hätte ich nicht gemacht. mfg
Hi! mal so am Rande, >Ich habe bei meiner Schaltung einfach den Masseanschluss des >Funktionsgenerators mit dem Masseanschluss des Atmega verbunden Dein Funktionsgenerator macht nicht zufällig +/- 2,5V(5V) gegen GND? Wäre jedenfalls ungesund für den AVR wenn die Spannung am Eingang negativ wird. Viel Erfolg, Uwe
Wenn der Timer kommt und meint der ADC sollte mal, so wird das dem main signalisiert. Wenn nun ein UART interrupt kommt, so wird das Starten des ADC verzoegert, da das main unterbrochen wird.
hallo zusammen, >Dein Funktionsgenerator macht nicht zufällig +/- 2,5V(5V) gegen GND? >Wäre jedenfalls ungesund für den AVR wenn die Spannung am Eingang >negativ wird. also der Funktionsgenerator macht nur im Bereich von 0 bis +5V eine Sinusschwingung, keine negative Halbwelle. >Wenn nun ein UART interrupt kommt, so wird das Starten des >ADC verzoegert, da das main unterbrochen wird. Grundsätzlich möcht ich durch das senden des Zeichens "A","B" oder "C" ja einen neuen AD-Eingang wählen und auch damit eine neue ADW einleiten. Kann es sein, dass die die Werte im UDR nicht nur als zu sendende Werte interpretiert werden, sondern das mir damit der RxInterr.startet und kurzfristig die Ausgänge wechselt? Wodurch erkennt der Atmega8, das sich im UDR ein Empfangenes Zeichen befindet und nicht ein zu sendendes? gruß adrian
Da UDR besteht effektiv aus 2 Registern, wenn man liest, liest man vom Empfangsregister, wenn man schreibt, schreibt man ins Senderegister.
okay, dann fällt das schon mal als fehlerquelle heraus. schreibe grade an einem geänderten Prog.
Hallo zusammen, habe jetzt mal das Prog. von Jörg X. >Autor: Jörg X. (Gast) >Datum: 04.08.2007 13:59 >Dateianhang: adcsend.asm genutzt und noch ein wenig umgestrickt. Aber auch hierbei die gleichen Fehler bei der Aufnahme des Sinus. Jetzt habe ich mir noch einen ATmega8 gekauft, weil ich dachte es kann doch nur am Chip liegen und immer noch diese Fehler. Schicke mal als Anhang das Prog. wenn jemanden was auffällt, einfach schreiben! gruß adrian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.