Forum: Mikrocontroller und Digitale Elektronik Bitte um Mithilfe bei pic-as Problem - bitte nur wer sich auskennt


von Michael S. (misax)


Lesenswert?

bitte nur antworten wenn du dich mit pic-as wirklich auskennst - bitte 
keine Vermutungen oder unnötige doofe Kommentare die nichts mit der 
Sache an sich zu tun haben (das ermüdet langsam).

Warum leuchtet die LED am PIN 5 des PIC16F15313 nicht ?
1
    PROCESSOR 16F15313
2
    #include <pic16f15313.inc>
3
    
4
// CONFIG1
5
 config FEXTOSC = OFF
6
 config RSTOSC = EXT1X
7
 config CLKOUTEN = OFF
8
 config CSWEN = ON
9
 config FCMEN = ON
10
// CONFIG2
11
 config MCLRE = OFF
12
 config PWRTE = OFF
13
 config LPBOREN = OFF
14
 config BOREN = ON
15
 config BORV = LO
16
 config ZCD = OFF
17
 config PPS1WAY = ON
18
 config STVREN = ON
19
// CONFIG3
20
 config WDTCPS = WDTCPS_31
21
 config WDTE = OFF
22
 config WDTCWS = WDTCWS_7
23
 config WDTCCS = SC
24
// CONFIG4
25
 config BBSIZE = BB512
26
 config BBEN = OFF
27
 config SAFEN = OFF
28
 config WRTAPP = OFF
29
 config WRTB = OFF
30
 config WRTC = OFF
31
 config WRTSAF = OFF
32
 config LVP = OFF
33
// CONFIG5
34
 config CP = OFF
35
36
 PSECT resetVec, class=CODE, delta=2
37
 
38
 resetVec:
39
    PAGESEL main
40
    goto main
41
    
42
 PSECT code
43
 
44
 main:
45
    
46
    banksel TRISA
47
    clrf    TRISA
48
    
49
    banksel PORTA
50
    clrf    PORTA
51
    
52
    banksel LATA
53
    clrf    LATA
54
    
55
    banksel ANSELA
56
    clrf    ANSELA
57
        
58
 loop:
59
    
60
    banksel TRISA
61
    bcf     TRISA, 2
62
    
63
    banksel LATA
64
    bsf     LATA, 2    
65
    
66
    goto   loop
67
68
    end resetVec

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

> Warum leuchtet die LED am PIN 5 des PIC16F15313 nicht
weil sie an einem anderen Pin hängt und obendrein defekt ist?

von Michael S. (misax)


Lesenswert?

bitte bitte keine doofen Kommentare mehr - bitte geht woanders spielen 
Kindsköpfe

von Helmut -. (dc3yc)


Lesenswert?

Hilft dir selbst, dann hilft dir Gott schrieb:
>> Warum leuchtet die LED am PIN 5 des PIC16F15313 nicht
> weil sie an einem anderen Pin hängt und obendrein defekt ist?

Sie könnte aber auch verkehrt herum verschaltet sein. Dass ein 
Vorwiderstand verbaut ist, nehme ich mal an. Wie immer, hilft auch ein 
Foto des Aufbaus!

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Michael S. schrieb:
> Warum leuchtet die LED am PIN 5 des PIC16F15313 nicht ?

Kein Strom?

Oliver

von Michael S. (misax)


Lesenswert?

Ich habe den Aufbau und die configs mit einem C-Programm getestet, das 
läuft

von Michael S. (misax)


Lesenswert?

es muss also am Programmcode liegen

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

Und die tooglerate wird wohl zu hoch für die kapazitive Last (und deine 
Augen) sein.

von Michael S. (misax)


Angehängte Dateien:

Lesenswert?

der aufbau

von Michael S. (misax)


Lesenswert?

die LED soll nicht blinken, sondern konstant leuchten ! Bitte nur 
antworten, wer sich auskennt und in der Lage ist, Assemblercode zu 
lesen.

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

Zweimal Masse am LED-Zweig ?!

von Oliver S. (oliverso)


Lesenswert?

Michael S. schrieb:
> die LED soll nicht blinken, sondern konstant leuchten !

Dann häng die einfach direkt an VSS, und laß den Controller ganz weg.

Das erspart dir erhebliche Frustration, und uns einen weiteren sinnlosen 
Freitagnachmittagsthread.

Oliver

von Michael S. (misax)


Lesenswert?

