mikrocontroller.net

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


Autor: Michael W. (das-micha)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael W. (das-micha)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.