PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Init in BASCOM ?



PICture
05.12.2011, 17:22
Hallo!

Ich möchte meinen Roboter mit BASCOM programmieren versuchen. Bisher hatte ich immer in ASM vor dem eigentlichen Programm den µC initialisiert, um gewünschte definierte Ausgangszustände nach dem Einschalten der Versorgungsspannung z.B. für Motoren zu haben, bevor das Program fängt seinen Lauf an (Initialisierung -> Programm). Wie ist es in BASCOM ?

Leider konnte ich bisher sowas für BASCOM weder durch unsere Suche noch im Netz per Google finden. Deshalb möchte ich Euch um "Starthilfe" bitten.

Ich bedanke mich herzlich für kurze und für mich, als BASCOM Anfänger, verständliche Hilfe im voraus. ;)

Searcher
05.12.2011, 17:40
Hallo PICture,

Zum Glück habe ich nicht mit ASM begonnen und mich deshalb bei BASCOM nicht um Initialisierung gekümmert.
Ich bin immer davon ausgegangen, das die Zustände innerhalb des AVR nach dem Einschalten und vor Programmausführung die im Datenblatt genannten Werte haben. Hat bisher immer gestimmt.

Wenn die nicht passen, hab ich die entsprechenden Register mit normalen BASCOM Anweisungen zu Beginn des Programms geändert. Sowas ließe sich mit $INCLUDE auch in einer eigenen Quelldatei auslagern.

Gruß
Searcher

PICture
05.12.2011, 17:54
Hallo Searcher! :)

Danke sehr für deine Anfangsinfos, da muss ich sowieso entsprechende Dattenblätter (DB) "studieren". Ich vermute, dass die Anfangszustände der Ausgangspins beim Eischalten der Versorgungsspannung, wie üblich, als "0 = low" initialisiert werden und ich bei schon vorhandener Hardware oft eine "1 = high" brauche. So wie ich das bisher verstehe, könnte ich auch, wie bei ASM, als SUB am Ende des Programms nutzen, die nur einmal beim Start des Programms mit CALL aufgerufen wird, richtig ?

Searcher
05.12.2011, 18:04
...dass die Anfangszustände der Ausgangspins beim Eischalten der Versorgungsspannung, wie üblich, als "0 = low" initialisiert werden..

Ja, bis jetzt hab ich da keine Ausnahmen entdecken können. Bei zB Timerregistern gibt es da sinnvolle Ausnahmen.


..als SUB am Ende des Programms nutzen, die nur einmal beim Start des Programms mit CALL aufgerufen wird, richtig ?

Geht, wenn man das Programm so strukturieren möchte.

Gruß
Searcher

PICture
05.12.2011, 18:10
Danke dir sehr, jetzt ist für mich alles klar, weil ich hoffentlich entsprechende Register auch mit BASCOM, wie gewünscht beschreiben könnte. ;)

for_ro
05.12.2011, 19:20
Hallo PICture,
schau dir vielleicht auch mal in der Hilfe die Compiler Direktiven $NoRAMClear und $InitMicro an.
Dort steht einiges erklärt, was am Anfang eines Bascom passiert oder eben verhindert werden kann.

PICture
05.12.2011, 19:27
Hallo for_ro!

Besten Dank für deine Hilfreiche Informationen, die ich mir das gleich anschaue. :D

PicNick
06.12.2011, 08:22
Picture, wenn du eine "1" an irgendwelchen Pins brauchst, solltest (musst) du das mit Pullup's sicherstellen.
Dann ist in dem Moment, wo saft da ist, auch sofort der Einser da. Bis dein Programm selbst zum Einser setzen kommt, vergeht doch ein bisschen.

PICture
06.12.2011, 15:52
Hallo!

Super, schönsten Dank. :)

Mit entsprechenden Widerständen dürfte hoffentlich beim Eischalten der Versorgungsspannung keine Hardware "leuchten" bzw. "riechen" und ich könnte vor der Initialisierung alle Ausgangszustände mit pull- ups bzw. downs definieren, weil BASCOM sicher viel langsamer als ASM ist ;)