HILFEE!!! Ich habe 10 nagelneue ATmega8 von Reichelt bekommen. Nachdem ich den ersten programmiert hatte und die Schaltung testen wollte, spielte diese plötzlich verrückt. Die angeschlossenen Schalter schienen sich selbst zu betätigen. Soweit so gut. Ich habe stundenlang nach dem Fehler gesucht und schließlich eine Minimalst-Schaltung aufgebaut, die ich auch auf ALLEN ATmega8 ausprobiert habe. Ich konnte es kaum glauben. Sobald ich mit der Hand auch nur annähernd in die Nähe des AVR kam (5-10 cm), schienen sich die Schaltereingänge von selbst zu betätigen (siehe Bild). Hier der verwendete Code: $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 16 $swstack = 20 $framesize = 40 Config Pind.0 = Input Config Pind.1 = Input Config Portd.2 = Output 'LED grün Config Portd.3 = Output 'LED gelb Config Portd.4 = Output 'LED rot Config Debounce = 40 Set Pind.0 Set Pind.1 Main: Do Debounce Pind.0 , 0 , Switch Debounce Pind.1 , 0 , Switch Loop Switch: Toggle Portd.2 Toggle Portd.3 Toggle Portd.4 Goto Main End Ich habe das ganze mit internem Pullup, mit externen 10k Pullup und auch ohne Pullups probiert (Debounce entsprechend angepasst, versteht sich). Was passiert hier? Ich kann mir nicht vorstellen, dass alle Chips defekt sind. Ich habe auch verschiedene Ports ausprobiert. Es ist vollkommen egal, wo ich die Schalter und die LEDs anschliesse. Der Effekt ist immer der gleiche. Vielen Dank im Voraus. Liebe Grüße, Kai
Dein Aufbau enthält keinen einzigen Kondensator. Gruss Robert
Auf dem bild sind aber einige fehler in der minialschaltung zu sehen. 1) Der abblock Kerko muss so nah wie moglich an den AVR 2) Der RESET mit muss einem Pull-up gegen Vcc versehen werden. 3) Nimm in deinem code den Sprungpunkt >>Main<< weg und das >>goto Main<< ersetzt du durch >>return<<. Der debounce befehl sprint einen Sub an und der muss mit return beendet werden. Veruch das mal Gruß Tobi
Wenn ich das richtig sehe, sollten Pullup Widerstände helfen ;)
Danke zunächst mal für die Tips. Ich habe nun folgende Änderungen gemacht: 10k Pullup RST-5V 100n KerKo direkt an Pin7 und Pin8 Code: Do Debounce Pind.0 , 1 , Switch Debounce Pind.1 , 1 , Switch Loop Switch: Toggle Portd.2 Toggle Portd.3 Toggle Portd.4 Return Immer noch das gleiche. Sobald ich in die Nähe des µC komme, beginnt die Switch-Schleife. Nehme ich die Hand wieder weg, stoppt sie wieder.
Anbei noch der aktuelle Aufbau.
nein ich meinte Pullups an dei Eingänge, sonst ist doch klar das die eingänge toggeln. Oder man schaltet die internen Pullupds dafür an, ich kenn mich mit Bascom nicht aus aber schaut für mich nicht so aus als ob die an sind...
Doch, die internen Pullups sind an. Hier noch einmal der komplette Code: $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 16 $swstack = 20 $framesize = 40 'Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Pind.0 = Input 'Schalter EIN/AUS Config Pind.1 = Input 'REED-Kontakt (Melder 1) Config Portd.2 = Output 'LED grün Config Portd.3 = Output 'LED gelb Config Portd.4 = Output 'LED rot Config Debounce = 40 Set Pind.0 'PullUp ein Set Pind.1 'PullUp ein Do Debounce Pind.0 , 0 , Switch Debounce Pind.1 , 0 , Switch Loop Switch: Toggle Portd.2 Toggle Portd.3 Toggle Portd.4 Return End
Ich bin eben mal mit einem Wanzensuchgerät (HF-Detector) durch die Wohnung und habe nach möglichen Störquellen gesucht. Außer dem Üblichen (Telefone, usw.) habe ich festgestellt, dass ich selbst der Sender bin - kein Witz. Sobald ich die Antenne des Detectors an den Körper halte, Vollausschlag. Ich selbst habe aber keinerlei Elektronik, Sender, Funkschlüssel, Transponder, etc. an mir getragen. Danach habe ich die Spannung an meinem Händen gemessen und kam immerhin auf 0,02 bis 0,05 Volt. Dass am Körper eine gewisse Spannung zu messen ist, wusste ich. Aber dass ich selbst "sende", also ein HF-Signal ausstrahle, das war mir neu. Könnte es demnach sein, dass ich als "Sender" die Schaltung wirklich so stark beeinflussen kann? Wie gesagt, sobald ich der Schaltung auf etwa 10cm nahe komme, löst der Toggle aus.
Ich kenne mich zwar mit diesem Bascom nicht aus, aber sollte
1 | Set Pind.0 'PullUp ein |
2 | Set Pind.1 'PullUp ein |
nicht
1 | Set Portd.0 'PullUp ein |
2 | Set Portd.1 'PullUp ein |
heißen? Die Pullups werden jedenfalls über die PORT- und nicht über die PIN-Register aktiviert.
Hatte der Atmega nicht immer noch VCC und GND-Pins auf der gegenüberliegenden Seite? http://www.mikrocontroller.net/articles/Datei:Mega8_Tutorial.png
SUPER!!! Das wars - vielen Dank, yalu!!! LG Kai
Gast? schrieb: > Hatte der Atmega nicht immer noch VCC und GND-Pins auf der > gegenüberliegenden Seite? Ja, hat er. Die sind aber nur für die ADC-Ports gedacht (PIN 26-23). Wenn die ADCs nicht angeschlossen werden, braucht man die beiden nicht anzuschliessen.
Kai P. schrieb: > Gast? schrieb: >> Hatte der Atmega nicht immer noch VCC und GND-Pins auf der >> gegenüberliegenden Seite? > > Ja, hat er. Die sind aber nur für die ADC-Ports gedacht (PIN 26-23). > Wenn die ADCs nicht angeschlossen werden, braucht man die beiden nicht > anzuschliessen. Sicher? Im Datenblatt steht: "AVCC is the supply voltage pin for the A/D Converter, Port C (3..0), and ADC (7..6). It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a low-pass filter. Note that Port C (5..4) use digital supply voltage, VCC. Bevor du dich über weitere seltsame Phänomene wunderst, würde ich auch AVCC und den zweiten GND anschließen.
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.