NEIN denn das C-Programm läuft doch mit diesem Aufbau !!!

von Michael S. (misax)


Lesenswert?

Oliver, hast du nichts besseres zu tun als hier blöde Kommentare 
abzugeben ? wenn du keine Ahnung hast dann bleib doch meinem Thread fern 
!

von Michael S. (misax)


Angehängte Dateien:

Lesenswert?

mit dem C-Programm klappt es, also kann es nicht am Aufbau liegen. was 
im Programmcode stimmt nicht ? im pic-as-Code ?

von Toxic (Gast)


Lesenswert?

Michael S. schrieb:
> Warum leuchtet die LED am PIN 5 des PIC16F15313 nicht ?

Hast du einen 2. Thread aufgemacht?

Die Loesung ist doch hier:
Beitrag "Re: Frage zu einem kleinen PIC-ASS-Programm"

von Michael S. (misax)


Lesenswert?

weil da die Lösung nicht ist. Wie lautet sie denn, du Schlaukopf ?

von Armer Schlucker (Gast)


Lesenswert?

Michael S. schrieb:
> die LED soll nicht blinken, sondern konstant leuchten ! Bitte nur
> antworten, wer sich auskennt und in der Lage ist, Assemblercode zu
> lesen.

Blinkt die LED?

von Michael B. (laberkopp)


Lesenswert?

Michael S. schrieb:
> bitte keine Vermutungen oder unnötige doofe Kommentare die nichts mit der
> Sache an sich zu tun haben (das ermüdet langsam).

Bitte keine unnötig doofen Fragen hier stellen

Michael S. schrieb:
> NEIN denn das C-Programm läuft doch mit diesem Aufbau !!!

Ach, DAS Programm, ja, danke für den Einblick. Herr wirf Hirn.

Michael S. schrieb:
> bcf     TRISA, 2

RA2 ist immer noch 4

von Michael S. (misax)


Lesenswert?

RA2 ist bei diesem PIC Pin 5

von Michael B. (laberkopp)


Lesenswert?

Michael S. schrieb:
> RA2 ist bei diesem PIC Pin 5

Oh Mann, da kann man nix mehr machen,

Bei dermassen tiefgreifenden Missverständnissen.

Man fragt sich, warum man zitiert.

von Michael S. (misax)


Lesenswert?

hier ist das analoge C-Programm dazu, wo es funktioniert:
1
// PIC16F15313 Configuration Bit Settings
2
3
// CONFIG1
4
#pragma config FEXTOSC = OFF
5
#pragma config RSTOSC = EXT1X
6
#pragma config CLKOUTEN = OFF
7
#pragma config CSWEN = ON
8
#pragma config FCMEN = ON
9
// CONFIG2
10
#pragma config MCLRE = OFF
11
#pragma config PWRTE = OFF
12
#pragma config LPBOREN = OFF
13
#pragma config BOREN = ON
14
#pragma config BORV = LO
15
#pragma config ZCD = OFF
16
#pragma config PPS1WAY = ON
17
#pragma config STVREN = ON
18
19
// CONFIG3
20
#pragma config WDTCPS = WDTCPS_31
21
#pragma config WDTE = OFF
22
#pragma config WDTCWS = WDTCWS_7
23
#pragma config WDTCCS = SC
24
25
// CONFIG4
26
#pragma config BBSIZE = BB512
27
#pragma config BBEN = OFF
28
#pragma config SAFEN = OFF
29
#pragma config WRTAPP = OFF
30
#pragma config WRTB = OFF
31
#pragma config WRTC = OFF
32
#pragma config WRTSAF = OFF
33
#pragma config LVP = OFF
34
35
// CONFIG5
36
#pragma config CP = OFF
37
38
#include <xc.h>
39
40
void main(void) {
41
    
42
    TRISA2 = 0;
43
      
44
    while(1) {
45
46
        RA2 = 1;
47
48
    }
49
    
50
return;
51
52
}

von Michael S. (misax)


Lesenswert?

ich hab TRISA,4 und LATA,4 geändert, aber damit geht es auch nicht - ist 
doch klar. Michael B. du verwechselst da was. BCF bezieht sich auf die 
Nummer des Bits und nicht auf dem dezimalen Wert des Registers. kannst 
du überhaupt Assembler ?

: Bearbeitet durch User
von 2⁵ (Gast)


Lesenswert?

Kannst du den C-Compiler dazu bringen, Assemblercode auszugeben? Beim 
gcc geht das z.B. mit der Option "-S". Wenn ja, den Code bitte 
hochladen!

von PIC-Spezialist (Gast)


Lesenswert?

Probiere doch mal eine rote LED weil grüne oft nicht leuchten..

von Michael S. (misax)


Lesenswert?

oh du Witzbold ... hast du nichts Besseres zu tun ?

von Michael S. (misax)


Lesenswert?

dem C-Compiler den Assemblercode zu entlocken ist mal ein echt guter Tip 
- bestimmt geht das irgendwie - aber ob ich das so schnell hinkriege...

aber man kann doch bestimmt das auf dem PIC gespeicherte Programm 
de-aassemblieren oder ? Kann mir einer das schnell und sicher 
beschreiben wie das geht ohne dass ich da lange suchen und viel 
nachlesen muss ?

Beitrag #7256818 wurde von einem Moderator gelöscht.
Beitrag #7256821 wurde von einem Moderator gelöscht.
von Martin (Gast)


Lesenswert?

was passiert, wenn du den code änderst:
1
banksel LATA
2
bsf     LATA, 2    
3
4
loop:
5
goto   loop
6
7
end resetVec

Beitrag #7256827 wurde von einem Moderator gelöscht.
Beitrag #7256828 wurde von einem Moderator gelöscht.
von Michael S. (misax)


Lesenswert?

@Martin: habs geändert, aber geht auch nicht

Beitrag #7256836 wurde von einem Moderator gelöscht.
von PIC-Spezialist (Gast)


Lesenswert?

Blinkt die LED endlich?

von 2⁵ (Gast)


Angehängte Dateien:

Lesenswert?

Michael S. schrieb:
> dem C-Compiler den Assemblercode zu entlocken ist mal ein echt guter Tip
> - bestimmt geht das irgendwie - aber ob ich das so schnell hinkriege...

Ist es der XC-8? Gugst du:

https://onlinedocs.microchip.com/pr/%20GUID-BB433107-FD4E-4D28-BB58-9D4A58955B1A-en-US-1/index.html?GUID-0EDEA40D-44E0-48FF-A5D7-3860807DF5E3

Ist auch die "-S" Option...

von Michael S. (misax)


Lesenswert?

ja es ist der XC-8, aber in MPLAB X IDE integriert (nicht über 
Kommandozeile). Kann man den Assemblercode des C-Programms über die IDE 
bekommen oder über die IPE ?

von Michael S. (misax)


Lesenswert?

über die IPE hab ich folgenden Programmcode auf dem PIC gefunden, wenn 
ich das (nicht laufende) Assembler-Programm lade:

000  9240  8C40  9840  B87E  1240  1840  280C  3FFF
008  3FFF  3FFF  3FFF  3FFF  3FFF  3FFF  3FFF  3FFF

von 2⁵ (Gast)


Lesenswert?

Sorry, mit der XC-8 IDE kenne ich mich nicht aus.

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

da ein beispiel, wie man mit comments im Quelltext den Reviewern das 
Leben leichter macht:

https://itecnotes.com/electrical/electronic-exiting-interrupt-routine-in-pic16f18877/

Dann könntest du auch erklären was die Abnsicht hinter den Zeilen
1
 config FEXTOSC = OFF
2
 config RSTOSC = EXT1X
ist.

Falls damit einen externen Oszi konfiguriert werden sollte - wo ist der 
auf dem Board?

von Michael S. (misax)


Lesenswert?

an diesen PIC kann man meines Erachtens gar keinen externen Oszillator 
anschließen - und das C-Programm läuft ja mit diesen Configs

: Bearbeitet durch User
von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

>an diesen PIC kann man meines Erachtens gar keinen externen Oszillator
>anschließen

Im Daten Blatt steht was von 32MHz Input clock, und selbst wenn man ihn 
nicht anschliessen kann, sollte der TO so gnädig sein uns zu veratten, 
welche Taktung er gewählt hat und wie er das konfigurieren wollte.

Es fehlen die verdammtem Kommantare !

von c-hater (Gast)


Lesenswert?

Michael S. schrieb:

> an diesen PIC kann man meines Erachtens gar keinen externen Oszillator
> anschließen - und das C-Programm läuft ja mit diesen Configs

Dann musst du halt in Assembler nachbauen, was auch immer diese (oder 
auch alle verwendeten) Configs tun. Irgendwo muss das ja dokumentiert 
sein. Also würde jeder Normalbegabte diese Doku suchen und dann lesen...

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

