Forum: Mikrocontroller und Digitale Elektronik Atmega88 als USBtoRS232


von Andreas (Gast)


Lesenswert?

Hallo,

Bräuchte dringend Hilfe. Hab mir eine Sorce runter geladen bei 
http://members.chello.cz/cesko/IgorPlugUSB_RS232/IgorPlug-USB%20(AVR)%20RS232_eng.htm 
. Ist ein USBTORS232 Ccnverter jetzt wollte ich ihn einfach auf atmega 
88 flaschen. Hab die paar Parameter geändert und beim debugen habe ich 
diesen Fehler --- Invalid redefinition of E2END --- Bild im anhang. Kann 
mir jemand helfen?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ich nicht, denn deine Änderungen und der versprochene Anhang fehlen.

von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

.device ATmega88
.include "m88def.inc"

;comment for Mega88
.equ  UCR0        =UCSR0B
.equ  UBRR      =UBRR0L
.equ  EEAR      =EEARL
.equ  USR          =UCSR0A
.equ  E2END          =0x127    ;Last EEPROM Adress
.equ  RAMEND128    =0x96+127  ;Last RAM Adress

.equ  inputport      =PINB
.equ  outputport      =PORTB
.equ  USBdirection    =DDRB
.equ  DATAplus      =1    ;signal D+ on PB1
.equ  DATAminus      =0    ;signal D- on PB0 - give on this pin pull-up 
1.5kOhm
.equ  USBpinmask      =0b11111100  ;mask low 2 bit (D+,D-) on PB
.equ  USBpinmaskDplus    =~(1<<DATAplus)  ;mask D+ bit on PB
.equ  USBpinmaskDminus  =~(1<<DATAminus);mask D- bit on PB

.equ  TSOPPort    =PINB
.equ  TSOPpullupPort  =PORTB
.equ  TSOPPin      =2    ;signal OUT from IR sensor TSOP1738 on PB2

von Oliver (Gast)


Lesenswert?

Warum heisst das hier wohl Codesammlung?

Trotzdem: "comment for Mega88" soll wohl einen Anleitung für irgendwas 
sein.



Oliver

von Andreas (Gast)


Lesenswert?

Das stand:

;comment for AT90S2313

.include "m8def.inc"
;comment for AT90S2313
.equ  UCR      =UCSRB
.equ  UBRR      =UBRRL
.equ  EEAR      =EEARL
.equ  USR      =UCSRA
.equ  E2END      =127
.equ  RAMEND128    =96+127

.equ  inputport    =PINB
.equ  outputport    =PORTB
.equ  USBdirection    =DDRB
.equ  DATAplus    =1    ;signal D+ on PB1
.equ  DATAminus    =0    ;signal D- on PB0 - give on this pin pull-up 
1.5kOhm
.equ  USBpinmask    =0b11111100  ;mask low 2 bit (D+,D-) on PB

von Michael (Gast)


Lesenswert?

Hallo,

lies Dir doch einfach mal die Fehlermeldung durch:

"Invalid redefinition of E2END".

So, und jetzt suchst Du in der von Dir eingebundenen Datei m88def.inc 
nach der Definition von E2END und stellst fest, dass dort der Wert 0x1FF 
zugewiesen wird, was nicht 127 entspricht.

Wie es jetzt weitergeht, müsstest Du wissen.

von Michael (Gast)


Lesenswert?

nochwas:


Und wenn da vorher Dezimalwerte standen, wieso machst Du dann 
Hexadezimalwerte draus?!?

von Andreas (Gast)


Lesenswert?

Das ist egal welche werte ich da rein schreibe passiert nicht auch die 
werte aus m88def.inc. Der schreib immer den blöden fehler hin! Mit 
diesem befehl setzt er einfach die größe fest von dem eeprom aber warum 
das ein fehler ist weis ich auch net bin anfänger!

von Sigint 112 (sigint)


Lesenswert?

@Andreas:
   Nur am Rande: Es gibt eine Alternative für einen USB-RS232 Umsetzer, 
die keinen speziellen Treiber benötigt. Für Windoof wird nur eine 
INF-Datei gebraucht. Link:
http://www.recursion.jp/avrcdc/

Einen kleinen Hacken gibts allerdings: Das Teil ist nicht 
Standardkonform und funktionier auf bestimmten Hostkontrollern unter 
Umständen nicht. Ich hatte damit aber noch nie Probleme.

Gruß,
  SIGINT

von Andreas (Gast)


Lesenswert?

@ sigint

Den habe ich aufgebaut funktioniert aber ich kann den adc-wandler nicht 
nutzen den ich brauche um spannungsmessung zu betreiben!

von Bernhard M. (boregard)


Lesenswert?

Andreas wrote:
> Das ist egal welche werte ich da rein schreibe passiert nicht auch die
> werte aus m88def.inc. Der schreib immer den blöden fehler hin! Mit
> diesem befehl setzt er einfach die größe fest von dem eeprom aber warum
> das ein fehler ist weis ich auch net bin anfänger!

Das ist ein Fehler weil Du ein Konstante mit .equ nur einmal definieren 
darfst, und das passiert in m88def.inc
Deine erneute Definition ist nicht zulässig, egal welchen Wert sie hat.

von Andreas (Gast)


Lesenswert?

Danke das habe ich jetzt auch rausgefunden! Hab jetzt einen neuen Namen 
gewählt! Hab erst ma 60 Fehler bekommen! Musste alle register umändern 
und Eingänge an den mega88 anpassen stehe aber vor neuem problem!

Error: Invalid register

Bei solchen ausdrücken

cbr  UCR,RXCIE0  ;disable interrupt from UART receiving

sbr  UCR,RXCIE0  ;enable interrupt from UART receiving

Hab auch schon rausgefunden das cbr für cbi stehen muss da das ein 
mapped I/O Register ist?

Was könnte man hier machen?

von Andreas (Gast)


Lesenswert?

Hat den keiner so einen Fehler gehabt??

von Karl H. (kbuchegg)


Lesenswert?

Andreas wrote:
> Danke das habe ich jetzt auch rausgefunden! Hab jetzt einen neuen Namen
> gewählt! Hab erst ma 60 Fehler bekommen! Musste alle register umändern
> und Eingänge an den mega88 anpassen stehe aber vor neuem problem!

Schätze mal das war die falsche Änderung.

Du hättest wahrscheinlich einfach nur deine Definition für E2END 
auskommentieren müssen.

In diesem SourceCode Abschnitt werden offenbar ein paar Hardwaredinge 
festgelegt die in deinem IncludeFile anscheinend sowieso festgelegt 
sind.

> Was könnte man hier machen?

Erst mal Assembler lernen. Es macht wenig Sinn ohne Hintergrundwissen an 
die Adaptierung eines Assemblerprogramms an eine andere Zielhardware 
heranzugehen. Die Controller sind zwar an und für sich kompatibel, aber 
so kompatible dann auch wieder nicht, dass nicht kleinere Änderungen 
notwendig sind.
Generell muss man bei solchen Sachen immer wissen was man tut.

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.