Nun also Microbasic von Mikroelektronika!
Wer die MPLAB-Umgebung kennt und damit erfolgreich Projekte umgesetzt hat, der kommt ohne nennenswerte Anlaufprobleme auch mit diesem Basic-Angebot zurecht.
Is klar, ein erster Test musste her und is auch klar, das war dann mal wieder ,,Hello-World".
Aber genauso klar ist, dass bereits dieses erste, scheinbar niedliche und bestens vorbereitete, weil erstes vorgehaltenes Übungsbeispiel scheiterte! Nix is mit Blinken, alle LEDs befinden sich im Streik!
Nach dem ,,Build"-Befehl wurde eine Unmenge an Dateien ausgeworfen, darunter auch ein Hex-File in der Größe von 1k – vermutlich aufgerundet. Dann also die ,,MPLAB X IPE" angeworfen, damit gebrannt und sich geärgert. Wer diese ,,IPE" nicht kennen sollte, das ist ein Beifang-Programm zur ,,MPLAB X IDE". Letztere ist das Hauptprogramm zum Erstellen eines neuen Projektes und dient auch gleichzeitig zum Brennen. Die IPE ist nur für den Umgang mit dem Programmiergerät zuständig, also Brennen, Verifizieren, Auslesen und Löschen.
Auf diesem Weg liegt kein Fehler, der muss im Programm stecken und das hatte ich nur insofern abgewandelt, indem ich die im PIC18F14K22 nicht vorhandenen Ports aus dem Prog strich. Tolle Wurst: Scheitern bereits bei ,,hello world", das macht Lust auf mehr!
Grüße, picass
Also normalerwiese musst du eigentlich das selbe tun was du in Assemnler gemacht hast.
D.h wenn du Register in Assemnler gesetzt hast musst du das in Basic auch machen.
Ich kenne den Controller nicht, aber muss man hier noch die Ports auf digital setzten ?
Wenn ja dann musst du es in Basic auch machen.
Zum Compiler. Hast du den richtigen Controller ausgewählt ? Hast du die richtige Taktfrequenz eingestellt,
für den Quarz den du benutzt ? Ist am PortC eine LED weil den schaltest du auf high.
Anfang ist immer schwer. Aber wenn man es mal gefressen hat, dann ist es einfach.
jetzt weiß ich auch wofür die IPE ist, damit hatte ich noch nichts gemacht. Ich benutze meist einen Bootloader.
Hallo picass,
stelle mal in der IDE bei Projects -> Edit Project alles so ein, wie im Anhang mit dem roten X angekreuzt.
Dann sollte es gehen. Analog ausschalten braucht man bei Ausgabe nicht.
PICkel
Config.jpg
Zitat von: PICkel in 02.07.2022, 14:31:14 CESTHallo picass,
stelle mal in der IDE..... alles so ein, wie ...... angekreuzt.
Nix!
Das Vierfach-PLL hatte ich angelassen, die Frequenz auf 0,031 MHz eingestellt.Und nu' tut sich was!
Von Blinken kann aber keine Rede sein: alle vier am Port D: angschlossenen LED flackern bedenklich schnell, aber lass ma.... War mein Fehler, ich hatte das Auswahlfeld für die diversen Oszillatoren nicht gescrollt und in der ersten Aufregung den falschen Oszi ausgesucht.
Gettz also Blitzlichtgewitter, siehe da.
Jetzt hebt natürlich das Gemecker in anderem Bereich an. Was ich nun vermisse - vielleicht hab ich es übersehen - ist eine Datei, in welcher dieses Programm und seine Bedienung beschrieben wird. Es gibt da sowas, aber das gereicht nur für einen Überblick über die Funktionen, eine echte Anleitung oder etwas zum Nachschlagen ist das nicht. Und die Online-Hilfe ist schrecklich: da ist jeder Unterpunkt auf einer fast leeren Seite mit nur 5 Sätzen beschrieben, und schon muss man wieder zurück in die Hauptübersicht.
Ist wohl eine Alterssache bei mir: es ist ungut, wenn ich täglich unmässig viele Stunden auf einen Monitor starre, da schmerzen mir Abends die Augen, aber heftig. Lieber wäre mir was zum Ausdrucken. Notfalls kaufe ich auch ein Buch, wenn es denn zu dieser Compiler Software passt.
Grüße, picass
Da ist mal was:
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-basic/compiler-mikrobasic-pro-for-pic
Vielleicht hilft's weiter. Ansonsten melde Dich nochmal, dann mache ich mal eine Übersicht/Anleitung.
Eigentlich gibt's nur einige wenige Sachen zu beachten.
Noch ein Hinweis:
Die Frequenzeinstellung im Projekt hat KEINEN Einfluss auf den Takt des PIC, sie dient der Berechnung von Wartezyklen durch den Compiler und muss mit der Freq. des Oszillators identisch sein.
Die Frequenz des PIC-Oszillators muss weiterhin im OSCCON- Register eingestellt werden, lediglich die PLL wird über die Projekteinstellungen geschaltet, weil sie in die CONFIG- Register eingetragen wird.
PICkel
Nein so geht es nicht. Das Programm läuft so nicht richtig da du die Grundeinstellungen
nicht gemacht hast. Also folgendes muss am Anfang eingestellt werde.
1. Wenn du einen externen Quarz benutzt dann muss links im Fenster vom Compiler wo die Frequenz steht,
die Frequenz rein die auf dem Quarz steht und nichts andere rein. Wenn du PLLx4 nimmst dann als Frequenz mal 4 eintragen.
Wenn du den internen Takt nimmst, dann muss als Frequenz dort rein welche Frequenz du dir ausgesucht hast.
Also interner Takt 4MHz als Frequenz 4 MHz eingeben. Genauso wie in Assembler musst du für den internen Takt
weitere Register setzten. Siehe Datenblatt. Hier wäre es noch das OSCCON Register. Alle Register die so ein Pic hat
stehen im Datenblatt. Dürfte dir ja bekannt sein und müssen auch gesetzt werden, dürfte auch von Assembler bekannt sein.
Die Fuses oder Config findest du oben im Fenster unter Projekt/Edit Projekt.
Versuche das zuerst einmal hin zu bekommen, bevor du weiter machst. Das Programm muss sauber laufen und nicht irgendwie laufen.
Die Hilfe F1 ist auch nicht dafür gedacht dir eine Anleitung von A bis Z zu liefern. Sie erklärt dir wie die Befehle
die der Compiler hat zu benutzen sind. Wenn du mit dem Cursor auf einen Befehl gehst, z.B. PORTA und drückst dann
F1 für Hilfe dann bekommst du eine Hilfe für diesen Befehl.
Aber keine Panik am Anfang ist alles was verwirrend und mit der Zeit siehst du auch wieder Licht im Walde feuerwerk
Hier kannst du auch nochmal reinschauen: Anleitung (https://www.mikroe.com/blog/compiler-quick-start-guide)
Aber wie bei jeder neuen Programmiersprache gilt, einfach loslegen mit einem Programm. Und
wenn Fragen sind immer her damit.
Also, wenn Dir das e-book mit dem schon etwas antiquiertem 16F887 weiterhelfen könnte, dann kann ich Dir die ca. 550 Seiten ausgedruckt zusenden, weil ich schon lange nicht mehr reingesehen habe.
Viele Grundlagen und (Bibliotheks-) Funktionen werden erklärt, aber es gibt natürlich inzwischen etliche neue Funktionen, vor Allem für PIC18, die darin noch nicht enthalten sind.
Gruß
PICkel
Ich bin überwältigt von euren helfenden Angeboten, das ist sagenhaft! Danke! Auch "Durchhalteparolen", Peter, helfen dem Opa auf den Gaul! ;D
Ähm...,PICkel, zwei Angelegenheiten, eine davon via Normalo-Mail, weil es da um etwas Persönliches geht, die andere gettz: sind die 550 ausgedruckten Seiten sowas wie das ganz normale Datenblatt von Microchip oder ist das irgendwas, was mit Basic zu tun hat? Falls Letzteres, würde mir das sicher helfen. Ich könnte dir ein ausgedrucktes Paket-Label von der DHL zuschicken, du besorgst einen oder zwei Aldikartons - so mache ich das immer und den "Rest" schaffen wird dann schon.
Noch was Persönliches von mir: selbst lerne ich am besten, wenn ich Beispiele zu Hand habe, also kleine Programm-Schnipsel, die eine einzige Funktion darstellen, rsp. ein einziges Thema. Microchip hat das mal sehr, sehr gut gemacht nämlich in ihrem Beifang für das "PICkit low pin count demo"-board. Da gab es 13 Lektionen über z.B. Interrupt, Tabellen, Tastenabfragen etc. und jeweils in "C" und Assembler. Daraus lerne ich am schnellsten. Übrigens hatte der Volker mal ein tolles Script erstellt, leider "nur" in "C". Schade, dass es sowas nicht auch in Basic oder Pascal gibt.
Ausgedruckt habe ich selbst erstmal eure letzten Beiträge und werde versuche, die heute umzusetzen, rsp. abzuarbeiten. Heute ist allerdings Sonntag, da muss ich mit meiner Frau immmer stundenlang um einen in der Nähe liegenden Stausee rum laufen, und das alles nur, weil es zur Halbzeit auf dieser Strecke - also am Stauwehr - leckeres Eis gibt. :P
Grüße, picass
Hallo picass,
Das ist das ausgedruckte e-book, das ich schon gestern verlinkt habe:
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-basic/compiler-mikrobasic-pro-for-pic
Schau mal rein, und wenn's Dir zusagt, schicke ich es Dir. Paketaufkleber ist nicht nötig, es sind nur ca. 275 Blatt, beidseitig bedruckt.
Habe schon mal einen Karton reserviert.
Einen schönen Spaziergang wünscht
PICkel
Hilfe findest du in der Hilfe vom Compiler.
Wenn du jetzt z.B was über LCDs finden willst, gehst du in die Hilfe und unter Suchen gibst
du LCD ein. Nun bekommst du eine Liste wo du weiter selektieren kannst. SPI LCD, I2C LCD usw.
Wenn du ein Thema ausgesucht hast bekommst du rechts zuerst einmal die Befehle angezeigt die man
für ein LCD braucht. Am Ende der Liste findest du immer ein Demoprogramm wie man es programmieren kann.
Meistens sind auch Schaltpläne am Ende zu finden. Einfach mal ein bisschen mit rum spielen. Demoprogramme
findest du auch in dem Verzeichniss wo du den Compiler installiert hast.
Oder wenn es noch nicht reicht dann auch hier: Libstock (https://libstock.mikroe.com/project_categories)
Nachfolgend das orig. Listening zum ,,Erfolg" von gestern. Bei diesem hatte ich – um das Blitzen in das gewünschte Blinken zu ändern – den Wert der Wartezeit von 1000 auf 10000 erhöht.
Die Einstellungen für die Frequenz hatte ich schon gesetzt, also als Frequenz 0,031 MHz angegeben.
Aber nu' zum Listening, da ist schon Etliches seltsam, rsp. Lückenhaft.
Von OSCCON ist da nichts zu sehen, und wie und wo man das da reinfummelt, ist nirgends erläutert. Die Werte für das Reg kenne ich, ab wo und wie?
Unter Variablen – ganz unten – unter 0004 findet sich ein Eintrag hinsichtlich ,,Khz". Was soll das gettz? Muss da eine Zahl rein?
Konsequenz aus all dem: es fehlen solche Beispiele wie im vorigen Statement von Microchip. Das wäre ,ne feine Sache und würd viele Detailfragen unnötig machen.
Grüße, picass
Kann eure Texte nicht mehr lesen, meine Frau steht abmarschbereit...
; LST file generated by mikroListExporter - v.2.0
; Date/Time: 02.07.2022 17:53:36
;----------------------------------------------
;Address Opcode ASM
0x0000 0xF000EF0E GOTO 28
0x0004 0x0000 NOP
0x0006 0x0000 NOP
0x0008 0xF000EF00 GOTO 0
0x000C 0x0000 NOP
0x000E 0x0000 NOP
0x0010 0x0000 NOP
0x0012 0x0000 NOP
0x0014 0x0000 NOP
0x0016 0x0000 NOP
0x0018 0xD7F3 BRA 0
_main:
;helloworld6.mbas,5 :: main:
;helloworld6.mbas,7 :: TRISA = 0 ' set direction to be output
0x001C 0x6A92 CLRF TRISA
;helloworld6.mbas,8 :: TRISB = 0 ' set direction to be output
0x001E 0x6A93 CLRF TRISB
;helloworld6.mbas,9 :: TRISC = 0 ' set direction to be output
0x0020 0x6A94 CLRF TRISC
;helloworld6.mbas,11 :: while TRUE
L__main2:
;helloworld6.mbas,12 :: LATA = 0x00 ' Turn OFF LEDs on PORTA
0x0022 0x6A89 CLRF LATA
;helloworld6.mbas,13 :: LATB = 0x00 ' Turn OFF LEDs on PORTB
0x0024 0x6A8A CLRF LATB
;helloworld6.mbas,14 :: LATC = 0x00 ' Turn OFF LEDs on PORTC
0x0026 0x6A8B CLRF LATC
;helloworld6.mbas,15 :: Delay_ms(10000) ' 1 second delay
0x0028 0x0E65 MOVLW 101
0x002A 0x6E0C MOVWF R12, 0
0x002C 0x0EA4 MOVLW 164
0x002E 0x6E0D MOVWF R13, 0
L__main6:
0x0030 0x2E0D DECFSZ R13, 1, 0
0x0032 0xD7FE BRA L__main6
0x0034 0x2E0C DECFSZ R12, 1, 0
0x0036 0xD7FC BRA L__main6
;helloworld6.mbas,17 :: LATC = 0xFF ' Turn ON LEDs on PORTC
0x0038 0x0EFF MOVLW 255
0x003A 0x6E8B MOVWF LATC
;helloworld6.mbas,18 :: Delay_ms(10000) ' 1 second delay
0x003C 0x0E65 MOVLW 101
0x003E 0x6E0C MOVWF R12, 0
0x0040 0x0EA4 MOVLW 164
0x0042 0x6E0D MOVWF R13, 0
L__main7:
0x0044 0x2E0D DECFSZ R13, 1, 0
0x0046 0xD7FE BRA L__main7
0x0048 0x2E0C DECFSZ R12, 1, 0
0x004A 0xD7FC BRA L__main7
;helloworld6.mbas,19 :: wend ' Endless loop
0x004C 0xD7EA BRA L__main2
L_end_main:
0x004E 0xD7FF BRA $+0
; end of _main
Symbol List:
//** Routines locations **
//ADDRESS SIZE PROCEDURE
//----------------------------------------------
0x001C [52] _main
//** Variables locations **
//ADDRESS SIZE VARIABLE
//----------------------------------------------
0x0000 [1] R0
0x0001 [1] R1
0x0002 [1] R2
0x0003 [1] R3
0x0004 [4] Get_Fosc_kHz_local_result
0x0004 [1] R4
0x0005 [1] R5
0x0006 [1] R6
0x0007 [1] R7
0x0008 [1] R8
0x0009 [1] R9
0x000A [1] R10
0x000B [1] R11
0x000C [1] R12
0x000D [1] R13
0x000E [1] R14
0x000F [1] R15
0x0010 [1] R16
0x0011 [1] R17
0x0012 [1] R18
0x0013 [1] R19
0x0014 [1] R20
0x0F89 [1] LATA
0x0F8A [1] LATB
0x0F8B [1] LATC
0x0F92 [1] TRISA
0x0F93 [1] TRISB
0x0F94 [1] TRISC
Ich hatte dir aber schon geschrieben wie die Freuqenz ein zu stellen ist. Wie kommst du auf diese komische
Frequenz ? Lies dir meinen Beitrag nochmal durch und stell die Frequenz richtig ein. Dein Arbeitsbereich ist
der Compiler selbst wo du deinen Code eingibst. In dem Assemblerlisting hast du selber nichts zu machen.
Register die im Datenblatt stehen haben nichts mit dem Compiler zu tun. Diese Befehle wirst du auch nicht in der
Doku oder Hilfe vom Compiler finden, sie stehen im Datenblatt zum jeweiligen Controller. Müssen aber jenachdem was
du mit dem Controller machst, gesetzt werden. Und dieses macht man im Compiler Fenster. Hier muss für den internen
Takt noch das OSCCON Register gesetzt werden. Das musstest du doch wenn du das selbe Programm in Assembler programmierst
auch gesetzt haben das OSCCON Register mit einem Wert natürlich.
im Compiler gibst du einfach vor der Programmschleife den Befehl OSCCON = 228 für 8MHz internen Takt ein.
Oder einen andern Wert für eine andere Frequenz. Diese Frequenz muss dann im Compiler links in das Feld für
Frequenz auch eingegeben werden. Sonst läuft dein Programm nicht richtig.
Zusätzlich müssen die Fuses noch richtig eingestellt werden für den internen Takt. Wurde aber weiter oben schon beschrieben.
Der Compiler hat eigene Befehle wie LCD_Init WHILE TRUE usw. und dann gibt es noch die Register vom PIC die im Datenblatt
stehen. Diese Befehle findest du nur im Datenblatt nicht im Compiler. Diese Register vom Pic müssen jenachdem was der Pic
machen soll auch noch in das Compilerfenster mit rein.
Hier nochmal was ich unten geschrieben habe in Bildern.
Wenn du so alles einstellst und eingibst, dann sollte das Programm
laufen.
Viiiele Fragen, hier einige Antworten:
- OSCCON wird hier nicht gesetzt bzw. geändert, die Standardeinstellung nach Prog.- Start ist der interne Oszillator mit 1MHz bei der vorgegebenen Konfiguration des Projektes. Siehe Projekteinstellungen.
- R0 bis R20 sind Register, die von der CPU direkt angesprochen werden können. Werden hier vom Compiler zum delay_ms(1000) benutzt. Sie müssen nicht als Variablen deklariert werden.
- R4 enthält Informationen zur Taktfrequenz, falls diese im Programm z.B. mit Get_Fosc_kHz() abgefragt wird. Du brauchst Dich da also nicht drum zu kümmern.
(Peter hat ja inzwischen auch geschrieben.)
PICkel
So, ich habe mal ein bissel was zusammengeschrieben:
- Ein Demo- Programm über den Aufbau einer Programmdatei. Enthält auch ein paar Zeilen, die nur als Beispiel dienen, aber im Prog. selbst nicht relevant sind.
- Eine Bitmap- Datei mit den möglichen Variablentypen. Habe ich mir zur schnellen Information ins Windows- Hintergrundbild eingebunden
Eine Kurzdoku wollte ich noch anhängen, die überschreitet aber die max. mögliche Dateigröße.
Gruß
Johannes alias PICkel
mBASIC_Demo.zip
Zitat von: PICkel in 03.07.2022, 11:42:56 CEST- OSCCON wird hier nicht gesetzt bzw. geändert, die Standardeinstellung nach Prog.- Start ist der interne Oszillator mit 1MHz bei der vorgegebenen Konfiguration des Projektes. Siehe Projekteinstellungen.
Gesucht wird immer noch das, was ich als "Progamm" ansehe. Darunter verstehe ich die Ansammlung von Text, Variablen, etc., etc., Kommentaren, usw., usw., mit welchem man ein neues Projekt erstellen kann und gettz kommt das Wichtige: das nach dem Compilieren auch läuft.
Die Takteinstellung scheint ja ein echtes Betriebsgeheimnis. Natürlich hatte ich - vom allerersten Prog-Entwurf abgesehen, als ich den falschen Oszi auswählte - bei jedem neuen Projekt den Takt bei den Propertys angegeben. Hat nur leider keinerlei Wirkung, da scheint es sich um eine verborgene reine Statiskmaßnahme ohne jedwede Wirkung zu handeln.
Also gut, Peter meinte, das OSCCON Register müsse angegeben werden. Meine Frage nach "wie" und "wo" ist allerdings nicht beantwortet und auch nach dem kompletten Schnelllesen der Hilfe, rsp. des Tutorials war da außer dem unten stehenden Hinweis, es handle sich wohl um was Neues, das demnächst eingeführt würde, konnte ich nichts Praktikables entdecken.
Also schrieb ich mal mutig das OSCCON einfach in die "Settings" rein, probierte auch verschiedene Einrückungen, aber außer der Meckermeldung: "Fehler" kam nichts mehr.
Ach ja, nochmal zur Wiederholung: ich hatte als Takt den von mir zuletzt immer verwendeten Takt des internen Oszi mit 31 kHz gewählt, im Basic-Prog hieß das dann: 0.031000 MHz. Bei späterer Kontrolle stand dann im Fenster: 0,030999 MHz.
Hier der letzte Versuch:
-------------------------
-----------------------------------------------------
program helloworld07
' Declarations section
OSCCON = 0x02
main:
' Main program LED_Blinking
TRISA = 0 ' set direction to be output
TRISB = 0 ' set direction to be output
TRISC = 0 ' set direction to be output
while TRUE
LATA = 0x00 ' Turn OFF LEDs on PORTA
LATB = 0x00 ' Turn OFF LEDs on PORTB
LATC = 0x00 ' Turn OFF LEDs on PORTC
Delay_ms(1000) ' 1 second delay
LATC = 0xFF ' Turn ON LEDs on PORTC
Delay_ms(1000) ' 1 second delay
wend ' Endless loop
end.
--------------------------------------------------------------
Shared Address SFRs
mikroBasic PRO for PIC does not provide auto setting of bit for acessing alternate register. This is new feature added to pic18fxxjxx family and will be supported in future. In several locations in the SFR bank, a single address is used to access two different hardware registers. In these cases, a "legacy" register of the standard PIC18 SFR set (such as OSCCON, T1CON, etc.) shares its address with an alternate register. These alternate registers are associated with enhanced configuration options for peripherals
---------------------------------------
Grüße und noch einen schönen Sonntag-Abend, picass
Ich habe doch in meinem letzten Post Bilder eingefügt wo du genau sehen kannst
was wie eingestellt werden muss. Tipp das Programm doch einfach ab und stell es so
ein wie ich es in den Bilder gemacht habe. Dann sollte es laufen.
Und wenn das läuft dann kannst du uns mal erzählen wie deine Schaltung aussieht.
Ist sie mit Quarz oder ohne welchen Takt willst du haben ?
Ein neues Projekt machst du mit New Projekt. Findest du oben in der Leiste vom Compiler.
Nochwas. Anscheinend willst du 31KHz als Takt haben. Wenn ich das richtig sehe im Datenblatt
müssen noch andere Register eingestellt werden. Habe aber den PIC nicht da und kann es
selber nicht testen. Deshalb versuch zuerst mal mein Programm ans laufen zu bekommen und wenn
das läuft sehen wir weiter. Wenn es nicht läuft dann mal mal Screenshots von dem Programm und den
Einstellungen. Wie ich es gemacht habe.
Und was nicht läuft oder nicht richtig läuft.
warum willst Du nur einen Takt von 31KHz?
hier im Datenblatt 2.6 Internal Oscillator S. 16 ist beschrieben wie Du den Takt einstellst.
Ich würde hier 2.6.2 HFINTOSC den Takt auf 16MHz einstellen. Wenn das zu wenig ist dann kannst Du über PLL den Takt vervierfachen. (40001365F.pdf)
https://ww1.microchip.com/downloads/en/DeviceDoc/40001365F.pdf
Zitat von: Peter in 03.07.2022, 19:37:51 CESTNochwas. Anscheinend willst du 31KHz als Takt haben.
Hallo picass,
der 18F14K22 hat nunmal 1MHz Takt beim INTOSC, zum Testen ist das eine passende Voreinstellung, die keine weiteren Anpassungen erfordert.
Wenn Du jetzt zu Beginn so erpicht darauf bist, den PIC mit 31kHz laufen zu lassen, dann habe ich mal hier ein passendes Programm:
program Blink_31
' Testprog. für 31 kHz
' PIC18F14K22 / PIC18F24K22
' an OSC2 kann die Oszillatorfrequenz/4 gemessen werden,
' bei 31kHz sind das 7,75kHz +-Toleranz
' Declarations section
' Main program
main:
' Voreinstellungen:
OSCCON = 0x02 'Umschalten auf LFINTOSC mit 31 kHz
TRISA = 0
TRISB = 0
TRISC = 0
while TRUE
PORTC = 0
delay_ms(1000)
PORTC = 255
delay_ms(1000)
wend
end.
Der PIC läuft mit dem LFINTOSC, die Taktausgabe habe ich im Projekt auf OSC2 gesetzt (sollte RA.4 beim 18F14K22 sein?) Takteinstellung im Projekt ist 0.031MHz.
Das Messgerät zeigt einen an OSC2 gemessenen Takt mit den üblichen Toleranzen.
Übrigens, wegen Deiner Frage zu Variablen:
In diesem einfachen Beispiel musst Du keine definieren! Das macht der Compiler für Dich, indem er die internen Register R0...Rxx benutzt!
Bitte beachten: Im Projekt ist mein 18F24K22 definiert, Du muss natürlich den 18F14K22 auswählen!
Gruß
PICkel
Blink_31.jpgProjekt_31.jpg
Das Problem ist aber das seine Grundeinstellungen nicht stimmen. Und solange da noch
Fehler drin sind kann nichts laufen. Bitte die Beispiele die ich als Bild
angehängt habe ausprobieren und berichten.
Muss bei diesem PIC nicht noch das OSCTUNE Register gesetzt werden ?
Kann mich da aber auch vertun. Wie gesagt habe den PIC nicht da.
@Peter:
OSCTUNE passt mit den default-Werten.
Die Frage ist, ob picass auch immer das im Projekt definierte File compiliert. Bin selber schon in diese Abseitsfalle gestolpert. ;D
Variable gibt es nur wenn man sie braucht.
Unten mal ein kleines Programm um einen INA219 die Spannung und Strom
auf dem Display anzuzeigen. Da hast du alles was du suchst.
program ina219
DIM text1 , text2, text3 as Word
DIM aus1, aus2 as String [6]
dim LCD_RS as sbit at RB4_bit
LCD_EN as sbit at RB5_bit
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit
dim LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit
main:
ANSELB = 0
I2C1_Init (100000)
delay_ms(100)
LCD_Init ()
LCD_CMD(_LCD_CLEAR)
LCD_CMD(_LCD_CURSOR_OFF)
'LCD_Out (1,1,"Peter")
I2C1_Start ()
I2C1_WR (0x80)
I2C1_WR (0)
I2C1_WR (0x19)
I2C1_WR (0x9F)
I2C1_Stop
delay_ms(20)
I2C1_Start
I2C1_WR (0x80)
I2C1_WR (0x05)
I2C1_WR (0x10)
I2C1_WR (0x7E)
I2C1_Stop
delay_ms(300)
While True
I2C1_Start
I2C1_WR (0x80)
I2C1_WR (0x02) 'Spannung
I2C1_Stop
delay_ms (10)
I2C1_Start
I2C1_WR (0x81)
text1 = I2C1_rd (0x01)
text2 = I2C1_rd (0x01)
I2C1_Stop
text3 =((text1 <<8)+text2)/2
wordtostr (text3,aus1)
LCD_Out(1,1,aus1)
'----------------------------
I2C1_Start
I2C1_WR (0x80)
I2C1_WR (0x01) 'Strom
I2C1_Stop
delay_ms (10)
I2C1_Start
I2C1_WR (0x81)
text1 = I2C1_rd (0x01)
text2 = I2C1_rd (0x01)
I2C1_Stop
text3 =((text1 <<8)+text2)
wordtostr (text3,aus1)
LCD_Out(2,1,aus1)
delay_ms(800)
Wend
end.
Hier hast du eine komplette Anleitung für den Compiler.
Ob es das als Buch gibt weis ich auch nicht.
Manual MikroBasic (https://download.mikroe.com/documents/compilers/mikrobasic/pic/mikrobasic-pic-manual-v101.pdf)
Peter
@Peter, wie kann man denn die Anleitung groß ansehen. Ich benutze den Firefox Browser unter Linux. Ich hatte es zwar unter Drucken den Link herausgefunden. Es muß aber auch anders gehen. Viele Grüße Pic18
Hallo
Du kannst oben rechts wo du auch drucken kannst, das Dokument speichern. Dann kannst
du es normal betrachten. Der verkleinerte Ausschnitt soll ja nur eine Art Vorschau sein,
was in dem Dokument steht. Es wird nun aber der Link des Dokumentes immer Angezeigt. Wenn du auf
diesen gehst, bekommst du nun immer eine ganze Ansicht im neuen Fenster. Ist glaub ich besser als
es immer zuerst zu speichern um es zu betrachten.
Euer ADMIN.
Vielen Dank, ich bin unten auf Drucken gegangen. (bei Antworten)
Hallo
Habe dir picass mal ein Video gemacht wie man mit dem Compiler sein
erstes Programm erstellen kann. Einfach mal ins Video Tutorial reinschauen.