Atmega88 als USBtoRS232

Gast #1180285
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?
Gast #1180446
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
Angehängte Dateien:
Gast #1180594
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
#1181098
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
#1182247
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.
Gast #1182258
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?
#1186253
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren