Forum: Mikrocontroller und Digitale Elektronik Quellcode ändern von Pic auf MEGA8


von Wieso??? (Gast)


Lesenswert?

Hallo ich wollte gerne einen Quellcode von einem PIC12C508 abändern und 
auf einem Mega8 laufen lassen.1.Ist das überhaupt möglich?Wenn ja gibt 
es eventuell die Befehle der verschiedenen MC in einer Liste?Ich meine 
z.B. PIC Timer TMR0 = Mega TCCR0 usw. weil ich bin noch totaler Anfänger 
und kann leider nicht den Code selbst schreiben.Ich möchte nähmlich eine 
Schaltung von mir die einen IR Empfänger besitzt erstmal über den Mega8 
ansteuern,da der TSOP nicht funktioniert.Es liegt aber nicht an der 
vorhandenen Schaltung da diese schon bei jemand anderen läuft.Bauteile 
sind genau die selben und meine Schaltung läuft bis auf die Ansteuerung 
des Menüs.Ich hatte jetzt einfach vor den Quellcode einer RC5 
Fernbedienung auf einen Mega8 zu brennen daran dann einfach erstmal 5 
Schalter klemmen und diesen dann am Eingangpin RC5 der anderen Steuerung 
anzuklemmen.Das müßte doch eigentlich funktionieren oder nicht?

Für eine kleine Starthilfe wäre ich Euch sehr dankbar.Oder gibt es 
irgendwo einen Code der schon auf einem Mega8 läuft?Ich habe nichts 
gefunden.

von Sahne (Gast)


Lesenswert?

C oder ASM? Eigentlich egal, in jedem Fall:
>Ist das überhaupt möglich? ... ich bin noch totaler Anfänger
Vergiss es...

>Ich habe nichts gefunden.
Dann hast du wohl falsch gesucht.

von Peter D. (peda)


Lesenswert?


von Benny (Gast)


Lesenswert?

Wieso??? schrieb:
> Wenn ja gibt
> es eventuell die Befehle der verschiedenen MC in einer Liste?Ich meine
> z.B. PIC Timer TMR0 = Mega TCCR0 usw. weil ich bin noch totaler Anfänger

nee, so geht das nicht,
Programm einfach übertragen geht nicht, da die beiden mc verschiedene 
Hardware besitzen.
Wenn Du ein Programm mit Timern und pipapo übertragen willst, dann musst 
du beide Architekturen gut kennen.
Also versuch lieber eine kennenzulernen und dann dein Programm selber zu 
schreiben (geht aber nicht mehr bis Weihnachten)

von Wieso??? (Gast)


Lesenswert?

Okay danke ertmal für die Antworten.

Der gezeigte link ist doch ein Empfänger ich möchte doch aber senden.

von Wieso??? (Gast)


Lesenswert?

Würde denn der Code vom 2313 auf einen T24 laufen

von Giuseppe (Gast)


Lesenswert?

Hallo Wieso???

fraglich wie du zu deinem Namen gekommen bist, aber ich find deinen 
Wiedererkennungswert damit optimal :-)

Zu deinem Thema...
Da du totaler neuling bist in sachen Programmieren würde ich dir die 
simple BASCOM AVR Hochsprache emfehlen...
Damit hab ich damals auch einen sehr schnellen einstieg gehabt und 
eventuell auch einen Atmega 8 µC / ATTiny2313...beide sind ideal 
beschaltet und damit sehr gut für den einstieg geeignet...Ich selbst hab 
meine eigene RC5-Emfangs/Sender-Schaltung innerhalb von 4 tagen ganz 
allein durch lesen und probieren geschafft...

Also, hau auf die tasten und viel erflolg...
lass wissen, wenn ich dir in sachen bascom helfen kann...

lg Giuseppe

von spess53 (Gast)


Lesenswert?

Hi

AVR415: RC5 IR Remote Control Transmitter on tinyAVR and megaAVR devices

http://www.atmel.com/dyn/resources/prod_documents/doc2534.pdf
http://www.atmel.com/dyn/resources/prod_documents/AVR415.zip

MfG Spess

