halo leute bin neu hier habe gleich ne frage ich habe mit codevision den wizard benutzt um ein adc_messer zuschreiben und den wert über den portb(8_leds) auslessen und es geht aber er ist sehr empfindlich die leds blinkeln zuschnell entwider ist er sehr empfindlich oder ich lesse nur die zahlen die hinter den (komma) sind 0,01234 (und das will ich nicht) oder was meint ihr was soll ich jetzt machen wäre super wenn einer mir eine code gibt die nicht so empfindlich ist oder sagt mit wie ich das machen soll (ach ja und ich möchteihn nicht langsam machen) ich hoffe ihr habt mich verstanden danke imvorraus
Ich habe keinen Wizzard benutzt, sondern die paar Register selber gesetzt und den ADC-Interrupt aufgesetzt: http://www.mikrocontroller.net/forum/read-4-210743.html#new Ich kann nicht klagen, die Anzeigewerte stehen wie ne 1. Peter
thnx aber ich glaube das ist nicht mit codevision sondern mit gcc oder?
also mein prob ist das ich kein genauen wert bekomme!!!!! warum eigentich???
Ist der Vorteiler eingesetzt/geschaltet. Der AD-Wandler kann nur bis 200kHz arbeiten, deshalb muss der Vorteiler z.B. auf 64 gestellt werden. (8Mhz Takt / 64 = 125 kHz)
Vorteiler wird wohl damit wenig zutun haben. @goku ssj4 Wie sieht die Schaltung aus ? Bilnken die Dioden auch wenn du den ADC-Pin mit der Masse kurzschließt ?
naja es ist so ich benutze den testboard stk200 mit atmega32 auf portb sin die leds und die leds spielen verrückt auser wenn ich den adc_poti auf maximale power drehe dann alle leds sind an (hi)
Eigentlich ist da was du beschreibst normal, es gelangen bestimmt
störungen an den ADC-Eingang und deshalb binkt das ganze.
Und das in deinem Progarmm keine Bremse gibt, wird der Wert so schnell
geändert wie es MCU schafft.
_Bilnken die Dioden auch wenn du den ADC-Pin mit der Masse kurzschließt
?_
Wenn ja dann gibt es eine andere Ursache. Nimm doch ein Stück Kabel und
schliesse den entsprechenden Pin an die Masse.Ist doch einfach, oder ?
>testboard stk200
Es tut mir leid ich habe es,weiss also noch wie vor nicht wie die
Schaltung aussieht, das wäre aber sehr hilfreich.
Und da ich auch ein Noob bin gebe ich die einen Rat, fange erst an im
ASM zu programieren, das ist viel einfacher und man lernt auch etwas
über Hardware-Hintergrunde und ist nicht so hilflos ausgeliefert wenn
etwas nicht läuft.
Und bloss keine "wizards" benutzen, damit vergeudet man wirklich nur
seine Zeit.
>delay_ms(200);
Habe übersehen gibts doch ein delay, egal das mach eh nicht viel aus.
nein ich will delay nicht benutzen ich habe bischen gegooglet und rausgefunden das ich den adc_10bit in 8 umsetzen soll aber die frage ist wie ich das machen soll mit codevision hoffe das jemanden weiter hlfen kann
na durch divisionen mit 2 10 bit zahlen muss man 2 mal durch 2 dividieren ( oder einmal durch 4 ) um 8 bit werte zu erhalten den rest bekommt man durch casten ( siehe asm grunlagen ) mfg moogqai
>ich habe bischen gegooglet und rausgefunden das ich den adc_10bit in 8 umsetzen soll Um was damit zu erreichen ? Du wolltest doch dass die LEDs nicht so sinnlos blinken. Es tut mir leid aber ich habe das gefühl das du meine Beiträge nicht liest. Naja egal.
"thnx aber ich glaube das ist nicht mit codevision sondern mit gcc oder?" Ja, aber das tut doch nichts zur Sache. Der einzige Unterschied ist die Deklaration eines Interrupt-Handlers, und wenn Du schon mal in Codevision einen Interrupt benutzt hast, sollte nichts daran schwierig sein. Und der Rest ist pures ANSI-C, d.h. 100% portabel. Peter
Prinzipiell hast du schon mal +/- 1bit, also das LSB kann schwanken. Dazu kommen dann Störungen auf dem Signal, der Referenzspannung und dem Massepotential. Kann durch das Signal selbst (Rauschen, induzierte Störungen, Versorgung der Signalquelle)oder durch den MC (arbeitet ja immerhin mit ein paar MHz) eingekoppelt werden. Ein paar einfache Regeln: -ordentliches Layout -Entkopplung Vcc, AVcc, Gnd, AGnd, Vref -eine Kapazität am Analogeingang (bei 200ms Abtastzyklus kannst du da locker 100nF ranpacken) Man kann mit dem AVR wirklich erstaunlich genau messen, dazu muss aber das Umfeld stimmen. Kommt es auf das letzte Bit an, den MC schlafen legen, siehe Atmel-Appnotes. Dann gibts noch die Software-Hilfsmittel: mehrfach messen, Mittelwert bilden, in deinem Fall beispielsweise alle 20ms messen, die 10 Messwerte in ein Array packen (neuer Wert schmeisst ältesten raus), alle addieren und durch 10 teilen. Sollte recht ruhig sein. Gibt noch deutlich intelligentere Verfahren, das sollte aber erstmal reichen, um 8bit ruhig zu stellen :-) In 1.Linie aber das Übel an der Wurzel packen, siehe oben.
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.