c-hater schrieb:
> Michael S. schrieb:
>
>> an diesen PIC kann man meines Erachtens gar keinen externen Oszillator
>> anschließen - und das C-Programm läuft ja mit diesen Configs
>
> Dann musst du halt in Assembler nachbauen, was auch immer diese (oder
> auch alle verwendeten) Configs tun. Irgendwo muss das ja dokumentiert
> sein. Also würde jeder Normalbegabte diese Doku suchen und dann lesen...

Eben:
http://ww1.microchip.com/downloads/en/DeviceDoc/40001897A.pdf

von Chris (Gast)


Lesenswert?

Der To/Troll hat weder ein ASM tutorial / Beispiel gelesen, sowie auch 
nicht das Datenblatt durchgeschaut. Einfach bei C bleiben, das ist 
einfacher, weniger low level, dann kann man ra2 verwenden anstelle von 
porta und dass man lata falsch verstanden hat, dass kann man nicht 
entschuldigen, genausowenig wie dass man kein ASM tutorial oder Beispiel 
angesehen hat denn sonst wuerde man den fehler ja sehen.

von Teo D. (teoderix)


Lesenswert?

Jo jo, hab mich mal "schlau" gemacht.

Meines Erachtens sollte alles passen. NUR im Simulator bekomme ich 
damit PortA nicht auf Digital I/O, wird immer als Analog-In 
gekennzeichnet!?
Scheint auch des öfteren (?-O) im Reset "hängen zu bleiben"....
Das is nix für den schnellen Einstig!


Hilft dir selbst, dann hilft dir Gott schrieb:
> Dann könntest du auch erklären was die Abnsicht hinter den Zeilen
>  config FEXTOSC = OFF
>  config RSTOSC = EXT1X
> ist.

Reset-condition für den Oszillator und co.
Du kannst damit die Analog-Module auf gewünschten Pin legen.
Passt beides.

von MaWin (Gast)


Lesenswert?

Warum lässt du nicht einfach das C-Programm laufen, wenn es doch 
funktioniert?
Warum muss es Asm sein?

von Michael S. (misax)


Lesenswert?

wieso muss ich die Configs in Assembler nachbauen ? werden die Configs 
nicht vom Assembler mit in den Programmcode übernommen ? falls ich da 
was falsch verstanden habe, liegt da wohl der Fehler.

: Bearbeitet durch User
von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

Teo D. schrieb:

> NUR im Simulator bekomme ich
> damit PortA nicht auf Digital I/O, wird immer als Analog-In
> gekennzeichnet!?

> Scheint auch des öfteren (?-O) im Reset "hängen zu bleiben"....

?weil kein Takt kommt? Vcc Ramping verkackt? Reset-eingang flaoting?


> Du kannst damit die Analog-Module auf gewünschten Pin legen.
> Passt beides.

Ja was denn nun?
Oben schreibste passt nicht, unten dagegen passt??

von c-hater (Gast)


Lesenswert?

MaWin schrieb:

> Warum lässt du nicht einfach das C-Programm laufen, wenn es doch
> funktioniert?
> Warum muss es Asm sein?

Vermutlich will da einer fliegen, der nicht mal richtig kriechen kann, 
geschweige denn laufen...

von Michael S. (misax)


Lesenswert?

wie ist das denn mit den configs im Assemblerprogramm ? Setzen die die 
entsprechenden Register auch, oder haben die nur Kommentarfunktion ?

von c-hater (Gast)


Lesenswert?

MaWin schrieb:

> Warum lässt du nicht einfach das C-Programm laufen, wenn es doch
> funktioniert?
> Warum muss es Asm sein?

Oder es ist halt wirklich nur ein Traffic-Troll. Was die bei weitem 
wahrscheinlichste Annahme ist.

von Hilft dir selbst, dann hilft dir Gott (Gast)


Lesenswert?

Ich würde mich auch nicht darauf verlassen, das das HW-131 beide 
PWR-Rails am Breadboard gleichzeitig an schaltet.
Da mal ein Multimeter drangehalten?

von Teo D. (teoderix)


Lesenswert?

Achne, wollts noch vor meinem letzten Post testen, habs leider 
vergessen.

Ändere mal das mal:
;    #include <pic16f15313.inc> // Löschen!!!
    #include <xc.inc> // <- so und nicht anders

In der Simu läufts.... :)

von Michael S. (misax)


