Forum: Mikrocontroller und Digitale Elektronik Mega8 reagiert nicht auf Taster


von Max K. (madget)


Lesenswert?

Hallo
ich bin nun seit nen paar Tagen am basteln mit nem Mega8. Bis jetzt hat
auch alles super hingehaun was ich machen wollte: Pwm,adc,led an und
aus. Nur ich bekomme es nicht hin, dass dieses Ding auf einen simplen
Taster reagiert. Hab schon alles versucht: taster zu GND und dem
Portpin angeschlossen mit internem Pull up. dann mit externem
Pullup.sogar mit pull down und an +5V hab ichs versucht. das komische
ist, das der adc einwandfrei funktioniert. hab mir jetzt so
weitergeholfen, dass ich den adc nach kleinen werten abfrage und damit
dann sozusagen nen taster simuliere. Is aber nich so ganz das wahre.
kann es sein, dass der eingangsport kaputt ist aber der adc noch
funktioniert? bin schon alle ports durchgegangen. ohne erfolg.

ach ja ich hab hier mal nen kleines testprogramm geschrieben:
$crystal = 8000000
$regfile = "m8def.dat"
Config Portd = Input

Config Portb = Output
Portb = 255

Do
If Portd.4 = 0 Then Portb.1 = 0 Else Portb.1 = 1  ' Led leuchtet wenn
pin an GND

Loop

wenn ich das programm starte leuchtet die Led dauerhaft. also er denkt,
dass der pin auf low ist. obwohl saubere +5v anliegen. (direkt am pin
gemessen)
Ich weiß echt nicht mehr weiter. wär euch echt dankbar, wenn Ihr mir
weiterhelfen könntet.

ach ja mit software entprellen hab ichs auch versucht... funzt auch
nich.

von Jens D. (jens) Benutzerseite


Lesenswert?

Config Portd = Input??????ß

muesste es nicht heisen:
Config Portd = DDR(A,B..)

bzw Portd?

von Max K. (madget)


Lesenswert?

"muesste es nicht heisen:
Config Portd = DDR(A,B..)"

keine ahnung
 davon hab ich nix gefunden in bascom. die besipielprogramme in bascom
sind genauso geschrieben.

von gast (Gast)


Lesenswert?

Tach
ich glaube das muß heissen: if Pind.4 then ...

mfg stefan

von Max K. (madget)


Lesenswert?

hey das funktioniert :)
danke!
warum funktioniert das nich mit port ?

von Dirk M. (avr-nix)


Lesenswert?

lege ein Anfangs Pegel fest

zum Bspl. so:

Config Pinb.0 = Input
Portd.0 = 1  --> H

Config Pinb.0 = Input
Portd.0 = 0 --> L

sonst haste keine eindeutigen Anfangzustände.

Warst das ?

von Jadeclaw (Gast)


Lesenswert?

@Max:
Im Gegensatz zu vielen anderen Controllern sind bei den AVR-Controllern
generell Eingangs und Ausgangsregister voneinander getrennt und werden
über unterschiedliche Adressen angesprochen.
PinB liest direkt vom Portpin, PortB schreibt und liest das
Ausgangsregister.
Egal was am Portpin passiert, PortB bekommt davon nichts mit.

Gruss
Jadeclaw.

von Hannes L. (hannes)


Lesenswert?

Das Verwenden einer Hochsprache wie BASCOM erübrigt nicht das Lesen des
Datenblattes des Controllers. Dort kannst du nachlesen, wie die
jeweiligen Ports (und andere Hardwarekomponenten) aufgebaut sind, über
welche Register man sie anspricht und wie sie funktionieren.

...

von Dirk M. (avr-nix)


Lesenswert?

...? Es kommt auf den Syntax an und die ist bei der jeweiligen Prog.
Sprache anders Hand zu haben. Allerdings bietet die Hilfe von Bascom da
ausreichende Infos.

von Hannes L. (hannes)


Lesenswert?

@Dirk:

Ich denke mal, du hast mich angesprochen.

Eben, die Syntax. Und die BASCOM-Hilfe. Da ich auf anderen Systemen
(unter einem Betriebssystem!) viel mit BASIC hantiere ist mir BASIC
ansich nicht fremd. Doch BASCOM geht mir mit seinen CONFIG-Anweisungen
irgendwie zu weit. Man kann nicht mehr anhand des Datenblattes
arbeiten. Da ist mir ASM doch lieber. Klar, zum "Rechnen" ist eine
Hochsprache bequemer. Aber zum Programmieren hart an der Hardware ist
mir ASM einfach einleuchtender. Da kann man nachvollziehen was man tut,
da kann man das Timing kontrollieren usw. BASCOM tut aber alles, den
Benutzer zu verdummen. Ein paar vorgefertigte Bibliotheken suggerieren
schnellen Erfolg, wird das Programm etwas komplexer oder einfach nur
zeitkritischer, dann geht nix mehr. BASCOM verführt auch dazu,
unrationell zu programmieren (man sieht ja gelegentlich die Hilferufe
von Usern mit übertaktetem Mega128 und BASCOM). Ich halte es daher
besonders für den Anfänger für ungeeignet, in die AVR-Programmierung
einzusteigen bzw. die Architektur des AVRs verstehen zu lernen.

...

von Dirk M. (avr-nix)


Lesenswert?

Gut, auch unsere C Freunde haben die Schwierigkeiten auch.
Assembler ist nicht gerade was für Anfänger.

Also habe auch mit Bascom angefangen und schnelle Ergebnisse erzielen
können. Das Problem ist die Dokumentaion der Hilfe(Note 4-5). ASM kann
mach mit Bascom schreiben. Wenn er mit einer einfachen Config Zeile
Probleme hat und mit einer IF THEN ELSE nicht klar kommt wird er/sie
mit Assembler mehr Schwierigkeiten haben.
Ich gebe dir recht wenn man Zeitkritisches hat ist Asm besser.
90 % der Programme auch in Basic, oder C, schreiben.

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.