Ebenfalls einen netten Gruß an alle hier.
Über mich:
Ich bin 63 Jahr alt und seit frühester Jugend eigentlich mit Elektronik bzw. was man damals so nannte (Germaniumkristall mit Drehko und Spüle, daran ein hochohmiger Kopfhörer war das erste Eigenbauradio für Mittelwelle) vertraut.
Später Berufsausbildung als Fernmeldemonteur, dann Fernmeldemechanikermeister und noch später Ing. für Fernmeldetechnik.
Erste Gehversuche 1980 mit dem Ost-Typ des Z 80 (U880), der anfangs noch komlett in Maschine, später auch in Assembler und Basic programmiert werden musste. Nach einem späteren kurzen Ausflug zu Pascal und Turbo-Pascal habe ich mich dann lange kaum noch mit Mikrorechnern befasst, bis ich 1995 begann, für meine Gas-Heizung eine Steuerung zu bauen. Ich hatte mich damals für die C-Control 1.1 entschieden, die auch heute noch läuft.
Allerdings werden halt die Anforderungen immer höher, z.B. mehr und andere Temperatursensoren, Überwachung ob Fenster und Türen verschlossen sind, Fernsteuerung übers Web usw.
Da ich nun bald in den Ruhestand gehe, habe ich mir vorgenommen dies nach und nach alles zu realsieren, aber die CC1 ist damit natürlich überfordert.
Deshalb hatte ich mir eine CC-Pro (ATMega128) bei Conrad gekauft. Leider ist der mitgelieferte Interpreter m.E. nicht ausgereift, sehr langsam und somit für meine Zwecke nicht geeignet. Deshalb und weil die Sprache sehr MS-VB, unter der ich auch viele PC-Programme geschrieben habe, ähnelt, habe ich mich Bascom zugewandt. Bis auf ein Problem liefen die Tests bisher auch sehr zufriedenstellend, zumal ich, entschuldigt die Reklame, im Forum mikrokontroller.net ein Proggi gefunden habe, mit dem man gefahrlos mit Bascom erstellte bin-Dateien in die CC-Pro bringen kann.
Allerdings benötige ich für die von mir verwendeten Thermometerbausteine eine sehr schnelle Interruptroutine, die mir einfach nicht gelingen will.
An der CC1 hatte ich das mit Hardware (Schieberegister zum Einlesen der Impulse, einem MMV, der das wieder überschreiben verhindert und der CC1 das Ende des Einlesens signalisiert, gelöst.
Die Elektronik ist aber nun in die Jahre gekommen und ich wollte es per Interrupt-Routine auf der CC-Pro lösen, was leider noch nicht so richtig klappt. Der Thermometerbaustein sendet jede Sekunde auf einer Taktleitung 13 (sehr schnell und sehr kurz, kann es leider nicht messen) Impulse und legt auf einer Datenleitung zeitgleich das Datum des jeweiligen Bits (13-Bit-Codierung) an. Mit der nachfolgenden, in Bascom programmierten, ISR schaffe ich aber nicht, alle Ints abzufangen.
Da ich aber mit ASM vollkommen aus der Übung bin und es mir altershalber auch schwer fällt, das alles nochmal neu zu lernen, hier die Frage, ob mir jemand helfen kann. Die Konfigs und alles andere in Bascom habe ich im folgenden Ausschnitt mal weggelassen, weil das funktioniert.
Die ISR:
Label2: 'wird bei Int durch Taktleitung angesprungen
Thempfangswert = Thempfangswert + Portb.0
'ThThempfangswert ist Integer
'Wert Portb.0 (0 oder 1) wird immer als niederwertigstes Bit aufaddiert
Shift Thempfangswert , Left ' danach linksschieben um den Platz wieder freizumachen
Incr Thinterruptzaehler ' Interupts mitzählen
If Thinterruptzaehler >= 13 Then ' um nach 13 Pulsen den Int abzuschalten
Disable Int0
End If
Return 'zurück zur Main mit der Auswertung und danach alles auf 0 und Int wieder einschalten.
Kann mir vielleicht jemand hier das in eine schnelle ASM-ISR umwandeln?
Viele Grüße Erzgebirgler47
Über mich:
Ich bin 63 Jahr alt und seit frühester Jugend eigentlich mit Elektronik bzw. was man damals so nannte (Germaniumkristall mit Drehko und Spüle, daran ein hochohmiger Kopfhörer war das erste Eigenbauradio für Mittelwelle) vertraut.
Später Berufsausbildung als Fernmeldemonteur, dann Fernmeldemechanikermeister und noch später Ing. für Fernmeldetechnik.
Erste Gehversuche 1980 mit dem Ost-Typ des Z 80 (U880), der anfangs noch komlett in Maschine, später auch in Assembler und Basic programmiert werden musste. Nach einem späteren kurzen Ausflug zu Pascal und Turbo-Pascal habe ich mich dann lange kaum noch mit Mikrorechnern befasst, bis ich 1995 begann, für meine Gas-Heizung eine Steuerung zu bauen. Ich hatte mich damals für die C-Control 1.1 entschieden, die auch heute noch läuft.
Allerdings werden halt die Anforderungen immer höher, z.B. mehr und andere Temperatursensoren, Überwachung ob Fenster und Türen verschlossen sind, Fernsteuerung übers Web usw.
Da ich nun bald in den Ruhestand gehe, habe ich mir vorgenommen dies nach und nach alles zu realsieren, aber die CC1 ist damit natürlich überfordert.
Deshalb hatte ich mir eine CC-Pro (ATMega128) bei Conrad gekauft. Leider ist der mitgelieferte Interpreter m.E. nicht ausgereift, sehr langsam und somit für meine Zwecke nicht geeignet. Deshalb und weil die Sprache sehr MS-VB, unter der ich auch viele PC-Programme geschrieben habe, ähnelt, habe ich mich Bascom zugewandt. Bis auf ein Problem liefen die Tests bisher auch sehr zufriedenstellend, zumal ich, entschuldigt die Reklame, im Forum mikrokontroller.net ein Proggi gefunden habe, mit dem man gefahrlos mit Bascom erstellte bin-Dateien in die CC-Pro bringen kann.
Allerdings benötige ich für die von mir verwendeten Thermometerbausteine eine sehr schnelle Interruptroutine, die mir einfach nicht gelingen will.
An der CC1 hatte ich das mit Hardware (Schieberegister zum Einlesen der Impulse, einem MMV, der das wieder überschreiben verhindert und der CC1 das Ende des Einlesens signalisiert, gelöst.
Die Elektronik ist aber nun in die Jahre gekommen und ich wollte es per Interrupt-Routine auf der CC-Pro lösen, was leider noch nicht so richtig klappt. Der Thermometerbaustein sendet jede Sekunde auf einer Taktleitung 13 (sehr schnell und sehr kurz, kann es leider nicht messen) Impulse und legt auf einer Datenleitung zeitgleich das Datum des jeweiligen Bits (13-Bit-Codierung) an. Mit der nachfolgenden, in Bascom programmierten, ISR schaffe ich aber nicht, alle Ints abzufangen.
Da ich aber mit ASM vollkommen aus der Übung bin und es mir altershalber auch schwer fällt, das alles nochmal neu zu lernen, hier die Frage, ob mir jemand helfen kann. Die Konfigs und alles andere in Bascom habe ich im folgenden Ausschnitt mal weggelassen, weil das funktioniert.
Die ISR:
Label2: 'wird bei Int durch Taktleitung angesprungen
Thempfangswert = Thempfangswert + Portb.0
'ThThempfangswert ist Integer
'Wert Portb.0 (0 oder 1) wird immer als niederwertigstes Bit aufaddiert
Shift Thempfangswert , Left ' danach linksschieben um den Platz wieder freizumachen
Incr Thinterruptzaehler ' Interupts mitzählen
If Thinterruptzaehler >= 13 Then ' um nach 13 Pulsen den Int abzuschalten
Disable Int0
End If
Return 'zurück zur Main mit der Auswertung und danach alles auf 0 und Int wieder einschalten.
Kann mir vielleicht jemand hier das in eine schnelle ASM-ISR umwandeln?
Viele Grüße Erzgebirgler47