Erweiterung der Heizungssteuerung

Clone

Neues Mitglied
11. März 2013
14
0
0
Sprachen
Hi,
Ich möchte meine Heizung automatisieren, habe aber nur grundlegende Informationen über Microcontroller, dafür aber anwendbare C Kentnisse. An Material habe ich einen ATMega32 (AT-M32) auf einer Adapterplatine mit JTAG Schnittstelle 2x5 pins (mit dem ich vorhabe die Regelung zu realisieren), einen AT90USB162 (mit diesem habe ich schon einiges auprobiert, da dieser über eine USB Schnittstelle verfügt, konnt ich auf diesen mit Flip zugreifen, jedoch kann dieser keine analogen Signale erfassen) und einen ATMega128 (welchen ich nun aber zweitrangig verwenden möchte). Dazu noch einen "USBprog 3.3 programmiert mit AVRISPmkII" (welcher auch nicht das tut, was er verspricht, zumindest nicht für mich) und einen "AVR-PG1B". Das Programm erstelle ich mit dem Atmel Studio 6
Für die Regelung sollen digitale sowie analoge Signale auswerten werden.

Ich habe nun das Problem, dass ich einfach nicht loslegen kann, da ich noch nicht einmal bis zu einem Test komme, geschweigedenn einen Zugriff auf den Controller erhalte.


Daher bräuchte ich etwas Hilfe, wie ich denn richtig loslege, was ich brauche (Software und vor allem Hardware) und was ich ungefär tun muss, um zuverlässig programmieren zu können.

Schon mal Danke an euch allen...


Schöne Grüße
Clone
 
Hallo Clone,

Dazu noch einen "USBprog 3.3 programmiert mit AVRISPmkII" (welcher auch nicht das tut, was er verspricht, zumindest nicht für mich) und einen "AVR-PG1B".
...
Ich habe nun das Problem, dass ich einfach nicht loslegen kann, da ich noch nicht einmal bis zu einem Test komme, geschweigedenn einen Zugriff auf den Controller erhalte.
...
Daher bräuchte ich etwas Hilfe, wie ich denn richtig loslege, was ich brauche (Software und vor allem Hardware) und was ich ungefär tun muss, um zuverlässig programmieren zu können.

Als Progger würde ich für einem Anfänger den AVRISPmk2 empfehlen. Alle Nachbauten können zwar funktionieren, müssen es aber nicht. Es gibt oft genug Probleme und als Anfänger ist man dann froh wenn man nur an einer Front kämpfen muß.

Wichtig ist das man zuerst das AVR-Studio installiert OHNE den AVRISPmk2 vorher anzustecken. (Das ist ganz wichtig!)

Mit C kann ich dir leider nicht weiterhelfen. Aber da gibt es bestimmt genug andere hier die weiterhelfen können :cool:

Wenn du alles selber machen möchtest, dann würde ich an deiner Stelle erstmal einen normalen Mega32 auf ein Breadboard (Steckbrett) setzen und mit dem üblichen drumherum für die Grundfunktionen versehen. Im FAQ-Bereich findest du Minimalbeschaltungen. Ist zwar nen Mega8 aber vergleichbar. Damit hast du dann schon einmal eine Basis auf der man aufbauen kann.

Gruß
Dino
 
Hallo Clone!

So, nun noch mal in aller Ruhe:
Willkommen im AVR-Praxis Forum! :ciao:

Manchmal ist man zu Beginn durch die viele Technik und die vielen Möglichkeiten einfach verwirrt.
Aus dem Grunde ist es nicht unbedingt verwunderlich, dass am Anfang erst mal gar nichts zu klappen scheint. :wink:

Ich bin ja nun kein Spezi für das AVR-Studio, aber dafür gibt es hier ja noch andere User!
Außerdem ist die "in Betriebnahme" eines AVR`s zum Programmieren nicht unbedingt Softwareabhängig.

Dann möchtest du jetzt also mit dem AVR-Studio, einem Programmer (USBprog 3.3 oder AVRPG1B ?) und dem ATMega128 beginnen.
Na, da sollte doch etwas zu machen sein. :wink:


Dino hat übrigens im FAQ-Bereich einige gute FAQ`s eingestellt, die sich auch mit den "Grundschaltungen" befassen.
Hast du da ggf. auch schon mal einen Blick reingeworfen?


Viele Grüße,
Cassio
 
Gut, dann versuche ich es mal mit dem AVRISPmk2, nur habe ich da stets zwei "Probleme". Zum einen kann ich mit dem Programmer ein Programm einspielen, auch ohne einen angesteckten Microcontroller. Zum anderen wird anscheinend auch gar kein Programm auf den Speicher geschrieben.

Ist nach dem Einspielen irgend ein weiteres Signal nötig, um den Controller zu "starten"?



Wieder Online: Morgen nach 19:00
 
Hallo Clone!

Gut, dann versuche ich es mal mit dem AVRISPmk2, nur habe ich da stets zwei "Probleme".

Ach, du hast auch einen AVRISPmkII?
Na, dann ich doch alles bestens. :wink:



Zum einen kann ich mit dem Programmer ein Programm einspielen, auch ohne einen angesteckten Microcontroller.

Ach ja?
Wie soll das denn gehen? :hmmmm:
Irgendwas scheint da aber nicht zu stimmen!
Ohne AVR kann der mkII doch nichts programmieren.



Ist nach dem Einspielen irgend ein weiteres Signal nötig, um den Controller zu "starten"?

Nur ein Reset, der wird vom mkII aber automatisch nach dem Übertragen des Programmes gemacht.


Scheinbar müssen wir das wohl alles noch mal Schrittweise durchgehen.
Am Besten mit Snapshots von dir und Usern von hier, die das AVR-Studio verwenden.


Grüße und morgen,
Cassio
 
Hi,

Ist nach dem Einspielen irgend ein weiteres Signal nötig, um den Controller zu "starten"?

der Controller wird für die Kommunikation mit dem Progger in den Reset-Zustand versetzt. Reset wird also auf GND gezogen wenn man die Fuses ausliest/setzt, EEPROM ausliest/schreibt, Flash ausliest/schreibt, Signatur ausliest, ...
Wenn der Progger also fertig ist, dann startet der Controller so als wenn man grade Strom drangesetzt hat oder einen Reset ausgelöst hat. Man muß nichts weiter machen. Alle Änderungen werden sofort danach aktiv. Also auch alle Fehler die du gemacht hast (zB falsche Fuse-Einstellungen).

Gruß
Dino
 
Guten Abend,
ich habe mal ein Bild gemacht, wie mein Arbeitsmaterial genau aussieht^^

EDIT by Cassio:
Bild direkt hochgeladen und eingebunden, damit ein externer Dienst nicht verwendet werden muss!

Clone_Arbeitsplatz1.jpg

Wie füge ich im Atmel Studio meinen Programmer hinzu, damit ich meinen Controller auch über diesen programmieren kann? Als Auswahlmöglichkeit im "Device Programmer" habe ich stets nur den AVR Simulator....


Schöne Grüße
Clone
 
Hi,

Wie füge ich im Atmel Studio meinen Programmer hinzu, damit ich meinen Controller auch über diesen programmieren kann? Als Auswahlmöglichkeit im "Device Programmer" habe ich stets nur den AVR Simulator....
also wenn der Progger genau den AVRISPmk2 simuliert (Nachbau), dann sollte das AVR-Studio ihn erkennen. Wenn der Progger den STK500 simuliert, dann kannst du ihn bis Studio5 verwenden. Nach meiner Info unterstützt das AVR Studio 6 leider keinen STK500 mehr und damit auch keine Nachbauten davon. Darum wird auch immer zu einem Original AVRISPmk2 geraten. Auch wenn der ein wenig teurer ist, erspart man sich damit ne Menge Ärger.

Ach ja .. WICHTIG! Stell bitte deine Bilder/Anhänge direkt im Forum ein sonst sind die nach ein paar Monaten auf einmal weg weil der Bilderdienst nur ne gewisse Dauer hostet und der Thread ist für die Tonne und hilft niemandem mehr. Ich hab extra mal nen Beitrag geschrieben wie das geht, welche Dateiformate man verwenden sollte und wie man ein Bild zuschneidet damit es paßt.

Gruß
Dino
 
Ach ja .. WICHTIG! Stell bitte deine Bilder/Anhänge direkt im Forum ein sonst sind die nach ein paar Monaten auf einmal weg weil der Bilderdienst nur ne gewisse Dauer hostet und der Thread ist für die Tonne und hilft niemandem mehr.


Hallo zusammen!

Ich habe mich der Sache mal angenommen, weil mich allein schon die nervigen Cookie-Anfragen des Bilderdienstes genervt haben. :wink:
Das Bild ist nun also direkt bei uns eingebunden und den Link habe ich entfernt! :cool.





Hallo Clone !

Kannst du mal ein Anschlussschema des Controllermoduls hier als Bild einstellen?
Sind die Pins des SMD-AVR lediglich auf die 2,54mm Pinreihen gelegt, oder hat das Modul auch diskrete Bauteile wie Quarz, ISP-Schnittstelle usw. schon direkt auf der Platine?


Grüße,
Cassio
 
Mal nebenbei ... Ich hab mir mal den Preis von dem M32-Modul von Olimex angesehen ... :p
Dafür kann man sich 2Stk Mega32-16PU (DIP-Gehäuse) und noch nen ganzen Satz Kondensatoren und Widerstände besorgen.
Das Modul kostet 13,95 und ein purer Mega32-16PU im DIP40 3,95 :vollkommenauf:
Also nix gegen die Module. Bei nem Mega128 oder anderen die es nur als SMD gibt, da würde ich das ja noch verstehen. Warum um alles in der Welt holt man sich zum experimentieren ne SMD-Version auf Platine, die es auch als DIP gibt. 5-7 Bauteile drum rum und gut ist. Die Platine hat laut Schaltplan lediglich 3 Kondensatoren und nen Widerstand drauf (Sieb-C und Reset). Ja ... es sind Pins für JTAG drauf. :rolleyes: :p Wenn da nen Quarzsockel und die 22pF und noch ne Siebkette für AVcc drauf wären und nen ISP-Anschluß, dann würde ich das ja langsam verstehen. Nach meiner Meinung ist das aber irgendwie ziemlich quer. Cassio seine selbstgebauten Module haben da ja noch mehr drauf.

Gruß
Dino
 
... Sorry, dass ich das mit dem Bild falsch gemacht habe.:bawling:

Sind die Pins des SMD-AVR lediglich auf die 2,54mm Pinreihen gelegt, oder hat das Modul auch diskrete Bauteile wie Quarz, ISP-Schnittstelle usw. schon direkt auf der Platine?
Es hat nichts dergleichen, es ist ledigdlich eine Adapterplatine mit einer zusätzlichen JTAG Schnittstelle.
Anschlussschema:

Anschlussschema.jpg

Mal nebenbei ... Ich hab mir mal den Preis von dem M32-Modul von Olimex angesehen ... :p
Dafür kann man sich 2Stk Mega32-16PU (DIP-Gehäuse) und noch nen ganzen Satz Kondensatoren und Widerstände besorgen.
Das Modul kostet 13,95 und ein purer Mega32-16PU im DIP40 3,95
Den fand ich damals einfach schöner^^

Nach meiner Info unterstützt das AVR Studio 6 leider keinen STK500 mehr und damit auch keine Nachbauten davon.
So?... dann hole ich mir eine ältere Version und versuche es damit nochmal.^^


Schöne Grüße
Clone
 
Hallo Clone!

Also ich finde das Modul preislich auch ziemlich übertrieben,
zumal es nicht mal einen Quarz (nebst Kondensatoren) und eine ISP-Buchse gibt.

Nur mal als Hinweis:
Den ATMega 1284 PU (DIP-Gehäuse) gibt es bei Reichelt aktuell für 6,05Euro.
Damit hättest du 128k Flash und die selben Pins zur Verfügung.


Nun ist es aber egal und du hast das Mosul vorliegen!
Als erstes solltest du also versuchen die Pins MOSI, MISO, SCK, RESET (mit Widerstand), Vcc und GND am AVR abzugreifen.


Damit hättest du die ISP-Schnittstelle zusammen, die du zum Programmieren benötigst!
Diese Pins wird es dann auch bestimmt bei deinem Programmer geben.

Damit du deinen Programmer ansprechen kannst, muss du eine Verbidnung vom AVR-Studio (Vers. 5 oder 6) zum Programmer herstellen können.
Ohne diese Softwareverbindung müssen wir gar nicht weiter machen.

Da ich das AVR-Studio nicht verwende und hier auch nur die Version 4.x installiert habe, kann ich dir da leider keine direkte Hilfe geben.
Ich hoffe aber, dass du mit dem Studio 5.x eine Verbindung zu deinem Programmer herstellen kannst!


Wie ich deinem Bild vom Testaufbau entnehmen kann, hast du ja bereits ein Breadboard (Steckbrett) zum Testen.
Du musst jetzt also nur noch die Verbindungen von Programmer zum AVR per "Drähte" (Jumper Wire) herstellen.

Wir warten jetzt aber erst mal ab, ob du deinen Programmer per AVR-Studio ansprechen kannst. :wink:


Grüße,
Cassio
 
Guten Abend,
ich habe es nun nach einer kurzen Pause hin bekommen. Alle digitalen Abfragen und Ausgänge sind soweit programmiert, nun fehlen noch die Erfassung analoger Werte und die Ansteuerung eines LCDs (den ich mir gerade vornehme und schon ein paar Probleme habe^^)

Ich folge dabei diesem Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Habe die Header Datei und die lcd-routines.c Datei erstellt, nur weiß ich nicht, wie diese C-Datei nun eingebunden wird. (Source Files?) Erstelle ich einfach eine Zweite C-Datei, schreibe mein Testprogramm und kompiliere dies, so bleiben die schwarzen Blöcke nach der Initialisierung dennoch schwarz...

Weiß jemand Rat?


Schöne Grüße
Clone
 
Hallo Clone,
...Habe die Header Datei und die lcd-routines.c Datei erstellt, nur weiß ich nicht, wie diese C-Datei nun eingebunden wird. (Source Files?) Erstelle ich einfach eine Zweite C-Datei, schreibe mein Testprogramm und kompiliere dies, so bleiben die schwarzen Blöcke nach der Initialisierung dennoch schwarz...

du musst beide Dateien dem Projekt hinzufügen. In deinem Hauptprogramm bindest du die .h Datei ein (#include ...). In dieser sind die Funktionsprototypen definiert, somit kannst du in deinem Hauptprogramm die Funktionen anwenden. Außerdem musst du in der .h Datei einige Einstellungen vornehmen (festlegen von DB4..7, RS und EN Signal).

Vielleicht hilft dies schon einmal weiter.

Dirk :ciao:
 
Hi,

ich beschäftige mich gerade mit diesem Funktionsaufruf:

Code:
////////////////////////////////////////////////////////////////////////////////////
//Funktion
void lcd_command( uint8_t data )
{
	LCD_PORT &= ~(1<<LCD_RS);    // RS auf 0 setzen
	
	lcd_out( data );             // zuerst die oberen,
	lcd_out( data<<4 );           // dann die unteren 4 Bit senden
	
	_delay_us( LCD_COMMAND_US );
}

////////////////////////////////////////////////////////////////////////////////////
// Funktionsaufruf

        lcd_command( LCD_SET_FUNCTION |
	LCD_FUNCTION_4BIT |
	LCD_FUNCTION_2LINE |
	LCD_FUNCTION_5X7 );


Kann mir da jemand erklären, wie die übergenen Parameter (LCD_SET_FUNCTION... (Es handeln sich dabei nur um bestimmte bits, die als Befehl an einen LCD übergeben werden)) in der Funktion bearbeitet werden, da diese in der Funktion selbst nicht mehr vorkommen?

Die Funktion "lcd_out" gibt die bits ledigtlich aus.



Schöne Grüße
Clone
 
Hallo Clone,

der angegebene Parameter setzt sich auch einer ODER-Verknüpfung mehrere Werte zusammen und ist ein Byte groß (uint8_t).

Code:
// Set Function --------------- 0b001xxxxx
#define LCD_SET_FUNCTION        0x20
 
#define LCD_FUNCTION_4BIT       0x00
#define LCD_FUNCTION_8BIT       0x10
#define LCD_FUNCTION_1LINE      0x00
#define LCD_FUNCTION_2LINE      0x08
#define LCD_FUNCTION_5X7        0x00
#define LCD_FUNCTION_5X10       0x04
In der Routine lcd_command werden zuerst die oberen 4 Bits übertragen, danach die unteren 4 Bits.

Dirk :ciao:
 
Hallo Dirk,

das heißt also, dass der Endwert der Parameter im Funktionsaufruf in die Variable "uint8_t data" der Funktion hineingeschrieben wird?

Ich hoffe ich habe das richtig verstanden^^
Und warum ist das so? (Nur fürs bessere Verständis der C-Programmierung...)


Schöne Grüße
Clone
 
Hi Clone,

dies ist der Prototyp der Funktion:

void lcd_command( uint8_t data )

Wenn du der Funktion einen Parameter übergibtst, wird der Wert in "data" kopiert und ist in der Funktion verfügbar.

Im aktuellen Fall ist es eine Konstante, die der Compiler ermittelt:

LCD_SET_FUNCTION | LCD_FUNCTION_4BIT | LCD_FUNCTION_2LINE | LCD_FUNCTION_5X7
entspricht
0x20 | 0x00 | 0x08 | 0x00
und das gibt 0x28

"data" hat also in der Funktion den Inhalt 0x28.

Wenn du allgemein Hilfe für C benötigst, schau dir vielleicht einmal die Referenz von Kernighan & Ritchie an (The C Programming Language), es gibt auch eine deutsche Übersetzung.

Dirk :ciao:
 
Guten Tag,

ich bin nun recht weit gekommen und möchte das ganze nun mehr oder weniger "fest" einbauen. Jetzt geht es aber schon mit einem einfachen Problem los: Woher bekomme ich ein recht ästhetisches Tastenfeld, mit 5 Tasten, die wie ein Kreuz angeordnet sind. Anfangs hatte ich vor, normale Taktschalter mit einer längeren Kappe zu verwenden, allerdings sieht das weniger schön aus noch gewährleisten mir diese Schalter, dass bei jedem Drücken, auch durchgeschalten wird, da die Kappen meißt sehr wackeln. Ich möchte das ganze schon neu kaufen, da ich mir auch eine gewisse Auswahl wünsche...

Und gibt es bessere Seiten als conrad.de?


Schon mal Danke

Schöne Grüße
Clone
 
Hi Clone, schau Dir mal die Folientastaturen an.
Sind zwar nur Nummernblöcke (ok, mit Hex), aber vielleicht gehts trotzdem...

p.s.: gerüchteweise hat sinclair inzwischen Probleme mit solchen Tastaturen... zugegebenermaßen sind die aber auch nicht mehr taufrisch...
(Hmm... kriegt man den ZX81 an modernen Fernsehern überhaupt noch in Betrieb?)
 

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