Bascom Softwareentwicklung - Rangehensweise

muellerjm

Neues Mitglied
28. Juli 2011
12
0
0
61
Sprachen
hallo,

ich habe mit einem größeren Projekt begonnen. Mein Fehler war, dass ich mal eben so losgelegt habe. Jetzt nach 400 Zeilen Programmcode muss ich gestehen, dass ich nicht mehr richtig durchblicke. Zumal es doch immer wieder Änderungen gab. Ich habe zwar versucht zu kommentieren. Aber irgendwie habe ich dennoch den Faden verloren.

Wie gehen den Profis an ein größeres Projekt ran? Ich denke mal ich bring mein Konzept erst mal auf 'Papier' und setzte dann den Code um. Evtl. gibts ja klasse Software die unterstützt oder Links die die Rangehensweise veranschaulichen.

Danke für jeden Denkanstoß

Joachim
 
Hi
Du bist mit dieser Erfahrung nicht allein. Hier hilft vielleicht der folgende Vorschlag von mir
Zerlege dein Programm in kleine Elemente
Zuerst die Initialisierungen jeweils eine Sub für Timer, UART etc.
danach Initialisierungsroutinen und setzen von Default-Werten
weiter eine Sub für's Einlesen der Peripherie
eine Sub für Schnittstellen
eine für Ausgabe an die Peripherie
Löse dich von dem Gedanken, alles in einer Schleife abhandeln zu müssen. Da ich in Assembler programmiere, ist es noch wichtiger, große Programmblöcke zu meiden. Ein Richtwert ist da, das die Routinen auf eine Din A 4 Seite passen. So kann ich in einer Dokumentenmappe auch mal auf Paperware zugreifen und nachlesen. Allerdings gibt's auch da Ausnahmen.
So sieht mein Programm im Prinzip wie folgt aus
Code:
Loop_Main:
  RCALL Read_IO
  RCALL Read_Com_Buf
  RCALL Set_IO_Event
  RCALL Chk_IO_Event
  RCALL Set_IO_Out
  RCALL Send_Com
RJMP Loop_Main

Nun, was auch immer hinter den aufgerufenen Blöcken steht ist erst einmal nicht wichtig. Um ein solches Gerüst ans laufen zu bekommen, werden einfach die Rümpfe der Sub-Routinen geschrieben
]
Code:
Read_IO:

RET
Read_Com_Buf:

RET
usw.

Nach und nach fülle ich nun die Subroutinen mit Inhalt, kann Ergebnisse testen und fertige Subroutinen ablegen und einen Haken dran machen. Muss mal etwas geändert werden... entweder eine neue Sub oder aber eine vorhandene wird erweitert. Bemüh dich dabei, immer nur ein Problem oder Aufgabe in einer Sub zu lösen. Am deutlichsten ist das Einlesen der IO. Nur die Bits aus der Peripherie holen und in Bytes ablegen. Danach ist bis zum nächsten Zyklusdurchlauf nicht wichtig, ob da eine Änderung stattgefunden hat. Und wenn doch, dann musst du sowieso auf Interrupt gehen und die Info anderweitig ins Programm bringen. Am Beispiel der Read_Com:
Read_Com ist nicht die Empfangsroutine, das macht eine Interrupt-Routine eine sogenannte ISR. Diese hat einen Puffer, auf den zwei Zeiger zeigen. Einen Lese- und einen Schreibzeiger. Kommt ein Zeichen, wird es im Puffer auf die Stelle geschrieben, wohin der Schreibzeiger zeigt und der Schreibzeiger erhöht oder auf 0 gesetzt, wenn er die Puffergrenze erreicht. Fertig. um mehr kümmert sich die ISR nicht. Es gibt überhaupt keinen Eingriff ins Hauptprogramm. Der Trick ist nun, und das macht das Hauptprogramm in Read_Com, die beiden Zeiger zu vergleichen und bei einem ferstgestellten Unterschied müssen im Puffer unbearbeitete Informationen aus einem seriellen Empfang vorliegen. Nun kann in aller Ruhe dieses Byte bearbeitet und der Empfangszeiger nachgeführt werden.
So, das waren mal ein paar Beispiele. Auch ich nehme mir ein Blatt Papier oder einfach Powerpoint und male mir da so ein paar Kästen drauf, die dann die Subroutinen symbolisieren. So bekomme ich Überblick, bzw. behalte diesen. Vielleicht hift's dir.
Gruß oldmax
 
hallo Oldmax,

das ist doch schon mal was. Ich habe wohl doch zu viel mit gosub rumgeeiert. ich mach jetzt mal ein Konzept mit Visio. Dann werde ich für die einzelnen Module Subroutinen bauen. Danke dafür.

Joachim
 
Hi
Gosub ( Go Subroutine) ist wohl schon richtig, aber die Subroutinen sollten wie bereits gesagt, nicht allzuviel Aufgaben bekommen. Erledigte Subroutinen listen und abhaken. Nie nich wieder anfassen....:D
Ne.. klar, wenn nötig schon, aber wie gesagt, mach die Dinger nicht zu groß
Gruß oldmax
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)