hallo, ich wollte gerade einen solches 4-wege kreuz+taster (von einem handy) an einen atmega8 schalten, gesagt, getan. gnd=gnd die anderen 5 anschlüsse auf PD2-6 am atmega8 dann DDRD &= ~(1<<PD2); DDRD &= ~(1<<PD3); DDRD &= ~(1<<PD4); DDRD &= ~(1<<PD5); DDRD &= ~(1<<PD6); dannach PORTD |= (1<<PD2) | (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6); und: die dinger schwingen, gehen undefiniert und nix passt ... also extern mit 10K gegen +3,3V verbunden, PORTD |= (1<<PD2) | (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6); raus, und: es geht ... jetzt versteh ich die welt nichtmehr, es handelt sich um einen atmega8l8 der mit ca. 3,2 volt betrieben wird ... abgefragt wird in der art: if(PIND&(1<<PD2))ret|=0b10000000; // links if(PIND&(1<<PD3))ret|=0b00100000; // oben if(PIND&(1<<PD4))ret|=0b00010000; // rechts if(PIND&(1<<PD5))ret|=0b01000000; // unten kann mir da einer helfen?, oder sollte man generell die internen pullups lieber nicht verwenden... das atmega8l8 läuft zusätzlich mit 1mhz SPI (LCD) und 9600 baud uart ständig nebenher, kann es sein, das dort bei verwendung der internen etwas dazwischenfunkt ... ich wollte die externen bauteile so niedrig wie möglich halten, da ich ziemlich wenig platz für das fertige teil habe.
Schau mal im LCD code ob da ggf. deine Pullup einstellungen überschrieben werden. Auch solltest du eine Entprellung vorsehen (diehen GCC tutorial) zum testen würd ich einfach alles mal auskommentieren (Lcd etc) und einfach ein paar LED an/aus schalten.
entprellen tu ich softwaremässig, da es ziemlich unkritisch ist, was hier passiert, lcd-mässig (spi) wird da nix überschrieben, das problem ist halt, das die bits kippen, ohne das man dem schalter auch nur anguckt, keine ahnung was da los ist, überlege momentan alles in SMD zu machen, dann stören die 5 extra wiederstände nicht, oder smd wiederstände zu nehmen, das geht zur not auch, aber eigenartig ist es trotzdem ... einzig und allein PD0 und PD1 ist noch auf D angeschlossen, wobei PD1 eine LED ist, die an/aus ist, aber auf "dauer" an/aus und PD0 ist die SS Leitung vom Original Gerät, das ding schwingt ständig, da ich mich mit einem multiplexer zwischen LCD und bestehendes gerät gehangen habe, PD0 ist dann zum "hören" ob ich sicher umschalten kann .... das könnte man ja mal auf einen anderen pin legen, der weiter weg ist, aber eigentlich dürfte das nicht sein ...
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.