von Wieso??? (Gast)


Lesenswert?

Ja vielen dank.

was bedeutet eigentlich

#define RC5_LEFT   86

Ich verstehe definiere Fernbedienung Knopf links 86???

Ist simple Bascom so leicht zu lernen was sind denn da genau die 
Vorteile? Weil mich regt es auf das ich für jeden sche... Euch fragen 
muss

von Paul Baumann (Gast)


Lesenswert?

In Bascom gibt es fertige Routinen (SendRC5, GetRC5).
Damit kann man in kurzer Zeit eine Fernbedienung programmieren. Lade Dir
doch die kostenlose Demo-Version von MCSELECTRONIC herunter. Dort gibt 
es
in der Hilfe auch Beispiele zu finden, wie man das in die Tat umsetzt.

MfG Paul

von Giuseppe (Gast)


Lesenswert?

@wieso???

probiers doch einfach aus...
die vorteile sind zuerst klar auf der hand...
du musst nicht umbedingt assembler lernen, wie du das grade versuchst 
(auch wenns eigentlich von vorteil ist), sondern einfach nur 
vordefinierte bausteine eintragen, die auch viel verständlicher und 
intuitiver sind...

bei bascom zb heist der rc5 sendecode für taste Standby am fernseher:

>>> Rc5send 0 , 01 , 12
wobei "0" für das togglebit steht (ob taste wiederholt oder einzel 
gedrückt ist)...
"01" steht für das gerät (in dem Falle Fernseher 2 (TV2))...
und "12" steht für den RC5 Befehl ausschalten (Standby)
<<<

also, was is verständlicher???
"Rc5send 0 , 01 , 12" oder "#define RC5_LEFT   86"

darin mein lieber, liegt der Unterschied zwischen assembler und 
Hochsprache Bascom....
Wenn du fragen hast, melde dich...
LG Giuseppe

von Wieso??? (Gast)


Lesenswert?

Ja ich habe mir jetzt mal bascom heruntergeladen und schaue ich gerade 
das ich irgendwie das mk2 board ans laufen kriege

von Giuseppe (Gast)


Lesenswert?

wenn es das mk2 board von myavr ist mit usb version, dann wirst du dich 
totprügeln, aber es wird nicht damit laufen...
nimm stattdessen avrdude, damit liefs bei mir auch...
benutze bascom nur zum programmieren und zum kompilieren...
LG Giuseppe

von Wieso??? (Gast)


Lesenswert?

Danke für den Tipp ist nähmlich genau das Board

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> also, was is verständlicher???
> "Rc5send 0 , 01 , 12" oder "#define RC5_LEFT   86"

noch verständlicher wäre

Rc5send toggle_bit_while_sending, TV, standby

von Wieso??? (Gast)


Lesenswert?

Habe mal eine Frage jetzt wollte ich mal was ganz einfaches in Bascom 
programmieren aber meine LED blinkt nicht (Benutze intern 1mhz)

$regfile = "m8def.dat"
$hwstack = 40
$swstack = 32
$framesize = 60
$crystal = 1000000

Config Portb.0 = Output                                     'Ein Pin 
wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)

Do
  Portb.0 = 1                                               'Pin wird 
auf High, also 5V geschaltet
  Waitms 100
  Portb.0 = 0                                               'Pin wird 
auf Low, also 0V geschaltet
  Waitms 100
Loop

End

von _BT (Gast)


Lesenswert?

Giuseppe schrieb:
> wenn es das mk2 board von myavr ist mit usb version, dann wirst du dich
> totprügeln, aber es wird nicht damit laufen...
> nimm stattdessen avrdude, damit liefs bei mir auch...
> benutze bascom nur zum programmieren und zum kompilieren...
> LG Giuseppe

also bei mir geht mein myavr MK2 mit BASCOM prima ... der Programmer 
wird von der aktuellen BASCOM version sogar dierkt unterstützt und in 
der Programmerliste zur auswahl angeboten...


cu BT

von Wieso??? (Gast)


Lesenswert?

Also ich habe den Programmer jetzt auch drinne geht aber nicht kommen 
tausende Fehlermeldungen did not respont to command:write byte
woran kann das liegen??

von Giuseppe (Gast)


Lesenswert?

@Wieso
>Config Portb.0 = Output                                     'Ein Pin
>wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)

Du konfigurierst zwar den richtigen Port B Pin 0 damit, aber in deinem 
Kommentar nebendran ist es Port C den du meinst????
Wo hast du die LED angeschlossen??? Sicher auch Port B???

Code scheint soweit ok zu sein, ich würds allerdings so machen...

Do
toggle PORTB.0        'Pinzustand am PortB Pin0 wird gewechselt...
waitms 500            'Pause für 500ms
Loop

Sag bescheid, wie es aussieht:-)

LG Giuseppe

von Giuseppe (Gast)


Lesenswert?

>Also ich habe den Programmer jetzt auch drinne geht aber nicht kommen
>tausende Fehlermeldungen did not respont to command:write byte
>woran kann das liegen??

Ich sagte doch du wirst dich totschlagen...
wenns gehen sollte, ist es wirklich fast schon ein wunder denke ich...
bei mir läufts seit jahren nicht...
nimm AVRDude und lern lieber effektiven code, statt dich rumzuärgern...

Giuseppe

von Loonix (Gast)


Lesenswert?

Giuseppe schrieb:
> also, was is verständlicher???
> "Rc5send 0 , 01 , 12" oder "#define RC5_LEFT   86"
>
> darin mein lieber, liegt der Unterschied zwischen assembler und
> Hochsprache Bascom....
> Wenn du fragen hast, melde dich...

Bist du sicher, dass bei dir nicht auch noch Klärungsbedarf zur 
Abgrenzung Assembler/Hochsprache besteht? Welcher Assembler kennt denn 
bitte solche Konstrukte:

>Rc5send 0 , 01 , 12

Genausowenig ist #define BASCOM-spezifisch. Diese Direktive kennen 
einige Assembler und noch mehr Hochsprachen. Noch Fragen?

von Giuseppe (Gast)


Lesenswert?

@Loonix
>Bist du sicher, dass bei dir nicht auch noch Klärungsbedarf zur
>Abgrenzung Assembler/Hochsprache besteht? Welcher Assembler kennt denn
>bitte solche Konstrukte:

Ja ich bin mir sicher, weil Bascom kein Assembler ist, es aber auch 
interpretieren / einfügen kann...

Meine genannte direktive funktioniert genauso wie auch geschrieben schon 
seit jahren in meinen Anwendungen und ich habe auch eine Firma die auf 
meinen Namen sowas entwickelt, von daher bin ich mir auch sicher...
ich sagte auch niemals das " #define" BASCOM-spezifisch ist...
Noch fragen??? :-)
Lg Giuseppe

von Wieso??? (Gast)


Lesenswert?

Also das Kommetar war nur falsch geschrieben habe jetzt einfach mal mit 
Bascom gebrannt und siehe da der Code klapt Fehlermeldungen habe ich 
alle ignoriert geht trotzdem.

von Giuseppe (Gast)


Lesenswert?

@wieso???

also blinkt deine led ???
LG Giuseppe

von spess53 (Gast)


Lesenswert?

Hi

>Bist du sicher, dass bei dir nicht auch noch Klärungsbedarf zur
>Abgrenzung Assembler/Hochsprache besteht? Welcher Assembler kennt denn
>bitte solche Konstrukte:

>Rc5send 0 , 01 , 12

'Rc5send 0 , 01 , 12' kann in Assembler ein Makro sein. Ist kein Problem 
im
AVR-Assembler so etwas zu schreiben.

MfG Spess

von Wieso??? (Gast)


Lesenswert?

Ja sie blinkt aber jetzt habe ich mal ein LCD angeschlossen und etwas 
ausgeben wollen jetzt bricht es beim Programmieren ab.Wenn ich aber die 
Hexfile in Workpad Plus lade und brenne geht das Display.Aber jedesmal 
wenn ich etwas hinzufüge und neu compiliere und die Hexfile wieder 
brenne klapt es nicht muss erst die Hex löschen neu compiliren und dann 
gehts woran kann das liegen

