-
-
Erfahrener Benutzer
Roboter Genie
Der C32 sagt mir garnichts, es gibt nen C30, aber der ist eigentlich für die dsPICs und die PIC24er, wenn ich mich nicht täusche, wie kompatibel der ist weiß ich nicht, aber normalerweise PIC18-> C18
Das wäre eine Erklärung, denn wenn du der delay Funktion einen falschen Wert gibst, nimmt die sich vielleicht nur die Mantisse oder den Exponenten, dann kommt natürlich nur nonsens raus. Schau doch mal in die Anleitung zum Compiler, da müsste die Nutzung der Funktion doch beschrieben werden, sonst im Header-File über das du die Delay Geschichte eingebunden hast.
Warum der PIC Zahlen über 254 nicht schaffen sollte, ist mir schleiferhaft, der müsste dann doch einfach ne 2.55e002 draus machen. Zahlen über 255 müssen aus mehreren Bytes zusammengesetzt werden, aber das macht der Compiler für dich, wenn du das als INT deklarierst. Die Division dürfte auch keine Probleme machen, sonst ist der Compiler Müll.
Also wenn du nur PC-Programmierung gewöhnt bist: im Controller sind meist Zahlen etwas kleiner, weil die Ressourcen begrenzt sind, aber selbst INT dürfte keine Probleme mit 22 000 haben.
Der Simulator kann sehr wohl Eingänge simulieren, entweder aus ner Datei gelesen, wo drin steht, wann er was schalten soll, oder indem du Ports asynchron definierst, dann feuern die wenn du den Button drückst.
Für MPLAB: Unter Debugger MPLAB Sim wählen, dann kannst du durch Doppelklicken im Code rote Breakpoints setzen, bis dahin läuft er und stoppt dann erstmal bis du ihn weiterlaufen lässt. Unter Debugger dann auf Stimulus, New Workbook, jetzt bei PIN/SFR den Pin oder das Register auswählen, was du stimulieren möchtest, mit Action kannst du auswählen was passiert, wenn du den Knopf am Anfang der Zeile drückst, dauerhaft setzen, toggle für Umschalten und Pulse für eine begrenzte Zeit low oder high. Für Pulse musst d noch ne Zeit angeben. Abspeichern und den Code laufen lassen, (Run oder F9), dann den Fire-Button drücken und schauen was passiert. Probier mal eine einfache IF-Abfrage zu machen, die regelmäßig prüft, ob die Taste gedrückt ist, und mach in die Abfrage irgend eine Anweisung, auf die du einen Breakpoint setzt. Dann kannst du das wunderbar testen.
Du hast sogar einen LogicAnalyser, unter View, SimulatorLogic Analyser. Da einen Pin angeben (über Channel) und Trigger auf Now oder eine Programm-Counter stelle setzen. Laufen lassen und danach anschauen, was ausgegeben wurde.
PS.
Das kann so auch nicht hinhauen. Wenn du ne Frequenz von 1.23 eingibst, und das dann nach delay schreibst mit delay= 1.23*(1000/10) = 123, dann hast du doch keine Frequenz von 1,23Hz! 123µs Periodendauer entsprechen 8,13kHz!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen