mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega8 reagiert nicht auf Taster


Autor: Max Kuhn (madget)
Datum:

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

Autor: Jens D. (jens) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Config Portd = Input??????ß

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

bzw Portd?

Autor: Max Kuhn (madget)
Datum:

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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach
ich glaube das muß heissen: if Pind.4 then ...

mfg stefan

Autor: Max Kuhn (madget)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey das funktioniert :)
danke!
warum funktioniert das nich mit port ?

Autor: Dirk Milewski (avr-nix)
Datum:

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

Autor: Jadeclaw (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: Dirk Milewski (avr-nix)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

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

...

Autor: Dirk Milewski (avr-nix)
Datum:

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

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.