PIC Programm in Hex wandeln

Hi,
ich bin ein kompletter neuling im Programmieren von Microcontrollern und hab nun vollgendes Problem.
Wenn ich vollgendes Chipprogramm mit MPASM von Microchip in eine Hexdatei wandeln will zeigt er 2 Fehler an und ich wüsste nicht wie ich diese beheben könnte.
In der Fehlerdatei zum einen „Illegal opcode“ und zum anderen „Symbol not previously defined (turnon)“.
Das ganze soll auf den Chip PIC 12C508a gebrannt werden.
Hoffe mir kann jemand helfen.

Hier das Programm:

ITPS Software
;
; Ituner power sequencer
;
; pd 030611 initial code
LIST p=12C508A ;Target processor
#include „P12C508A.INC“ ;Header file for target processor
; GP0 = VSW12 input 1 = ignition turned on
; GP1 = ON output 1 = turn power on
; GP2 = MBON# o.d. 0 = power button pressed
; GP3 = n.c. input
; GP4 = MBON2# o.d. 0 = power button pressed (parallel out,
; makes connector flip-tolerant)
; GP5 = n.c. output 0 = terminate unused pin
; Equates
PWR_OFF equ 0x00 ;power off state
PWR_ON equ 0x02 ;power on state
SW_ON equ 0x09 ;direction for switch on
SW_OFF equ 0x1d ;direction for switch off
ONDELAY equ .15 ;power on delay 3 seconds
ONDELAY2 equ .5 ;wait 1 second until push button
BUTTON equ .2 ;push button for 400 ms
OFFDELAY equ .25 ;shut down 5 s after ignition off
HARDOFF equ .25;&&&225 ;hard off after 45 seconds
; Register variables
cblock 0x10
cntr ;state counter
cntr2 ;state counter
waitl ;delay counter low
waitm ;delay counter mid
waith ;delay counter high
endc
; ORG 0x1FF ; processor reset vector
; Internal RC calibration value is placed at location 0x1FF by Microchip
; as a movlw k, where the k is a literal value.
; Reset entry
org 0
reset movwf OSCCAL ;set oscillator calibration
movlw PWR_OFF ;set initial state
movwf GPIO
movlw SW_OFF ;set pin directions
tris GPIO
movlw b’11001101’ ;set option register (pg. 17)
;disable wake-up on GP pin change
;disable weak pull-ups
;timer0 internal clock, positive edge
;prescaler -> WDT, 1:32 -> ~0.5s
option
clrwdt ;clear watchdog
; initial state - wait until ignition is on for ONDELAY
initial movlw ONDELAY ;initial power on
movwf cntr
initwait call delay200 ;wait
btfss GPIO,0 ;ignition on ?
goto initial ;no: clear counter
decfsz cntr,f ;initial time-out
goto initwait
; turn power on, wait ONDELAY2turnon movlw PWR_ON
movwf GPIO
movlw ONDELAY2 ;wait for ONDELAY2
movwf cntr
turnon1 call delay200 ;wait
decfsz cntr,f
goto turnon1
btfss GPIO,0 ;ignition on ?
goto reset ;no: turn off again
; push the system board power button
movlw SW_ON ;push the button
tris GPIO
movlw BUTTON ;wait for BUTTON
movwf cntr
button1 call delay200 ;wait
decfsz cntr,f
goto button1
movlw SW_OFF ;release the button
tris GPIO
; power on state - shut down if ignition off for OFFDELAY
onstate movlw OFFDELAY
movwf cntr
onstate1 call delay200
btfsc GPIO,0 ;ignition on ?
goto onstate ;yes: reset timer
decfsz cntr,f
goto onstate1
; shut down - push the system board power button
movlw SW_ON ;push the button
tris GPIO
movlw BUTTON ;wait for BUTTON
movwf cntr
button2 call delay200 ;wait
decfsz cntr,f
goto button2
movlw SW_OFF ;release the button
tris GPIO
; turn-off state - turn off power after HARDOFF
; go back to restart after ONDELAY
movlw HARDOFF
movwf cntr
movlw ONDELAY
movwf cntr2
shut1 call delay200
btfss GPIO,0 ;ignition on ?
goto shut2 ;:no
decfsz cntr2,f
goto turnon ;go turn-on if ignition on for ONDELAY
goto shut3
shut2 movlw ONDELAY ;ignition off - restart on timer
movwf cntr2
shut3 decfsz cntr,f
goto shut1 ;keep waiting
goto reset ;do hard power off
; 200 ms delay routine
delay200 clrwdt ;tickle the watchdog
movlw .2 ;note count is +1 (decfsz !)
movwf waith
movlw .0
movwf waitm
clrf waitl
del1 decfsz waitl,f ;delay loop - 3 us per iteration
goto del1
decfsz waitm,f
goto del1
decfsz waith,f
goto del1
retlw 0; define configuration bits
__config _MCLRE_OFF & _CP_OFF & _WDT_ON & _IntRC_OSC
;_MCLRE_ON EQU H’0FFF’
;_MCLRE_OFF EQU H’0FEF’
;_CP_ON EQU H’0FF7’
;_CP_OFF EQU H’0FFF’
;_WDT_ON EQU H’0FFF’
;_WDT_OFF EQU H’0FFB’
;_LP_OSC EQU H’0FFC’
;_XT_OSC EQU H’0FFD’
;_IntRC_OSC EQU H’0FFE’
;_ExtRC_OSC EQU H’0FFF’
end