Lesenswert?

@Teo D.: D-A-N-K-E !!!

jetzt funktionuckelts es !

Du hast einen alten Mann glücklich gemacht ! 1000 Dank !

von Toxic (Gast)


Lesenswert?

Michael S. schrieb:
> weil da die Lösung nicht ist. Wie lautet sie denn, du Schlaukopf ?

Was soll diese Piss-Antwort? Kann mich nicht erinnern dich beleidigt zu 
haben.
Mach mal einen Punkt - aber einen ganz Grossen.
Du wolltest/willst eine Led mit dem Pic As dauerhaft zum Leuchten 
bringen.
Der Code ist in deinem ersten Thread von " Apollo M. (Firma: @home)"
angegeben und ich habe dies sogar mit dem Simulator getestet und einen 
Screenshot davon gemacht.
Fuer Leute wie dich habe ich keine Zeit mehr.Reine Zeitverschwendung 
hier.

von Teo D. (teoderix)


Lesenswert?

Michael S. schrieb:
> wie ist das denn mit den configs im Assemblerprogramm ? Setzen die die
> entsprechenden Register auch, oder haben die nur Kommentarfunktion ?

Na klar muss das im Code stehen. Das Tool generiert dir doch auch nur 
den Code, den Du rein kopieren musst.

von Michael S. (misax)


Lesenswert?

danke nochmal, Teo. jetzt geht es.

von Teo D. (teoderix)


Lesenswert?

Gern geschehen.
So hab ich mich wenigstens mal mit dem neuen Assembler beschäftigt (bzw. 
seit ~20J überhaupt mit Ass:) und einen für mich recht neuen Pic -> Ich 
bleib bei C und meine ollen Dinger, reichen mir alle mal. ;DDD

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Michael S. schrieb:
> ich hab TRISA,4 und LATA,4 geändert, aber damit geht es auch nicht - ist
> doch klar.

Klar ist, dass du sehr laut bist! Sinnnig war wenig bis nichts von dir.
Zukünftig auch mal in die pic16fxxx.inc schauen und die passenden 
Bezeichner verwenden, dann kann auch weniger verwechselt werden.


main:
   banksel  ANSELA
   bcf  ANSA2
   banksel  TRISA
   bcf  RA2
   banksel  LATA
   bsf  RA2
   goto  $
   end  ResetVec

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Teo D. schrieb:
> Ändere mal das mal:
> ;    #include <pic16f15313.inc> // Löschen!!!
>     #include <xc.inc> // <- so und nicht anders

#include <pic16f15313.inc> kann so  verwendet werden, ist nur unschlau, 
weil dann immmer per Hand nachgezogen werden muss, wenn der pic16fxxx 
wechselt.

xc.inc includiert ansonsten nur die pic16fxxx.inc sonst nichts.

@Michael S.

@HW, sinniger wäre vielleicht auch den RA2 im OC mode zu verwenden, also 
low-active ...

Jetzt lass mal toggle und definierte Variable im RAM, ...
Vom pic-as cmd/macro/linker functions hast du fast noch nichts 
verwendet, da warten noch einige Überraschungen auf den Anwender!

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Apollo M. schrieb:
> #include <pic16f15313.inc> kann so  verwendet werden, ist nur unschlau,
> weil dann immmer per Hand nachgezogen werden muss, wenn der pic16fxxx
> wechselt.
>
> xc.inc includiert ansonsten nur die pic16fxxx.inc sonst nichts.

Stehen aber offensichtlich wichtige Defs. drin, deren fehlen(?) der 
Pre-Compiler, scheinbar klaglos schluckt. Warum auch immer.


PS: Dran geglaubt hab ich ja auch nich wirklich. Daher hab ichs ja 
vergessen zu testen. :)

: Bearbeitet durch User
von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Der pic-as hat einige Vorteile zum MPASM, aber die Linker 
Verständnishürde psect. Ist dadurch aber wesentlich flexibler, du kannst 
z.B. Segmente überlagern
also gleiche RAM Addr für unterschiedliche lokale Var und das Bist 
optimiert sogar, was bedeutet du musst für die EEPROM write Signature 
die Optimierung abschalten sonst ist sie weg und nix mit eepron write.

Es gibt zwei pre-compiler, die gleichzeitig verwendet werden können - 
der vom C-Compiler und der von pic-as!

Das User Guide ist völlig unzureichend ... und wichtige Infos stehen 
vergraben im Fließtext.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.