hulp bij assembly programma voor microcontroller

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
ik volg een tutorial over het programeren van een 16f84a microcontroller, hier te vinden.

Maar ik kom er nog niet helemaal uit, ik heb geprobeerd een programma te schrijven waardoor een led normaal aan is, maar wanneer je een knop indrukt moet hij weer uit gaan, totdat je hem loslaat, dan hoort hij weer aan te gaan.

Ik heb nu dit ervoor geschreven:




;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PIC16F84A. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files Required: P16F84A.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
;**********************************************************************


list p=16F84A ; list directive to define processor
#include <p16F84A.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.


;***** VARIABLE DEFINITIONS
STATUS equ 03h ;Address of the STATUS register
TRISA equ 85h ;Address of the tristate register for port A
PORTA equ 05h ;Address of Port A

;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program

main

;****Set up the port****

bsf STATUS,5 ;Switch to Bank 1
movlw 01h ;Set the Port A pins:
movwf TRISA ;bit 1to output, bit 0 to input.
bcf STATUS,5 ;Switch back to Bank 0

Checkswitch
BTFSC PORTA,0
call Ledoff

Checkswitch2
BTFSS PORTA,0
call Ledon


goto Checkswitch

Ledon
ledaan movlw 02h ;Turn the LED on by first putting
movwf PORTA ;it into the w register and then ;on the port
return

Ledoff
leduit movlw 00h ;Turn the LED on by first putting
movwf PORTA ;it into the w register and then ;on the port
return

END ; directive 'end of program'




Ik heb het zo aangesloten:

Afbeeldingslocatie: http://img169.imageshack.us/img169/6500/schemal.jpg

Het schema kan lijkt mij al niet knoppen, doordat de pic geen stroom kan krijgen als de schakelaar uit staat, maar ik heb geen idee hoe je dit goed zou moeten aansluiten. Verder snapte ik ook niet helemaal op welke pin ik nu de schakelaar moest aansluiten (de ook niet echt trouwens), als iemand mij zou kunnen uitleggen hoe dit werkt zou ik dat heel fijn vinden :9

[ Voor 3% gewijzigd door huub8 op 01-03-2010 18:34 ]


Acties:
  • 0 Henk 'm!

  • LED-Maniak
  • Registratie: Oktober 2003
  • Laatst online: 09:02
Pull up en pull down?
Daarnaast, die 6Volt is veel teveel.

Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Zou je kunnen uitleggen om welke pinnen en verbindingen het dan gaat?

Verder dacht ik dat 6 volt nog goed was, hoeveel moet het dan zijn?

En klopt mijn code dan wel?

[ Voor 5% gewijzigd door huub8 op 01-03-2010 18:42 ]


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
-

[ Voor 100% gewijzigd door huub8 op 02-03-2010 09:27 ]


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Niemand een idee?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Als je al niet eens weet hoe je zo'n PIC aan moet sluiten, waarom begin je d'r dan al aan? :X Of beter gezegd: waarom begin je niet eerst bij de basics? Of heb je de rest van de aansluitingen weggelaten?

[ Voor 14% gewijzigd door Osiris op 02-03-2010 16:34 ]


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
nou, ik begin eraan om het te leren. Ik ben begonnen met het de tutorials op de eerder genoemde website, maar helaas blijkt dat als je die echt probeert uit te voeren dat er een boel informatie mist/onduidelijk is. Daarom vraag ik die dingen dus hier. Ik heb ook dit schema nagebouwd, maar ik heb nog wat hulp nodig bij het begrijpen op welke pin ik nou wat aan moet sluiten:

Afbeeldingslocatie: http://www.hobbyprojects.com/pic_tutorials/images/pic_diagram.gif

Maar als je een link kunt geven naar de uitleg hiervoor ben ik je natuurlijk ook al hele dankbaar :P.

