Forum: Mikrocontroller und Digitale Elektronik Atmega8 interne Pullups undefiniert, extern geht


von Michael W. (das-micha)


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Michael W. (das-micha)


Lesenswert?

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
Noch kein Account? Hier anmelden.