Hallo,

ich bin ein kompletter neuling im Programmieren von
Microcontrollern und hab nun vollgendes Problem.

Du solltest zuerst mal ein paar grundlegende Kenntnisse über Assembler und die möglichen Fehler (nicht mit Kommentaren sparen, Fehlermeldungen selbst auswerten, Fehlermeldungen vollstänig wiedergeben) erwerben, das hilft Dir und auch denen, die deine Fehler suchen sollen… aber wir habe alle mal bei Null angefangen.

Wenn ich vollgendes Chipprogramm mit MPASM von Microchip in
eine Hexdatei wandeln will zeigt er 2 Fehler an und ich wüsste
nicht wie ich diese beheben könnte.

Zumindenst bei dem einen kann ich Dir helfen…

In der Fehlerdatei zum einen „Illegal opcode“ und zum anderen

Da wäre es hilfreich, die Fehlerdatei zu haben, da dort normalerweise steht, in welcher Zeile der Fehler aufgetreten ist. So müßte man jede Zeile prüfen, ob sie so richtig sein kann, das ist auch mir trotz Erfahrung mit PIC-Microcontrollern und obwohl der Befehlssatz extrem klein ist zu mühsam.

„Symbol not previously defined (turnon)“.

Eigentlich ganz einfach, und auch schon aus der Meldung ersichtlich:
Das Symbol „turnon“ (hier eine Sprungmarke) ist nirgends definiert. Nach langem suchen habe ich den Fehler gefunden: Es gibt ein „goto turnon“ aber kein „turnon“ sondern nur ein „turnon1“. Ob das ein Tippfehler oder ein Denkfehler ist, mußt Du selbst wissen.

Das ganze soll auf den Chip PIC 12C508a gebrannt werden.

So lange Opcodes und Konfigurationen für den 12C508 verwendet werden, sollte es funktionieren…

Hoffe mir kann jemand helfen.

Je mehr Informationen, um so eher…

Hier das Programm:

Ich werde definitiv nicht versuchen, es zu verstehen, aber ein wenig mehr kommentieren hat insbesondere bei Assembler noch nie geschadet, man erkennet dann (nicht nur als Außenstehender) eher, was der Autor des Programmes eigentlich programmieren wollte und sieht eher, warum es so nicht funktionieren kann.

Gruß,
Bernd

Vielen Dank für die schnelle Antwort.

Du hast in jedemfall recht mit dem komentieren; das Problem liegt nur darin das ich das Programm noch nicht einmal geschrieben habe.

Bin gerade erst in der Ausbildung zum Kommunikationselektroniker im 2. Jahr und habe bisher nur ein wenig Delphi programmieren gelernt.

Ich lege hier mal die Fehlerdatei bei und werd auch mal schaun das ich mich hier einlerne.

Fehlerbericht:

Error[122] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 1 : Illegal opcode (Software)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 6 : Found directive in column 1. (LIST)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 26 : Found directive in column 1. (cblock)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 32 : Found directive in column 1. (ENDC)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 37 : Found directive in column 1. (org)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 39 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 40 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 41 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 42 : Found opcode in column 1. (tris)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 43 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 48 : Found opcode in column 1. (option)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 49 : Found opcode in column 1. (clrwdt)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 52 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 54 : Found opcode in column 1. (btfss)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 55 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 56 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 57 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 59 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 60 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 61 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 63 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 64 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 65 : Found opcode in column 1. (btfss)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 66 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 68 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 69 : Found opcode in column 1. (tris)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 70 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 71 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 73 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 74 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 75 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 76 : Found opcode in column 1. (tris)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 79 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 81 : Found opcode in column 1. (btfsc)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 82 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 83 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 84 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 86 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 87 : Found opcode in column 1. (tris)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 88 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 89 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 91 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 92 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 93 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 94 : Found opcode in column 1. (tris)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 97 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 98 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 99 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 100 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 102 : Found opcode in column 1. (btfss)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 103 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 104 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 105 : Found opcode in column 1. (goto)
Error[113] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 105 : Symbol not previously defined (turnon)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 106 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 108 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 110 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 111 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 114 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 115 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 116 : Found opcode in column 1. (movlw)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 117 : Found opcode in column 1. (movwf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 118 : Found opcode in column 1. (clrf)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 120 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 121 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 122 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 123 : Found opcode in column 1. (decfsz)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 124 : Found opcode in column 1. (goto)
Warning[203] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 125 : Found opcode in column 1. (retlw)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 126 : Found directive in column 1. (__config)
Warning[205] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM 137 : Found directive in column 1. (end)

Hallo,

ich habe mir den Code etwas angeschaut (programmiere selbst seit 1 1/2 Jahren PIC-Controller) und kann Bernds Aussage nur bestätigen: der Code ist (gelinde ausgedrückt) sehr unübersichtlich.
Ich an Deiner Stelle würde als Anfänger nicht ausgerechnet mit so einem Programm beginnen. Wenn Du willst, schicke ich Dir per Mail ein sehr hilfreiches Tutorial für Einsteiger (4MB). Es wurde von Lehrern geschrieben und fängt mit sehr einfachen Beispielen an, bis zu komplexeren Timersteuerungen. Außerdem wird weiter unten im Text jeder Assembler-Befehl genauestens erklärt.

Gruß, Alexander

P.S. außerdem frage ich mich, wieso die Fehlerliste soviele Warnungen enthält. Irgendwas scheint da komplizierter gemacht worden zu sein als nötig.

Hallo Fragewurm,

Ich lege hier mal die Fehlerdatei bei und werd auch mal schaun
das ich mich hier einlerne.

Fehlerbericht:

Error[122] C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS
SOFTWARE.ASM 1 : Illegal opcode (Software)

Error[122] = Fehler Code; 122 steht irgendwo wohl noch was zu im Handbuch

C:\DOKUMENTE UND EINSTELLUNGEN\SIGGI\DESKTOP\ITPS SOFTWARE.ASM = Die übersetzte Datei
1 = Zeilennummer
Illegal opcode (Software) Fehlermeldung.

Wenn deine Zeil 1 folgende ist:
ITPS Software
solltest dem Assembler erzählen, dass diies ein Kommentar ist !! (also mach am Zeilenanfang noch ein „;“ rein)

MfG Peter(TOO)

Danke nochmal,

Wär nicht schlecht wenn du mir dieses Tutorial schicken könntest.
Werd dann versuchen mich reinzulernen.
[email protected]

MFG Siggi

Da stehts doch
Hallo,
Peter hat ja schon gut geantwortet.
Ich programmiere seit >10 Jahren PICs und muss auch sagen: Einfach anfangen, viel spielen und das Microsoft-Forum befragen.

SOFTWARE.ASM 1 : Illegal opcode (Software)

Das dürfte inzwischen klar sein.

SOFTWARE.ASM 6 : Found directive in column 1. (LIST)
SOFTWARE.ASM 39 : Found opcode in column 1. (movlw)

Oft sind solche Meldungen abhängig vom Editor, den du benutzt und seinen Standardeinstellungen.

eine „directive“=Assembleranweisung darf nicht an erster Stelle in der Zeile stehen, ebenso wenig ein Befehl (opcode).
Die erste Stelle ist fü LABEL vorgesehen!
Also einfach einen Tabulator einfügen.
Oder einen Abstand.

Gruss

Michael

Hallo,

Ich programmiere seit >10 Jahren PICs und muss auch sagen:
Einfach anfangen, viel spielen und das Microsoft-Forum
befragen.

ich würde ja eher das Microchip-Forum befragen… :wink:

Gruß,
Bernd

Hi,
danke nochmal an alle.

Habs nun endlich geschafft die bekannten Fehler durch die Fehlerdatei zu beseitigen, konnte dies leider aufgrund des nicht löschbaren PICs nicht testen.
Ich hoff mal das es dann geht.

Danke,
MFG Siggi