ATmega32-Board für Steueraufgaben und Experimente

dino03

Aktives Mitglied
27. Okt. 2008
6.760
20
38
Sprachen
  1. BascomAVR
  2. Assembler
Hallo zusammen !

Jetzt will ich doch auch mal was zum Board beitragen :)

Ich bastel schon eine ganze Weile an einem Board zum rumexperimentieren
und Ausprobieren von Hardware und für die Anwendung als spätere
Hauszentrale. Als Prozzi wird wie schon erwähnt der ATmega32 mit 16MHz
verwendet. Die Programmierung ist vollständig in Assembler. Ich biege
eben gerne an Bits rum :D und möchte auch gerne verstehen was da im
Hintergrund so alles abläuft. Darum Assembler.

Als Display habe ich eins mit dem Controller M50530 von Mitsubishi verwendet.
Das hat 8 Zeilen mit 24 Zeichen. Konnte man mal günstig bei Pollin bekommen
und läuft auch super an der LPT mit LCD4Linux.

Unter dem Display sind 6 Tasten als Softkeys untergebracht. Zusätzlich pro
Taste noch ne Duo-LED mit 2 Pins. Außerdem steht noch ein Encoder und
ein IR-Empfänger als Eingabe bereit. Für PC-Kommunikation die übliche RS232,
noch ein I2C- und eine 1-Wire-Bus. Als Alarmgeber noch nen Piezo-Wandler.
Ach ja, 2 IR-LEDs sind auch noch da.

Aktueller Programmierstatus:
- RS232 mit USART läuft
- LCD mit M50530 läuft
- Encoder läuft
- Tasten laufen auch (Entprellung und Flankenerkennung fehlt noch)
- LEDs sind auch ok
- Piezo-Wandler gibt nen Ton (Dauer/Höhe muß noch einstellbar werden)
- PCF8583 RTC am I2C-Bus und I2C allgemein machen noch Probleme
- 1-Wire mit DS16S20 Temp-Sensor läuft so lala (Ob die Werte stimmen?)
- RC5-Empfänger mit TSOP1736 fehlt noch vollständig
- RC5-Sender über IR-LEDs fehlt auch noch.

Beim I2C und beim 1-Wire bräuch ich wohl noch ein wenig Unterstützung
in Assembler ;) . Da komm ich beim I2C mit dem Ablauf der Kommunikation
noch nicht ganz klar. Prinzip ist verstanden aber der Ablaauf mit dem
Registern und Umsetzung in ASM-Code macht ein paar Probleme. Der
8583 spricht nicht wirklich mit mir. Beim 1-Wire läuft die Kommunikation
aber ich weiß nicht so recht ob ich die Werte fehlerfrei lese. Die CRC-
Berechnung fehlt auch noch. Irgendwie paßt der gelesene Family-Code
nicht zum Datenblatt des DS16S20 und die Temperaturwerte sind auch
nach der Mondphase und aktueller Erdstrahlung :sarcastic:

Aber hier erst mal ein paar Bilder ...
m32_1.jpg m32_4.jpg m32_5.jpg m32_7.jpg m32_8.jpg

... und hier ein paar Pläne ...
http://www.jfblan.de/dino/blatt1.gif
http://www.jfblan.de/dino/blatt2.gif

und der Assembler-Code ...
http://www.jfblan.de/dino/ATmega32-LCD.asm

Am Anfang vom Code ist vom Testen noch ziemliches Kraut und Rüben ;-)

Das war es erst mal für den Augenblick.

Gruß
Dino
 
Einen Zusatz hab ich noch ...

In den Bildern könnt ihr sehen, wie ich die Statemachine (wenn es überhaupt
eine ist) für den Encoder erzeugt habe. Für die, die es interessiert ...
http://www.jfblan.de/dino/encoder1.gif
http://www.jfblan.de/dino/encoder2.gif
http://www.jfblan.de/dino/encoder3.gif

Der Programmcode und weitere Erklärungen findet man in der ASM-Datei.

Im Großen und Ganzen besteht der Quellcode sowieso zu 2/3 aus Bemerkungen
und Erklärungen. Er sollte also auch für Leute interessant sein, die in C oder
Bascom programmieren (hoffe ich doch mal) ;)

Mal sehen ob daraus wirklich mal ne Hauszentrale wird oder ob es bei nem
Daddelboard bleibt :sarcastic:

Nochmal Gruß
Dino

Anmerkung: Nicht über die Links wundern - Das Board mag nur maximal 79,8kByte-Anhänge von mir.
schöner wäre es natürlich, wenn man den Quellcode (85kByte) und die Schaltpläne (größter mit 170kByte)
dazupacken könnte. Sonst könnten irgendwann mal beim Aufräumen auf meinem Webspace tote Links
entstehen (wenn man nicht aufpaßt). Ich hab die Bilder schon ziemlich runtergerechnet, aber bei den
Plänen würde dann nur noch Müll übrigbleiben. Und den Quellcode müßte ich dann Häppchenweise anhängen.
 
Um die Probleme beim I2C und 1-Wire zu analysieren und zu lösen werde ich
mir wohl erst mal nen I2C-Sniffer bauen und mal sehen was mein DigiScope
so für Möglichkeiten hat. Eventuell reicht die Speichertiefe ja aus.

Für das DigiScope muß ich sowieso mal die Probe für den 16-Bit LogikAnalyzer-
Teil bauen. Ich war so blöd und hab den damals nicht mitbestellt. Es ist ja
nen Schaltplan dabei und so ein kleines Teil kann man bestimmt selber bauen
(dachte ich mir). Geht ja auch - wenn man sich dazu durchringt. Das war
am fallschen Ende gespart :mad: Sind zum Glück aber nur ein paar TTLs :)

