- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: PIC in C programmieren

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Anzeige

    Powerstation Test
    Hey Roland!

    Hast Du keine Ahnung wie Du Deine Ideen in C umsetzt oder Fehlt Dir das Hintergrundwissen was die 16F627 Architektur betrifft.
    oder konkreter, wie kann ich die ports auf input schalten?
    Bist Du Dir im Klaren was Register sind und wozu sie verwendet werden?

    Gruß
    lk

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    09.09.2005
    Ort
    WIen
    Alter
    41
    Beiträge
    57
    bissal ahnung hab ich schon, nur gehts leider nicht so wie ichs mir gedacht habe.
    soweit ich aus dem datenblatt rauslesen konnte, muss man zb mir dem "TRISB" register das Port B auf eingang setzten, nur funktioniert das irgendwie nicht so ganz.

    bei den letzten versuchen bekomm ich auch immer nach dem flashen eine fehlermeldung, dass das configurationswort anders im speicher ist, als dass das gesetzt werden sollte :S

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Gruß!
    Welchen PIC verwendest Du überhaupt??

    .uups. War blind doch nun kannich wieder sehen!

    Du hast schon recht, TRISB ist verantwortlich für i/o des PORTB.
    Wenn Du aber einen Taster anschliessen willst solltest Du die internen Pull-ups aktivieren.
    Wenn Du impulse von außen auszählen willst, machst Du es über einen externen Interrupt. RB0 bietet Dir diese Möglichkeit.

    Poste doch mal deinen Code, ich programmiere zwar in Assembler aber vielleicht findet sich jemand der Erfahrung hat.

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    09.09.2005
    Ort
    WIen
    Alter
    41
    Beiträge
    57
    code posten ist leicht gsagt ich hab ja noch keinen.
    zuerst hab ich einfach eine zählvariable immer weiterlaufen lassen und am Port B ausgegeben, und dann wollte ich machen, dass er nur bei gedrückter taste weiterzählt.
    ich habs schon in nem simulator versucht, und mit dem vellemann kit aber es tut sich garnix.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fehler.gif  

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    09.09.2005
    Ort
    WIen
    Alter
    41
    Beiträge
    57
    YEHAAA

    ich hab mal einen anderen PIC versucht, und jetzt klappt eigentlich alles, auch wenn ich nicht genau weis warum
    kann mir mal bitte jemand meinen code erklären ist aus beispielen zusammenkopiert (besonders die register am anfang versteh ich nicht ganz, weil ohne "CMCON=0b.0000.0111; " reagiert er auf die tasten nicht)

    Code:
    #include <16F627.h>              // Prozessor-Typ definieren
    #pragma config |= 0x3FFF & 0x3FFF & 0x3FFF &0x3FF7 &0x3FFB & 0x3F7F & 0x3FFF & 0x3FED     // Konfigurationswort
    
    
    void pause(uns16 ms)            // Unterprogramm zum Abwarten einer
    {                   // angegebenen Anzahl von Millisekunden
    while(ms)           // Schleife verlassen, wenn ms=0 ist
        {
        OPTION = 2;     // Vorteiler auf 8 einstellen
        TMR0 = 131;     // 125 * 8 = 1000 (= 1 ms)
        while (TMR0);       // Abwarten einer Millisekunde
        ms--;           // "ms" mit jeder Millisekunde erniedrigen
        }
    }
    
    void main(void)                 // Start des Hauptprogramms
    {
    TRISB = 0b.1100.0000;           // Pins RB0...RB7 -Ausgänge
    TRISA = 0b.1111.1111;
    OPTION_REG=0b.1101.0111;
    CMCON=0b.0000.0111;
    char Zaeler, i,a;             // 8-Bit Variable (0...255)
    char Schaltern ;
    Sprungmarke:
    
    
    Schaltern = PORTA & 0b.0000.1111 ; 
    
    
    switch(Schaltern)
    {
        case 1 :    // wenn nur Schalter 1 betätigt ist
         a=250;       // tu dies
        break;
    
        case 2 :    // wenn nur Schalter 2 betätigt ist
          a=125;      // tu das
        break;
    
        case 4 :   // wenn  alle Schalter  betätigt sind
          a=50;      // tu jenes
        break;
        case 8 :   // wenn  alle Schalter  betätigt sind
          a=10;      // tu jenes
        break;
    }
    
    
    PORTB = 0b0000.0001 ;           //  Bit 0 von PortB setzen
    for (i=0 ;i<5 ;i++)     // folgende Befehle 8-mal wiederholen
        {
        PORTB = PORTB << 1 ;    // 1 kommt ins nächste Bit links
        pause(a);     // jede LED  halbe Sekunde leuchten lassen
        }
    for (i=0 ;i<5 ;i++)     // folgende Befehle 8-mal wiederholen
        {
        PORTB = PORTB >> 1 ;    // 1 kommt ins nächste Bit links
        pause(a);     // jede LED  halbe Sekunde leuchten lassen
        }
    goto Sprungmarke;       // Alles wiederholen
    }
    ein problem hab ich noch, jetzt reagiert das programm nur auf einen tastendruck wenn er zufällig grade an der programmstelle ist, wie kann ich das mit interupts machen das er immer reagiert ?

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Hey Roland!

    Wie wärs mal mit ein wenig suchen und lesen??

    Du musst den globalen Interrupt einschalten und im dazugehörigen Register die Interruptart wählen zB.:
    Unterbrechung von aussen durch fallende Flanke an RA4.
    Oder.. Unterberechung durch Pegeländerung am bestimmten Pin...
    Wieso schaust Du nicht einfach ins Datenblatt, oder auf die schon zig fach genannte Seite www.sprut.de.

    Ein wenig Eigeninitiative wäre angebracht, zumal Du dann auf eigene Erfolge Stolz sein kannst.
    YEHAAA
    Gruß
    lk

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Hello an alle.

    Habe ich richtig gelsen, du programmierst mit dem Vellemen V111 den PIC 16F627...

    Denn ich hab das selbe Board mit dem selben PIC und möchte auch gerne mit C beginnen....

    Klappt das bei dir, denn ich hab bis jetzt nur negative Resonanz bekommen und war schon auf der Suche nach einem anderen Board....

    Würd mich über ein Feedback freuen

    Michael

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    09.09.2005
    Ort
    WIen
    Alter
    41
    Beiträge
    57
    velleman stimmt, aber das board heisst, P8048
    ich habe mir von http://www.cc5x.de/ den compiler und die tools besorgt, mit denen gehts eigentlich ganz gut, wenn ich auch immer wieder auf probleme stoße weil ich mich einfach zu wenig mit dem Pic auskenne
    Wer Rechtschreibfehler findet, .... darf sie behalten!

  9. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2006
    Beiträge
    1.178
    Zitat Zitat von RolandS
    velleman stimmt, aber das board heisst, P8048
    schau mal noch da:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=26525
    und da:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=26589

    ich hatte mit dem velleman auch probleme beim programmieren
    (dieser read write error)

    bei mir lags an der spannung zum programmieren..
    die wollen da ein ungeregeltes netzteil haben, was bis zu 15V bringt
    wenn man da mit 12V rangeht machts bei manchen pics probleme.. mit dem pic16f876a gehts aber auch mit niedrigerer spannung am programmierpin als 12V...
    GrußundTschüß \/
    ~Jürgen

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests