-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Unterschied zw. PIC 16F877 & PIC16F877A

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208

    Unterschied zw. PIC 16F877 & PIC16F877A

    Anzeige

    Hiho liebe Robogemeinde,

    ich habe folgendes programm geschrieben:

    Code:
    #include <16F877.h>
    #use delay(clock=4000000)
    #fuses XT,NOWDT,NOLVP,NOPROTECT
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
    #org 0x1F00, 0x1FFF {}   //Bootloader
    
    
     
    void main() {
    
    for(;;)
    {
    output_d(0x00);
     delay_ms(250);
     output_high(PIN_B0);
     delay_ms(250);
     output_low(PIN_B0); 
    
     delay_ms(250);
     output_high(PIN_B1);
     delay_ms(250);
     output_low(PIN_B1); 
     
      delay_ms(250);
     output_high(PIN_b2);
     delay_ms(250);
     output_low(PIN_b2); 
     
      delay_ms(250);
     output_high(PIN_b3);
     delay_ms(250);
     output_low(PIN_b3); 
     
      delay_ms(250);
     output_high(PIN_b4);
     delay_ms(250);
     output_low(PIN_b4); 
     
      delay_ms(250);
     output_high(PIN_b5);
     delay_ms(250);
     output_low(PIN_b5); 
     
      delay_ms(250);
     output_high(PIN_b6);
     delay_ms(250);
     output_low(PIN_b6); 
     
     
      delay_ms(250);
     output_high(PIN_b7);
     delay_ms(250);
     output_low(PIN_b7);
    }
    }
    Es soll ein lauflicht sein auf PORT B bzw D (hatte es vorher mit PORT D), es sollte eine LED nach der anderen ein und ausgeschaltet werden, mein Problem ist, dass der PIC am PORT D nur 4 LEDS einschaltet und am PORT B nur 3 und dann neustartet. könnt ihr mir weiterhelfen?

    bei einem PIC16F877A funkt es problemlos, mein PIC16F877 ist 4 Mhz beschränkt und ich benütze einen 4 Mhz Oszilator.

    der Schaltplan ist hier hinterlegt:

    http://www.roboternetz.de/phpBB2/zei...918&highlight=
    keine leere Signatur möglich

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50
    Hi,
    Ich programmiere in Assembler und da muss man die Ports definieren
    (als Aus/Eingang).
    Muss man das bei der Hochsprache nicht?
    Oder ist es das hier : output_d(0x00); (in deinem Programm)
    Wenn ja dann hast du dich vertippt (_d statt _b)

    Gruß David

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    hiho,

    danke für den hinweiß, ich hatte im programm TRIS gesetzt (ist es für ein/ausgang) warum es hier nicht dabei ist, weiß ich nicht. unD wegen D und B, ist nicht vertippt, ich hatte es vorher am PORT D, und jetzt auf PORT B, weil ich gedacht habe, vielleicht hat der PORT was
    keine leere Signatur möglich

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50
    Stell doch mal das Ganze Programm rein.
    So wie es in deinem Pic ist (Port B).
    Dann kann man dir evtl. besser helfen.

    Gruß David

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    hier bitteschön:

    aber wie gesagt, das selbe wie oben, nur 1 zeile weniger, wahrscheinlich vergesssen mitzukopieren:

    Code:
    #include <16F877.h> 
    #use delay(clock=4000000) 
    #fuses XT,NOWDT,NOLVP,NOPROTECT 
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) 
    #org 0x1F00, 0x1FFF {}   //Bootloader 
    
    
      
    void main() { 
    set_tris_B(0x00);
    
    for(;;) 
    { 
    output_d(0x00); 
     delay_ms(250); 
     output_high(PIN_B0); 
     delay_ms(250); 
     output_low(PIN_B0); 
    
     delay_ms(250); 
     output_high(PIN_B1); 
     delay_ms(250); 
     output_low(PIN_B1); 
      
      delay_ms(250); 
     output_high(PIN_b2); 
     delay_ms(250); 
     output_low(PIN_b2); 
      
      delay_ms(250); 
     output_high(PIN_b3); 
     delay_ms(250); 
     output_low(PIN_b3); 
      
      delay_ms(250); 
     output_high(PIN_b4); 
     delay_ms(250); 
     output_low(PIN_b4); 
      
      delay_ms(250); 
     output_high(PIN_b5); 
     delay_ms(250); 
     output_low(PIN_b5); 
      
      delay_ms(250); 
     output_high(PIN_b6); 
     delay_ms(250); 
     output_low(PIN_b6); 
      
      
      delay_ms(250); 
     output_high(PIN_b7); 
     delay_ms(250); 
     output_low(PIN_b7); 
    } 
    }

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    hiho,

    das problem hat sich geändert
    es ist der PORT B Pin 4, wenn ich ein stück draht nehme, dieses an den PORTPIN anhalte reset der PIC, ohne auf der gegensstelle was zu haben.
    weiters wenn ich output_B(0xff) benütze, startet er auch neu, wenn ich den code wie oben beütze, funktionert es nur das die LED am PIN 4 nicht leuchtet, einen draht ran und er startet neu.
    hoffe das mir jmd helfen kann.
    keine leere Signatur möglich

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Beim 877 ist ja PortB.3 der PGM-Pin für die Low-Voltage-Programmierung.
    Jetzt weiß ich aber nicht, ob du das LVP nicht eh' abgedreht hast
    Ich weiß auch nicht, wie der Pin auf Mißhandlung reagiert.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    hallo,

    ich wußte, das es für programmierung ist, aber ich dachte, zumindest glaubte ich, dass man den weiters also normalen I/O PIN verwenden kann wenn man LVP nicht aktiv hat, und was verstehst du unter Mißhandlung? ich tue ja nicht ausser versuchen den anzusteuern
    keine leere Signatur möglich

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    wenn du im "__config" (fuses) den LVP abgedreht hast (und auch in den PIC übertragen hast ?) ist das schon ok. Hätt ja sein können, wenn er geheimnisvoll restartet.
    Mit PinB4 hätt' das aber nix zu tun.
    *murmel*
    Blöde Frage: Reset ist hoch-gepullt ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    hiho.

    naja, es ist PIN 4 wenn man bei 1 beginnt, und nicht 0-7.
    ja der ist mit 10k hochgepullt, so hab ich es zumindest gelesen, getestetn und hat funktioniert.
    keine leere Signatur möglich

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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