Wenn ich den Kram am laufen habe gibts den nächsten Quellcode-Teil mit
Bemerkungen und Beschreibungen.

Gruß
Dino
 
Heute hab ich mal das DigiScope an den 1-Wire-Bus gehängt. Die Datenbits
auf dem Bus stimmen (sieht jedenfalls so aus). Irgendwie scheinen also die
Leseroutinen nicht sauber zu arbeiten. Die Startflanken der gelesenen Bits
müßten also richtig erzeugt werden. Wenn man die Signale per Auge auf
dem Scope analysiert ist der Family-Code mit 0x10 richtig. Der Mega32 zeigt
aber auf dem LCD 0x08 an. Wenn man bedenkt das das LSB zuerst übertragen
wird könnte man durch eine weitere 0 (also um 1 Bit weiterschieben) aus
der 0x08 die gewünschte 0x10 erzeugen. Irgendwie scheint also das erste Bit
verloren zu gehen. Muß ich mir in ner Mußestunde wohl noch einmal genau
ansehen.

Gruß
Dino
 
Hallo Dino,

ja du hattest dann MSB zuerst gesendet bzw. empfangen, anstelle LSB, das ist mir auch schon mal passiert und ich habe ewig gesucht :rolleyes:.

Dankeschön für dein sehr gut kommentiertes Assembler-Programm, es eignet sich sehr gut als Vorlage für eigene Projekte oder einfach zum besseren Verständnis der I2C/TWI- und 1WireBus-Protokolle!

Grüße,
Dirk
 
Hallo Dirk !

Wie gesagt ... I2C/TWI hat im Moment noch nen Bug drin ;)
Da muß ich noch etwas stricken. Irgendwie fressen sich die
Routinen beim Ansprechen von nem PCF8583 RealTimeClock
noch fest. Da werde ich noch gut zu tun haben :D

Gruß
Dino
 
Hauszentrale

Hallo zusammen
Ich arbeite auch an einem Hausbus mit Zentrale, die grundsätzlich schon läuft: M128-Board von RN mit Ledsee TouchPanel 240x128. Im Gegensatz zu de TP 128x64 von Ledsee habe ich aber seit einiger Zeit daran nichts mehr gemacht. Offenbar deshalb funktioniert es noch. Ich arbeite grundsätzlich in Bascom, nur zeitkritische Routinen werden in Assembler gemacht.

Ich will erstmal diverse Messwerte im Haus sammeln:
Temperaturen aller Räume
Wasser-, Elektro, -Gasverbrauch
Vorlauf/Rücklauftemperaturen der Heizungsstränge
Außentemperatur, Luftfeuchte usw.

Die während des Hausbaus prognostisch verlegten Leerrrohre können heute nicht mehr befriedigen. An ein Verlegen neuer Kabel denke ich gar nicht, weil ich da nicht an meiner Frau vorbeikomme. Also blieb nur die Alternative Funk.
Mit den rfm12 experimentiere ich seitdem und habe bereits ein Netzwerk aus 3 Slaves und 1 Master realisiert.

Wer Ideen hat zur Messwertgenerierung, bitte melden!

radebeul
 
Analyzer für I2C/TWI und 1-Wire/uLAN

Hallo alle,

da ich es nicht geschafft habe, die TWI-Kommunikation zwischen dem Mega32
und der PCF8583 Echtzeituhr zum laufen zu bekommmen baue ich mir erst mal
nen Analyzer der auf dem TWI-Bus mitliest und die gelesenen Daten über ne
RS232 zu einem PC schickt.

So ein Analyzer mit nem Mega8 und ca 15MHz Prozessortakt hab ich schon
gesehen und mir die Daten angesehen. Um aber für schnellere Sachen
gerüstet zu sein baue ich meinen mit nem Mega48-20P (20MHz Quarz).

Den TWI werde ich dann für die Fehlersuche erst mal auf 50kBit runtertakten.
Dann habe ich Luft für die 115kBit zum PC. Nen Ringbuffer für die RS232
brauch ich sowieso damit mir nichts verloren geht. 256Byte sollten für den
Buffer reichen.

Mal sehen was da draus wird :rolleyes: Wenn der Analyzer läuft setz ich
die Daten hier mit rein. Den können andere mit Sicherheit auch gut
gebrauchen ;)

Der Analyzer wird dann meine erste Programmierung mit Interrupts. Da bin ich
ja mal gespannt ...


Die 1-Wire-Schnittstelle hab ich ja zum Glück am funktionieren :D Den
Algorithmus für ROM-ID-Suche hab ich mir auch schon angesehen und
verstanden (eigentlich recht einfach ;) ). Der wird demnächst mit in den
Sourcecode gebastelt.

Es geht voran ...
Soweit zum aktuellen Stand des Projektes.

Gruß
Dino
 
Analyzer als eigenes Projekt abgespalten

Hallo ,

da der Analyzer ziemlich umfangreich geworden ist hab ich ihn mal als
eigenes Projekt abgespalten. Er findet sich hier als eigenes Thema im
Bereich "AVR-Projekte".

Und damit habe ich auch noch gleich meine erste Moderation
erfolgreich abgeschlossen :D

Wenn es beim ATmega32-Daddelboard weitergeht dann schreibe ich
hier wieder was rein. Im Moment tut sich aber wohl eher was im
Thema über den Analyzer.

Gruß
Dino
 
Hallo,

demnächst wird es wohl zusammen mit dem Analyzer hier weitergehen.
Wenn man was analysieren will, braucht man auch was wo man sich
dranschalten kann. ;)

Gruß
Dino
 

Ü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)