www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC Einsteiger


Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,
ich habe da so eine Frage...
Ich habe mir ein kleines "PIC-Entwiklungsboard gebastelt" hatt ein paar 
Schalter und LEDs und ein LCD-Display
Das Board funktioniert soweit ich es bis jetzt testen konnte (habe ein 
kleine Lauflicht gemacht) einwandfrei.
Ich habe dann versucht ein Programm zu schreiben welches eigentlich nur 
kleine Funktion haben sollte:
Wenn ich auf den 1. Taster dann sollte die 1. LED leuchten und wenn ich 
loslasse dann sollte die LED wider ausgehen, und das für vier Taster und 
4 LEDs. Kurz zur Hardeware:
Die LEDs sind (Über Vorwidersstände)an den Ports:

RA0  2  LED1
RA1  3  LED2
RA2  4  LED3
RA3  5  LED4

Die Taster (gehen auf Versorgungsspannung +) habe ich über Pulldown 
(Widerstand von Port nach Masse (4,7k)) an den Ports:

RA4  6  Taster 1
RA5  7  Taster 2
RC1  16  Taster 3
RC2  17  Taster 4

angeschlossen.
Als PIV verwende ich den PIC18F4550
Ich habe eine stabile 5V Versorgung und einen 20MHz Quarz angeschlossen.

Nun zum Programm welches meiner Ansicht nach nicht Funktioniert:
   /** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
 

/** Configuration ********************************************************/
#pragma config FOSC = HS   //CPU=20 MHz
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF  //Watchdog Timer
#pragma config LVP = OFF  //Low Voltage ICSP

/*
#define led1  LATAbits.LATA0
#define led2  LATAbits.LATA1
#define led3  LATAbits.LATA2
#define led4  LATAbits.LATA3
*/
#define led1  PORTAbits.RA0
#define led2  PORTAbits.RA1
#define led3  PORTAbits.RA2
#define led4  PORTAbits.RA3
#define taster1  PORTAbits.RA4
#define taster2  PORTAbits.RA5
#define taster3  PORTCbits.RC1
#define taster4  PORTCbits.RC2

/** D E C L A R A T I O N S **************************************************/
#pragma code

void main(void)
{
  while(1)
  {
  if (taster1 == 1) {
    led1 = 1;
  } else {
    led1 = 0;
  }
  if (taster2 == 1) {
    led2 = 1;
  } else {
    led2 = 0;
  }
  if (taster3 == 1) {
    led3 = 1;
  } else {
    led3 = 0;
  }
  if (taster4 == 1) {
    led4 = 1;
  } else {
    led4 = 0;
  }
  }//end while
}//end main


Meine Vermutung ist das ich die Ports falsch definiere, meine das Port 
zu einem Ausgang oder Eingang "umwandeln".

Ich hoffe es kann mir bitte Jemand Helfen
Wäre auch sehr Dankbar wenn mir jemand sagen kann wo ich ein Gutes Forum 
für den Microchip C18 Compiler finden kann, habe auch schon die Sprut 
Homepage durchgelesen und Versucht zu verstehen (Programmiere aber 
keinen Assembler)

Grüße
Lukas

Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich jetzt auch bei euerem Forum angemolden

Grüße
Lukas

Autor: Mueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe mal auf Sprut.de.

Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich schon, leider Programmiert Sprut fast ausschließlich in 
Assembler bis auf wenige C18 Beispiele (Blink LED) welches ich auch 
schon gemacht und auch verstanden habe. Leider stehe ich jetzt auf dem 
Schlach wie ich Ports einlese

Grüße
Lukas

Autor: morph1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es fehlt die umschaltung auf ausgänge -> TRISA

ausgänge werden beim 18er pic über die latches angesprochen -> LATA 
statt PORTA, das verwendet man besser nur zum einlesen.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oje,

Du mußt die Ports, die Du als Ausgang benutzt, immer auf Ausgang 
schalten! siehe TRISA.

PortA ist oft für den ADC verwendet. Dort sieh mal nach, wie Du die 
Ports als digital schaltest (statt als analog-Eingang).

Dann sieh Dir das Datenblatt zu den Ports an, ob da evtl. noch 
Analog-Comparator-Funktionen vorhanden sind, die müssen i.a.R. auch 
deaktiviert werden.

In aller Regel sind PORTA für analog-In, PORTB für alle (starken) 
Ausgänge und Inputs (für Interrupts) und PORTC sind dann viele weitere 
Module...
Aber im Grunde kannst Du alles anklemmen, wie Du das hast, wenn es nur 4 
LEDs und 4 Taster sind.
Bei den Tastern kannst Du die integrierten Pull-Up-Widerstände in PortB 
nutzen. Dann schalten die Tasten gegen Masse und die integrierten 
Pull-Ups in PortB (RBPU) werden eingeschaltet...

Aber ließ mal auf Sprut.de und in den Datenblättern !

Autor: Lukas B. (lukas-1992) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Tipps bin dran sie umzusetzen bzw. das Datenblatt 
durchzuackern (da steht verdammt viel drin auf den 430 Seiten).
Da ich einige Programmiererfahrung in Visual Basic und C# habe, bin ich 
mir von dort her gewöhnt wenn ich zum Beispiel buttom1. eintippe kommt 
ein "Auswahlmenue" und ich kann dann z.B. Name auswählen und dann kommt 
meistens eine "Programmierhilfe" und ich weiß was ich machen soll.
Ich denke sowas in der Art wäre für den Einstieg in C18 sehr sinnvoll, 
kan mir daher jemand sagen ob es sowas gibt?

Grüße Lukas

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.