[ Voor 10% gewijzigd door huub8 op 02-03-2010 16:49 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Heb je al zoiets basics al deze gelezen? PIC microcontroller tutorial

Acties:
  • 0 Henk 'm!

  • LED-Maniak
  • Registratie: Oktober 2003
  • Laatst online: 09:02
Begin dan overigens meteen goed en begin met AVR's(nog goedkoper ook en beter uitwisselbaar).

Koop een arduino of iets van microe.com en doe wat tutorials.

Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.


Acties:
  • 0 Henk 'm!

  • AFR
  • Registratie: Juni 2001
  • Niet online

AFR

Alhoewel assembly niet de makkelijkste taal is om te leren, verschaft het wel inzicht in wat er intern in een microcontroller gebeurt. Deze inzichten kunnen je later helpen wanneer je een microcontroller in C wilt programmeren. Vanuit deze gedachte kan het een goed beginpunt zijn..... alleen.... zorg dan wel dat je goede documentatie vindt zodat je ook echt begrijpt wat je doet want ik zie nu wel heel veel fouten:
  • Zorg voor een pull-down weerstand bij de schakelaar. Een alternatief is schakelen naar de ground en gebruik maken van de reeds intern aanwezige pull-up weerstanden.
  • Je vergeet de voorschakelweerstand bij de LED om de stroom te begrenzen.
  • Je lijkt de watchdogtimer (WDT) aan te zetten, maar ik zie - volgens mij - geen code waarin je bevestigt dat het programma goed loopt. Elke keer wanneer de timer afloopt wordt de controller - volgens mij - gereset.
  • Detail: Na het sluiten en openen van de schakelaar 'klappert' de schakelaar even waardoor Ledon en Ledoff diverse keren na elkaar zullen worden aangeroepen. Dit is echter nog niet direct relevant in je voorbeeld.
Hmm ik ben te traag met reageren. In je nieuwe schema heb je enkele fouten reeds opgelost.
[list]
• De maximale spanning is volgens de datasheet 5.5V
• De voedingsspanning ontbreekt inderdaad (Vss en Vdd)
• Volgens mij heeft deze controller geen interne oscillator dus heb je ook nog een kristal of RC oscilator nodig.
[/list]

[ Voor 20% gewijzigd door AFR op 02-03-2010 16:57 ]


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
@ osiris, nee, maar het ziet er zeker goed uit (had ik zelf nog niet gevonden). Ga het direct lezen/doen. Bedankt!

[ Voor 4% gewijzigd door huub8 op 02-03-2010 16:55 ]


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Ik heb de tutorials van die website gevolgd, en dit schema van hen gebouwd:

Afbeeldingslocatie: http://www.circuitsonline.net/img/000046.gif

De leds knipperen echter niet, en de verbindingen zijn wel goed. De led gaat echter op de een of andere manier al wel aan als ik met mijn vinger in de buurt kom van het kristal en de trasistoren... Hoe kan dit?

edit: nog een bevinding, dit geberut niet als ik het met een object aanraak (wellicht dus iets met statische energie of zoiets degelijks? Ik maak trouwens gebruik van zo'n breadboard, zo'n ding waar je je componenten gewoon in kunt steken)

[ Voor 82% gewijzigd door huub8 op 02-03-2010 22:29 ]


Acties:
  • 0 Henk 'm!

  • AFR
  • Registratie: Juni 2001
  • Niet online

AFR

Hopelijk heb je je controller bij eerdere experimenten met de verkeerde spanning niet opgeblazen. Wat je kunt proberen zijn de volgende dingen:

Zorg ervoor dat het kristal zo dicht mogelijk bij pin 15 en 16 staat. Ook de twee condensatoren van 18p moeten op hun beurt zo dicht mogelijk bij het kristal staan. Indien er veel storing in je lab is kun je eventueel nog een condensator van 100n bij voedingspin 14 plaatsen (maar dit lijkt me sterk).
Check ok alle aansluitingen contact maken.

Controleer of je de microcontroller hebt ingesteld om met een kristal van 4Mhz te werken. Dit kun je doen nadat het programma in de PIC is geladen (zie tutorial).
Controleer ook of de watchdogtimer (WDT) hier uit staat. Via het programma dat je hier eerder plaatste heb je deze fuse waarschijnlijk ingschakeld zodat de controller zich mogelijk al telkens reset voordat de lED kan knipperen.

Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Dan hoop ik ook dat ik hem niet heb opgeblazen (kan dat zo makkelijk met 0,5 volt teveel?). Zou je kunnen uitleggen hoe je de watchdogtimer checkt/uitzet?

Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Het is toch nog gelukt (hij stond op RC in plaats van XT), hij knipperd nu eindelijk! Het enige probleem is nu dat het tweede ledje altijd licht oplicht (maar een klein beetje, maar wel zichtbaar) en meer oplicht als de andere uit is, is mijn pic kapot of hoort dit?

[ Voor 37% gewijzigd door huub8 op 03-03-2010 16:42 ]


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Pulldown weerstand gebruikt?

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
pulldown waarvan?

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Van die pin.
En nee, ondanks je verzoek, ga ik dat niet per DM uitleggen.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
Ik stuurde enkel een DM omdat ik bang was dat je wellicht niet mijn reactie had gezien, en mijn verzoek was niet om het per DM uit te leggen, maar om het uit te leggen. Welke pin bedoel je bijvoorbeeld? (nogmaals, dit is mijn eerste ervaring met pics, dus vandaar)

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Je weet uiteraard wat de functie van een pulldown-weerstand is en hoe je die moet implementeren, omdat je na Boudewijn's post onmiddelijk op Google bent gaan zoeken hoe & wat?

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Nou ja probeer beide pinnen maar eens, dat kan nooit kwaad.
Als je er maar 1 wil voorzien: experimenteren maar.

offtopic:
Ik ben geen afhaalchinees, tenzij je een van mijn klanten bent maar dan betaal je daar ook gewoon voor.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • LED-Maniak
  • Registratie: Oktober 2003
  • Laatst online: 09:02
Volg tutorials en pas bestaande code aan. Kom je een woord of iets tegen wat je niet kent dan ga je eerst googlen en daarna verder zoeken.

Lukt het dan niet, dán ga je het hier pas vragen...

Wat jij wil is zo enorm basis dat dit al reeds 1E8 keer is uitgelegd, het net staat er vol van.

Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.


Acties:
  • 0 Henk 'm!

  • Oguz286
  • Registratie: Juni 2002
  • Laatst online: 23-02 10:10
Ik zie dat je dingen vraagt die je gewoon in de datasheet van de chip kan vinden. Verder kan je opzoeken wat een pulldownweerstand is en alle andere termen die je niet bekend zijn. Dit zijn echt basic dingen die je zou moeten weten voordat je met zo'n chip aan de slag gaat hoor.

Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
oke, maar ik ben ook niet bekend met datasheets, dus wilde ik het graag even van iemand horen. Ik neem dan aan dat het de MCRL pin is?

Foutje, ik bedoelde de Vss

[ Voor 12% gewijzigd door huub8 op 03-03-2010 18:07 ]


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Nou ja tijd om de data sheet te lezen ? :)
Daar staat het allemaal in, ook deze vraag.

