mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Input funktioniert nicht


Autor: eXc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute, ich habe mein Tastaturproblem reduziert und NUR den INput
getestet. Leider funktioniert das irgentetwas nicht. Egal ob ich am
PortA ein H oder L anlege, PortB verändert sich nicht! Das Programm ist
eigentlich ziemlich simpel:

#include <16f628.h>
#include <inline.h>     // Der verwendete Prozessor


void main()
{
 TRISA=0b00001111;      //RA0-RA3 = Inputs
 TRISB=0b00000000;
 PORTB=0x00;

 while(1)       //Endlosschleife
 {
    PORTB = PORTA;
 }

}

Wo ist denn da der Fehler?? Ich versteh es einfach nicht!

Thx

Autor: Bernd Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abfrage von Eingangsstaus ist PINx, nicht PORTx

 müsste also "PORTB = PINA;" oder so ähnlich sein (kenn C nicht
besonders)

Bernd

Autor: eXc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm.. Ich habe gerade etwas über das CMCON gelesen. Leider bin ich echt
unerfahren mit uC's. Was steht das dirn in dem Register? Hab ich
vielleicht da etwas vergessen zu konfigurieren??

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Doku (Page 31) muss in CMCON 0x07 geschrieben werden, damit die
PORTA Pins als I/O funktionieren (und nicht als Komparatoreingänge).

Ebenfalls solltest Du prüfen, ob Dein Compiler tatsächlich automatisch
die Registerbänke umschaltet. Sonst musst Du das vor jedem Setzen eines
Registers (TRISA, PORTA, CMCON...) von Hand erledigen.

Andreas

PS: Nicht immer neue Threads öffnen!

Autor: eXc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

CMCON 0x07 funzt! HURRA ;) Jetzt fehlt mir nur noch ein kleiner Tip wie
ich auf das interne ROM zugreiffen kann. Wie kann ich im ROM Variablen
ablegen bzw. lesen oder auch ab einer bestimmten Adresse XX bits
einlesen?!

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ROM??? (Read Only Memory = Nur Lese Speicher)

Daten kannst du im RAM ablegen (genauer: in den General Purpose
Registern), die Daten sind aber nach abschalten der Spannungversorgung
weg. Oder Du schreibst die Daten ins EEPROM, dann bleiben sie auch nach
Abschalten der Spannungversorgung erhalten.

Wie das alles geht, steht im Datasheet. Daher empfehle ich Dir: Lies'
das Datasheet ersteinmal komplett durch! Auch wenn's mühsam ist.
Kapitel die erstmal nicht in Frage kommen (z.B. USART) kanns Du ja
überspringen. Danach würde ich mir ein paar Beispielprogramme (z.B.
Application Notes von www.microchip.com) ansehen.

Ausserdem kannst Du im Programmspeicher Tabellen anlegen. Allerdings
nur beim Programmieren. Die werden dann mit dem Programm 'gebrannt'.
Sie Dir hierzu mal die Assemblerdirektive 'DT' im Assembler Users
Guide an.

Andreas

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ich hab' ganz vergessen, dass Du ja in C programmierst:

 int tmpVar;
 tmpVar = 100;

und schon ist '100' im RAM gespeichert.

Andreas

Autor: eXc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, meinte auch das EEPROM. Habe es dank Datenblatt geschafft! Gibt
es irgentwo das Datenblatt vom 16F862 zu kaufen? ich habe keine Lust
mit 160 Seiten am Bildschrim anzugucken oder auszudrucken?!

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe früher einige Datasheets in Buchform von meinem damaligen
Distibutor Future Elektronics bekommen. Das funkioniert aber nur,
solange die davon ausgehen, dass irgendwann grössere Mengen
(>1000/Jahr) abgenommen werden.

Ich drucke die Sheets heute auch selbst aus. Dazu empfehle ich das
Druck-Tool FinePrint. Mit dem kann man mehrere Seiten auf einem A4
Blatt drucken. Ausserdem braucht man ja nur die Kapitel zu drucken, die
einen im Moment interessieren.

Andreas

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.