Forum: Mikrocontroller und Digitale Elektronik PIC Projekt (Neuling)


von Siegfried S. (dieleena)


Lesenswert?

Hallo guten Morgen,

möchte ein größeres Projekt mit dem PIC18F452 mit einem 40 MHz Quarz 
erstellen.
Frage 1.
Wie schnell ist der SPI Bus um 1 Byte an die Hardware/Schieberegister zu 
übertragen ? Werde warscheinlich 8 Schieberegister x 8 Bit 
hintereinander schalten.
Frage 2.
Der Chip besitzt 1536 Byte Ram. Habe in einer Zeitschrift gelesen, das 
jeder Befehl im Programmspeicher 2 Bytes( 1 Word ) belegt. Bezieht sich 
dieses auch auf das Ram?
Frage 3.
Den Parallel Slave Port mit seinen steuerleitungen CS,WR,RD nutze ich um 
Informationen aus einem externen Bus (verbunden über eine Schnittstelle 
zum PC) zu übertragen. Im PIC existiert eine Tabelle, die die 
Informationen aufnehme. Soll ich dies auch als Schieberegister Prinzip 
aufbauen oder soll ich dem PIC Adressen-Pin bereitstellen welche z.B. 
bei Adresse 0h00001000 auf die Tabelle an der Adresse 0h00001000 zugriff 
bekommt.
Frage 3.
kann ich in einem PIC ein Array anlegen?

bis bald Siegfried

von tastendrücker (Gast)


Lesenswert?

Hi,

> möchte ein größeres Projekt mit dem PIC18F452 mit einem 40 MHz Quarz
> erstellen.

Bei den Fragen und "Neuling" im Betreff würde ich mit einem kleinem 
Projekt anfangen.

zu 1)  Kannst Du ausrechnen

zu 2)  Datasheet S. 1 (schon mal reingesehen?)

  On-Chip Program Memory: 32K Flash / 16384 Single Word Instructions
  On-Chip RAM           : 1536 bytes
  Data EEPROM           : 256 bytes

zu 3)  Habe die Frage nicht ganz verstanden. Wieso fragst Du uns, was Du 
machen sollst?

zu 4)  Sicherlich kannst Du im PIC ein Array anlegen. Kommt aber auf die 
Sprache an, in der Du programmieren willst.

TD

von Dieter Werner (Gast)


Lesenswert?

Nur so als Anmerkung, es gibt keinen für den PIC brauchbaren 40MHz Quarz 
(das sind alles Obertonquarze, und die schwingen mit einem PIC auf der 
Grundwelle).

Entweder einen 10MHz Quarz nehmen und über die config bits die 4x PLL 
einschalten oder ein 40MHz Quarzoszillator nehmen (braucht aber mehr 
Strom).

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
@Dieter Werner
ich bin auch der Auffassung, das man mit der Frequenz nicht übertreiben 
soll. 10MHz ist doch in Ordnung.
@tastendrücker
habe es mal "größeres Projekt" genannt. Bin aber gezwungen, mit einem 
PIC auf einem Board DE-Karte 16 Gleichstrommotoren ( PWM mit 
FET-Endstufe ) in beide Richtungen anzusteuern.
das Array kommt in Verbindung mit dem Parallel Slave Port zu tragen.
Hoffe das ich dieses jetzt richtig rüber bringe.
z.B. Das Array kann 128 Bytes speichern.
Version a:
Wenn ich über Parallel Slave Port Daten empfange, kann ich dieses wie 
ein Schieberegister mit 128 Datenpakete ablaufen lassen. Ich sehe in 
dieser Version einen Nachteil, da ich immer 128 Bytes zu dem PIC 
übertragen muß um nur 1 Byte zu ändern.
Version b:
oder aus dem externen Bus 7 Adressenleitungen mit dem PIC verbinde und 
die Daten mit der jeweiligen Adresse je Byte in das Array schreibe.
Sehe in Version b den Vorteil, das ich zuerst dem PIC an einem Port die 
gewünschte Array-Adresse mitteile, und dann 1 Byte für die 
Datenübertragung habe.

Lasse mich aber gerne belehren, denn NEULING.

bis bald Siegfried

von Meister E. (edson)


Lesenswert?

>Entweder einen 10MHz Quarz nehmen und über die config bits die 4x PLL
>einschalten oder ein 40MHz Quarzoszillator nehmen (braucht aber mehr
>Strom).

Laut den mir bekannten Datenblättern mag kein PIC mehr als 25MHz direkt 
als Taktquelle. Die 10MHz mit PLLx4 sind die geeignete Methode um auf 
40MHz zu kommen, ansonsten betreibst Du die Device ausserhalb der 
Spezifikation.

>Habe in einer Zeitschrift gelesen, das
>jeder Befehl im Programmspeicher 2 Bytes( 1 Word ) belegt. Bezieht sich
>dieses auch auf das Ram?

Nein, Du schreibst nämlich keine Befehle ins RAM. Nur einzelne Bytes.


Gruss,
Edson

von Siegfried S. (dieleena)


Lesenswert?

Hallo,

ups... habe bemerkt, das ich im falschem Beitrag war.

Habe folgendes vor. Mehrere PIC 18F452 über ein 8adrige Leitung parallel
schalten. CLK,Data-In, Data-Out, Syn, rest GND. Die Übertragung ist
seriellel.
Habe mir folgendes vorgestellt: Übertragung des ersten Byts(Adresse),
vergleiche Byte mit einem Byte des EEPROM, bei übereinstimmung ubernimmt
der adressierte PIC das zweite Byte(Daten), usw.
Der SPI des PIC ist bereits durch Hardware-Erweiterung belegt.
Welche Möglichkeiten habe ich ?
bis bald Siegfried

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

16 Motore vor/rück steuern...
16 H-Brücken

Da würde ich doch notfalls 16 Stück 18F2431 nehmen.

Aber das ist alles so sehr heavy, da würde ich nach H-Brücken mit 
I2C-Schnittstelle o.ä. suchen.

16 Motore mit einem uC und ellenlangen Schieberegistern, die auch noch 
PWM machen... viel Spaß !

von Siegfried S. (dieleena)


Lesenswert?

hallo,
bist du der Auffassung, das bei dem Projekt mit dem PIC18F452 die 
Rechenleistung nicht ausreicht?
Habe das Datenblatt vom PIC18F2431 angesehen. Es sind reichlich PWM 
vorhanden. Was ich aber bei diesem vermisse, ist "Parallel Slave Port"
Ist für mich einfacher einzubinden. Die I2C-Schnittstelle muß ich mal 
ansehen.

bis bald Siegfried

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.