Alleen wat die MRCL pin ermee te maken heeft vraag ik me af, maar ik ben dan ook geen PIC gebruiker.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Oguz286
  • Registratie: Juni 2002
  • Laatst online: 23-02 10:10
Heb je zoals de rest hintte al opgezocht WAT een pulldownweerstand is? Weet je nu ook WAT het doet? Dan kan je zelf antwoord geven op je vraag.

Misschien weet je het niet (je moet het wel weten want je bent akkoord gegaan met de voorwaarden toen je je hier registreerde), maar het is de bedoeling dat je zelf ook onderzoek doet. Je hoeft niet alles te weten, maar een kant en klaar antwoord zul je hier niet snel vinden, want daar leer je zelf niks van. Vandaar dat mensen hier tips en aanwijzingen geven zodat jij verder kan zoeken en je er dus wel wat van leert.

Als je niet bekend met datasheets, dan denk ik IHMO dat je teveel hooi op je vork probeert te nemen. Als je de hardware niet kent en je hebt geen electronica kennis (pulldownweerstand is erg basic namelijk) dan kan je beter eerst wat basis electronica tutorials doornemen zodat je straks beter snapt hoe, wat & waarom :)

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

VSS is je power supply, samen met VDD.
VSS -> aan GND.
VDD -> 5V (neem ik aan).

offtopic:
En dit is echt niet de bedoeling van tweakers.net...

[ Voor 28% gewijzigd door Boudewijn op 03-03-2010 18:17 ]

i3 + moederbord + geheugen kopen?

Pagina: 1