von Giuseppe (Gast)


Lesenswert?

was für einen drucker hast du installiert??
bascom erfordert das mindestens ein drucker installiert ist, damit es 
auch richtig läuft...
vielleicht sind auch deine systemdateien oder einstellungen nicht in 
ordnung???
oder vielleicht hast du einfach nur einen fehler in deinem quellcode 
eingebaut...
wenn wir kein code oder schaltung von dir haben, können wir auch nur 
spekulieren...

von Wieso??? (Gast)


Lesenswert?

Ne klapt jetzt hatte wirklich einen Fehler im Code.
Aber es stimmt Bascom ist wirklich leicht zu lernen im gegensatz zu C 
C++.
Ich habe jetzt schon ein LCD ans laufen gebraucht das erst was Anzeigt 
wird nachdem ein Interupt ausgelöst wird.Leider habe ich den INT0 
doppelt belegt deswegen geht es nur Teilweise.Kann den Display Anschluss 
nicht verändern.

von Giuseppe (Gast)


Lesenswert?

doch du kannst das display in bascom so belegen wie du es willst...
hauptsache du teilst bascom deine Anschlüsse mit indem du die CONFIG LCD 
Zeile anpasst...
Siehste mal, in 4 tagen schaffst du es locker dein ziel zu erreichen :-)
viel spaß und glück ;-)
LG Giuseppe

von Wieso??? (Gast)


Angehängte Dateien:

Lesenswert?

