MikroBasic Pro für PIC

Begonnen von picass, 02.07.2022, 11:01:51 CEST

⏪ vorheriges - nächstes ⏩

PICkel

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

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

picass

Zitat von: PICkel am 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

Peter

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.

Peter

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.

pic18

#20
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

PICkel

Zitat von: Peter am 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 

Peter

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.

PICkel

avatar_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

Peter

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.

Peter

#25
Hier hast du eine komplette Anleitung für den Compiler.
Ob es das als Buch gibt weis ich auch nicht.


Manual MikroBasic

Peter

pic18

avatar_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

ADMIN

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.

pic18

Vielen Dank, ich bin unten auf Drucken gegangen. (bei Antworten)

Peter

Hallo
Habe dir picass mal ein Video gemacht wie man mit dem Compiler sein
erstes Programm erstellen kann. Einfach mal ins Video Tutorial reinschauen.


Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:

2 Beeren und 2 Bananen. Welche Farbe hat die Banane ?:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau