PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe PIC Thermometer



Rocki
27.12.2009, 20:31
Hallo zusammen,

ich möchte mit der Pic Programmierung anfangen.
Aber es ist ewig her das ich mit Assembler programmiert habe.
Möchte aber ein Thermometer bauen wie auf der Seite.
http://electronics-diy.com/pic_temperature_meter.php
Aber ich habe noch nie mit einen Pic was gemacht.
Kann mir jemand helfen Danke.

KingTobi
27.12.2009, 21:27
Dann programmier in C mit dem MPLAB

Rocki
28.12.2009, 10:47
Hallo KingTobi,
leider habe ich keine annung wie ich den Pic ansprechen soll.
Ich wäre dankbar wenn mir da jemand helfen kann.
Danke
Gruß Rocki

KingTobi
28.12.2009, 10:55
Du brauchst einen Programmer.
Ich hab hier noch einen USB Programmer liegen der immer wunderbar funktioniert hat, bin aber auf AVRs umgestiegen.

sky2
28.12.2009, 12:23
Den PICkit2 kann ich dier nur empfehlen.
Der kann aber den 16F628 nicht programmieren.

KingTobi
28.12.2009, 13:13
Gerade der 16F628 ist einer der gängigsten...

HF SHOOTER
02.01.2010, 14:48
www.sprut.de
Massig Beispiele und Code, sowie diverse Brenner. Seite speziell für PICs.

mfg
Benny

chatagemta
07.04.2010, 18:22
Hallo, ich bin auch dabei PIC's zu programmieren. Habe den Crownhill Proton+ und will in Basic programieren, als Hardware benutze ich von Vellemann das K8076 mit PicProg2009 und zum Probieren das K8048.Bei dem K8076 hatte ich erst Probleme, die ich dadurch abstellte,indem ich den Schieber Hardware Delay ganz auf Slow gestellt habe. Nun zu meinem eigentlichen Problem, ich wolltr einen kleine Tischroboter bauen und programieren.Das Programm funktioniert auch soweit.Ich komme nur mit den Interrupt's nicht klar.Ich benutze als Interrupt den Eingang RB0 ( PIC 16F627 ) . Zur Zeit sieht mein Programm so aus

DEVICE = 16F84
XTAL = 4

Dim Wert as Word
Dim Wert2 as Word
Dim Flag as Byte
Symbol Motorport = PortA
Symbol LEDPORT = PORTB
Symbol LED1 = PORTB.0 ' Alias PORTB to LEDS
Symbol LED2 = PORTB.1
Symbol Motorleitung1 = PortB.2
Symbol Motorleitung2 = PortB.3
Symbol Motorleitung3 = PortB.4
Symbol Motorleitung4 = PortB.5


TRISB = %00000000 ' Alle Bits Ausgang
PortB = 0
TRISA = %11111111 ' Untere 6 Bits Ausgang Rest Eingang
PortA = 0
PortB = 0

Loop:
low LED1
low Led2
IF Porta.0 = 1 then goto Rueckwaerts: ELSEIF Porta.0 = 0 then goto Luup

delayms 2000

Luup:
low LED1
IF Porta.0 = 1 then goto Rueckwaerts
gosub Vorwaerts
delayms 2000

IF Porta.0 = 1 then goto Rueckwaerts
gosub Anhalten
delayms 2000

IF Porta.0 = 1 then goto Rueckwaerts
gosub Neunzig_Grad_rechts
delayms 2000

IF Porta.0 = 1 then goto Rueckwaerts
gosub Anhalten
delayms 2000

goto loop

Vorwaerts:
Toggle LED1
Motorleitung1 = 0
Motorleitung2 = 1
Motorleitung3 = 1
Motorleitung4 = 0
IF Porta.0 = 1 then goto Rueckwaerts
return




Anhalten:
Toggle LED1
Motorleitung1 = 0
Motorleitung2 = 0
Motorleitung3 = 0
Motorleitung4 = 0
IF Porta.0 = 1 then goto Rueckwaerts
return

Neunzig_Grad_rechts:
Toggle LED1
Motorleitung1 = 1
Motorleitung2 = 0
Motorleitung3 = 1
Motorleitung4 = 0
IF Porta.0 = 1 then goto Rueckwaerts
return
goto Loop

Rueckwaerts:
Toggle LED2
low LED1
Motorleitung1 = 1
Motorleitung2 = 0
Motorleitung3 = 0
Motorleitung4 = 1
Delayms 2500
Toggle LED2
Motorleitung1 = 0
Motorleitung2 = 0
Motorleitung3 = 0
Motorleitung4 = 0
Delayms 1500
Toggle LED2
Motorleitung1 = 0
Motorleitung2 = 1
Motorleitung3 = 0
Motorleitung4 = 1
Delayms 2500
Toggle LED2
Motorleitung1 = 0
Motorleitung2 = 0
Motorleitung3 = 0
Motorleitung4 = 0
Delayms 1500
goto loop

chatagemta
07.04.2010, 18:47
Sorry habe gerade gesehen, dass das Programm etwas durcheinander ist, es muß in der 1.Zeile natürlich heißen: DEVICE = 16F627, steht auch so im aktuellen Programm , dies ist eine ältere Version, ausserdem ist Motorport natürlich Port B.

HF SHOOTER
07.04.2010, 19:27
Hallo,
generell gilt: Um einen Interrupt zu benutzen sprich um auf dieses spezielle Ereignis reagieren zu können muss man den Interrupt vorher scharf schalten. Das macht man indem man ein entsprechendes Bit in einem zugehörigen Register setzt.
Das Register und wie das Bit heißt findest du im Datenblatt zum 16F627. In dem Register kannst du dann auch einstellen ob der Interrupt ausgelöst wird wenn eine fallende bzw. steigende Flanke ansteht und sonstige Feinheiten. Aber wie gesagt am besten im Datenblatt nachlesen. Bin leider zu lange herausen um es dir aus dem Stegreif erzählen zu können.

Wie der Interrupt dann in deiner Programmiersprache angesprochen wird das musst du selbst im Handbuch zu PicProg2009 (ich kenn das nämlich nicht) nachlesen.
Ich könnte mir vorstellen das es ca. so ausschaut:

Sub INT_EXT()
...Code der ausgeführt wird wenn Interrupt eintritt
End SubAber wie auch bereits erwähnt. Da solltest du was im Handbuch zu finden oder bestimmt gibt es auch Beispielprojekte von dem Hersteller.

Hoffe ich konnte dir ein paar Denkanstöße verpassen.

mfg
Benny

chatagemta
07.04.2010, 20:38
Danke,das Programm mit dem ich arbeite heißt: PROTON+ Compiler Version 2.1.3 von Crownhill, hier in der Hilfe steht auch was von Interrupt .Habe gerade festgestellt dass auf meinem Experimentierboard der Interrupteingang RB0 an einer LED angeschlossen ist, werde mir jetzt erstmal ein Platinchen mit Testsockel , Led , Taster usw. bauen, mal sehen was ich damit erreiche. Vielleicht ist ja noch jemand mit dem Compiler und Basic vertraut.Danke aber nochmals.