Nein ich meinte das Ich das LCD vertig verdrahtet habe (ist zum stecken 
deswegen kann ich es nicht ändern.Und der interupt liegt genau auf einen 
solchen pin von LCD deswegen doppelt.

Ich habe jetzt aber mal eine andere Frage.Ich habe mir jetzt den Pin der 
am Interrupt angeschlossen war von LCD weggebogen und einfach ein Kabel 
neu verdrahtet.Damit ich den Interupt zum einlesen eines TSOP nehmen 
kann.Auf dem Display wird mir jetzt die Adresse und das Kommando 
ausgegeben wenn ich eine Fernbedienung drauf halte (RC5).Das klapt auch 
wunderbar.

Ich habe jetzt aber noch meine andere Schaltung die von jemanden in c 
programmiert worden ist.Wie schaffe ich jetzt den C code so zu andern 
das ich die Adressen verändern kann damit diese schaltung endlich 
reagiert.Leider ist der Code so komplex das ich nur Bahnhof verstehe 
siehe Anhang

von Giuseppe (Gast)


Lesenswert?

ich würde sagen, schreib sie doch einfach schnell neu...
weil portieren ist viel zu schwer für en anfänger...
was soll denn die schaltung bewirken?? oder welche funktionen soll die 
haben, dann kann ich dir vielleicht auch helfen...
LG Giuseppe

von Wieso??? (Gast)


Lesenswert?

Es ist eine Terrariumsteuerung

Atmega32
SHT11
DCF Module
LCD
5 Relais
TSOP

Also 2 Relais steuern Temparatur und Feuchtigkeit per SHT11 /hysterese
Die 3 weiteren Relais können frei eingestellt werden.
Das DCF Module ist für eine genaue Zeit
LCD gibt die werte aus und zeigt das Menü an
Es gibt ein Menü um die Werte einzustellen für die Zeitschaltuhr genauso 
wie die werte von Temp/feuchte.Leider ist die Universalfernbedienung 
schei... Man kann aber nur über den TSOP das Menü steuern,deswegen habe 
ich mir einen RC5 code rausgesucht der bei der Fernbedienung 
einigermaßen funktioniert und wollte jetzt einfach ins RC5 Protokoll die 
werte eintragen.

von Giuseppe (Gast)


Lesenswert?

dann entwickle sie doch mit freude selbst...
ich mein, wie lcd funzt kennst schon, ebenso auch das RC5 Protokoll...
arbeite dich in den temperaturfühler ein und dann schreibst du dir dein 
eigenes programm das dann alle funktionen nach deinem wunsch hat...
du bist nicht weit entfernt vom ziel...
Lass mich wissen, wie ich dir helfen kann...
LG Giuseppe

von Michael (Gast)


Lesenswert?

Wieso??? schrieb:
> was bedeutet eigentlich
>
> #define RC5_LEFT   86

Dafür musst du nur C/C++ kennen, das hat nix mit µCs zu tun. Die 
Anweisung ist für den Compiler, er wird hierbei überall im Code den 
Bezeichner "RC5_LEFT" gegen die Zahl 86 austauschen. Das dient halt der 
Lesbarkeit des Codes.

von Wieso??? (Gast)


Lesenswert?

Also ich denke es wär einfacher in Bascom eine passende Ferndedienung zu 
programmieren es gibt ja schon auf der Bascom seite eine RC5 routine.Was 
ich nicht ganz verstehe ist wie der Schaltplan aussehen muss.

von Wieso??? (Gast)


Lesenswert?

Also würde das dann die Adresse sein die die Fernbedienung sendet (86) 
??

von Wieso??? (Gast)


Lesenswert?

So sieht das bei mir aus


#define rc5_device 5

#define RC5_0     0
#define RC5_1     1
#define RC5_2     2
#define RC5_3     3
#define RC5_4     4
#define RC5_5     5
#define RC5_6     6
#define RC5_7     7
#define RC5_8     8
#define RC5_9     9

#define RC5_LEFT   86
#define RC5_RIGHT   85
#define RC5_UP     80
#define RC5_DOWN   81
#define RC5_OK     87
#define RC5_MENU   82
#define RC5_POWER   12
#define RC5_CH_UP   32
#define RC5_CH_DOWN   33
#define RC5_RECALL   49

uint16_t get_rc5_code(void);

uint8_t new_rc5_data(void);

uint8_t rc5_device_ok(uint16_t temp);

uint8_t rc5_key_ok(uint16_t temp, uint8_t key);

char get_rc5_value(void);

von Giuseppe (Gast)


Lesenswert?

an sich brauchst du nur eine IRLED an Pin OC1A, die Ports konfigurieren 
und Taster an jeden beliebigen Port... Paar zeilen quelltext und deine 
fernbedienung ist fertig... was für ein prozessor nutzt du denn??
und wie viele Tasten willst du haben und wieviele codes sollen es denn 
werden???
mach dir mal nen schaltplan und dann bauste dir das langsam auf...
LG Giuseppe

von Wieso??? (Gast)


Lesenswert?

Ich wollte das mit einen Mega8 aufbauen 5 Tasten.Einen schaltplan hab 
ich schon.

Also wenn ich das ganze aber komplett neu in Bascom schreiben möchte.
Ist es möglich sagen wir mal eine Datei für den SHT11 zu schreiben.Weil 
die hätte ich schonmal.Dann eine für den Tsop usw. und diese dann in 
sagen wir mal eine main datei einzufügen.Das wär für mich einfacher weil 
ich Teilabschnitte programmieren könnte.

von Giuseppe (Gast)


Lesenswert?

@wieso???
>Ich wollte das mit einen Mega8 aufbauen 5 Tasten.Einen schaltplan hab
>ich schon.
poste den doch mal hierrein, dann schauen wir drüber und könnten dir 
sagen, was gut und was schlecht dran ist...
dann haben wir auch eine ahnung, was du in deinem text einbauen könntest 
:-)

>Also wenn ich das ganze aber komplett neu in Bascom schreiben möchte.
>Ist es möglich sagen wir mal eine Datei für den SHT11 zu schreiben.Weil
>die hätte ich schonmal.Dann eine für den Tsop usw. und diese dann in
>sagen wir mal eine main datei einzufügen.Das wär für mich einfacher weil
>ich Teilabschnitte programmieren könnte.
möglich wär das schon, aber dadurch machst du den code unnötig größer 
und könnte passieren das er dann nicht mehr frei kompilierbar wäre, was 
mir auch schon oft passiert ist...
aber im prinzip geht das schon, würd ich aber nicht wirklich tun...
mach lieber alles schön kommentiert in einer bascom datei und gut ist...

LG Giuseppe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.