Sida 1 av 2
Nybörjare på Pic
Postat: 7 januari 2005, 23:24:26
av Robert Nielsen
Har nu lyckats att få en Pic 16F628A att blinka en lysdiod!
Vad kan man mer göra för enkelt så man kan lära sig???
Hörttals om att man skriver en text till en LCD
Postat: 8 januari 2005, 00:01:27
av $tiff
Gratulerar till att du fick igång programmeraren!
Du kan ju fortsätta med att blinka med 8 lysdioder. Tona och scrolla kors och tvärs.
Koppla in knappar för att styra saker. Lär dig avstudsa dem utan att äta upp all processortid.
Har du en LCD med HD44780 styrchip så koppla in den och försök få ut lite text!
Postat: 8 januari 2005, 00:04:56
av jack
Om du pratar PicBasic så finns det ett trevligt kopplingsschema för LCD (4-bitarsläge) i PicBasic Pro-manualen.
Postat: 8 januari 2005, 17:04:52
av Robert Nielsen
Idag när jag skulle programmera en pic.krets så fungerade inte progammeraren igen.
Har tröttnat på att felsöka, och funderar på att köpa en som fungerar.
Nån som vet någon bra för max 350-500:-
Postat: 12 januari 2005, 22:09:03
av Robert Nielsen
Nu Fungerar programmeraren perfekt, det visade sig att det var en del av mina pic-kretsar som var kass, gick helt enkelt inte att programmera dom.
Men men, har ialla fall lyckats att göra rinnande ljus fram och tillbaka och blinka mm.
Men får inte till det med input.
Kod: Markera allt
Har provat denna kod:
main:
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
If PortA = %00000001 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
END
Kod: Markera allt
Och även denna:
main:
TrisA = 1 ' PortA är input
TrisB = 255 ' PortB är Output
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
END
Men inget verkar fungera, har läst picbasic pro manualen och mikroBasic manualen men det hjälper inte. Kör med deras exempel.
Visserligen kör jag med programmet: mikroBasic, där komandon:a är inte riktigt samma som picbasic pro. Men det blir inga felmedelanden när jag Kompilierar.
Jag hoppas att det är nån som kan hjälpa mig.
Postat: 12 januari 2005, 22:33:01
av $tiff
jag kan se två små fel:
I det första exempelt kollar du om porta.0 är hög OCH alla andra låga. Om de är icke-ansluta till något så kan de flyta omkring och vara vadsomhelst.
I det andra exemplet har du inte satt TrisB korrekt för att få alla output; det ska vara 0.
Postat: 12 januari 2005, 22:46:00
av Robert Nielsen
Doh!
Ser nu att jag hr satt TrisB fel.
Det kan nog stämma att de andra portarna är flytande, efterssom jag inte kopplad dom till GND via motstånd.
Om inte de andra portarna ska behöva vara låga hur ska det då se ut?
PortA.0 = 1 eller??
Postat: 12 januari 2005, 23:11:02
av $tiff
jajjamen!
if PortA.0 = 1 ...
...är ett mycket bättre alternativ om det bara är bit 0 du är intresserad av.
Såg nu att du använder '628. Jag vet inte hur mikroBasic-kompilatorn beter sig, men normalt måste du stänga av komparatordelen på portA innan den går att använda för normalt digitalt bruk. detta görs genom cmcon = 7 i böjan av programmet.
Postat: 13 januari 2005, 20:27:22
av Robert Nielsen
Har nu suttit en bra stund och försökt lösa problemet med input i min pic, men det gick inte.
Jag har placerat " cmcon = 7 " både ovanför "main:" och i "main:" men det går helt enkelt inte.
Jag provade även att köra input på PortB och Output på PortA, och det hjälpte såklart inte.
Körde även ett exempel som stod i mikroBasic - manualen, där det beskrevs att man kunde skriva något mellan "SUB" och "END SUB" så att man skulle fåett studsfritt tillslag, och självklart funkar inte det häller.
Det hade varit kul att kunna de vanliga funktionerna i en pic, det öppnar ju sig en helt ny värld av möjligheter, det verkar ju gå att göra massa saker enklare än med traditionell elektronik.
Postat: 14 januari 2005, 02:02:58
av $tiff
Om du vill ha mer hjälp med koden så släng upp den det du har problem med och förklara tydligt vad du vill att den ska göra, så försöker jag hjälpa till!
Postat: 14 januari 2005, 10:00:57
av Logan
Vad för program använder du för att prgramera?
Postat: 14 januari 2005, 12:13:37
av Robert Nielsen
Logan> Jag skriver programmet i mikroBasic och kompilierar till hex.
Hex - filen programmerar jag pic:en genom programmet ic-prog.
EDIT:
$tiff> Här kommer koden, hade den på den andra datorn.
Kod: Markera allt
program PicInput
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000001 ' Sätt PortB.0 hög.
End If
end.
Det händer att utgången är hög nån gång ibland, men det går inte att ändra status på den genom att lägga antingen 0v eller 5v på input pinnen. Jo jag kör med ett pulldown motstånd på 15k.
Jag har även provat att använda en annan port som input (både portA och portB) men det hjälper inte, samma resultat.
Att styra utgångarna är inga problem, utan det är ingångarna.
Jag skulle gissa på att det är någonting i koden.
Postat: 15 januari 2005, 02:21:15
av $tiff
Kod: Markera allt
program PicInput
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB.0 = 1 ' Sätt PortB.0 hög.
else
PortB.0 = 0 ' Återställ PortB.0.
End If
goto loop
end
Funkar detta?
Postat: 15 januari 2005, 20:14:47
av Robert Nielsen
Det hjälpte tyvärr inte
Postat: 15 januari 2005, 23:01:05
av Robert Nielsen
Nu fungerar det med denna koden:
Kod: Markera allt
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB = %00000011 ' Sätter PortB.0 och .1 Hög
Else
PortB = %00001100 ' Sätter PortB.2 och .3 Hög
End If
Goto loop
end.
Fungerar även med denna:
Kod: Markera allt
main:
cmcon = 7 ' Stäng av komparator
TrisA = 255 ' PortA är input
TrisB = 0 ' PortB är Output
loop:
If PortA.0 = 1 Then ' Ifall PortA.0 är hög.
PortB.1 = 1 ' Sätter PortB.1 Hög
Else
PortB.1 = 0 ' Sätter PortB.1 Låg
End If
Goto loop
end.
Jag ser ingen skillnad, men tack ändå $tiff och Murre