Home/Startseite
Shop
 Kauf auf Rechnung
 faire Versandkosten
 schnelle Lieferung
Kontakt / Service
 
login.php profile.php?mode=register index.php search.php faq.php
myAVR.de Foren-Übersicht » myAVR Board MK1 LPT » UART Problem - es kommt immer nur 0xEF oder 0xFF an
Neues Thema eröffnen  Neue Antwort erstellen Vorheriges Thema anzeigen :: Nächstes Thema anzeigen 
UART Problem - es kommt immer nur 0xEF oder 0xFF an
BeitragVerfasst am: 26.04.2010, 14:54 Antworten mit Zitat
Gast




Hallo Leute!

Ich habe ein Problem mit meinem myAVR MK1 LPT:
Ziel des Programmes ist es, ein 'a' per UART an meinem PC zu senden. Dies entspricht dem ASCII-Code 097 (dezimal) bzw. 0x61 (hex).

Wenn ich mit HTerm gucke, was so am PC ankommt, kommt stehts 0xFF oder 0xEF oder so an, jedoch nie 0x61.
Ich habe ein wenig gegoogelt und herausgefunden, dass es evtl. daran liegt, dass ich kein externes Quarz benutze bzw. irgendwelche Fuses nicht gesetzt habe.

Da ich Anfänger bin, habe ich am Board jedoch nichts verändert, dass heisst alle Fuses etc. sind im Urzustand. Ist es notwendig, was am Board zu ändern, damit UART funktioniert?

Die Baudrate dürfte mit 2400 auch nicht zu hoch eingestellt sein; in HTerm habe ich natürlich die gleiche Baudrate eingegeben.

Hier der Code:

Code:

#include <avr/io.h>
#include <util/delay.h>

#ifndef F_CPU
#define F_CPU 1000000UL  // Systemtakt in Hz - Definition als unsigned long beachten
#endif

#define BAUD 2400UL      // Baudrate

#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.

#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch!
#endif


int main(void)
{
   UCSRB |= (1 << TXEN); // UART TX einschalten
   UCSRC |= (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); // Asynchron 8N1

   UBRRH = UBRR_VAL >> 8;
   UBRRL = UBRR_VAL & 0xFF;

   while (!(UCSRA & (1 << UDRE))) /* warten bis Senden moeglich                   */
   {}

   UDR = 0x61;

   return 0;
}


Vllt. kann jemand das Prog ja mal auf seinem Board testen!

Danke & Viele Grüße!
BeitragVerfasst am: 26.04.2010, 19:53 Antworten mit Zitat
Berecke
Anmeldungsdatum: 13.11.2008
Beiträge: 170
Wohnort: Berlin




Programm ist in Ordnung; läuft bei mir auf einen myAVR Board MK2 USB. Prüfe bitte die Fuse-Einstellungen mit dem Progtool. Low Fuse muss auf int RC 1MHz, Startup time 6CK+64ms stehen. Achtung! Die anderen nicht verstellen, wenn hier etwas falsch gemacht wird, kann der µC nur mit besonderen Massnahmen wiederbelebt werden.

_________________
Gruß Berecke
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
BeitragVerfasst am: 27.04.2010, 7:19 Antworten mit Zitat
Gast




Hallo Berecke,

vielen Dank für deine Antwort und dass du mein Programm ausprobiert hast!
Leider kann ich mit ProgTool nicht arbeiten, da es auf giveio.sys zugreift, welche unter Vista64 nicht funktioniert.

Bisher habe ich mein Board immer mit einer selbst kompilierten Vista64-Version von avrdude beschrieben.
Damit habe ich jetzt auch die Fuses ausgelesen, kann mit dem Output aber nicht sehr viel anfangen:

Code:
avrdude -pm8 -csp12 -Ulfuse:r:-:i


avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9307
avrdude: reading lfuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "<stdout>"
:01000000FF00
:00000001FF

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


und mit verbose:

Code:
avrdude -pm8 -csp12 -v -Ulfuse:r:-:i


avrdude: Version 5.10, compiled on Apr 24 2010 at 12:52:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "D:\Entwicklung\myavrworkpadplus\WinA
VR\bin\avrdude.conf"

         Using Port                    : lpt1
         Using Programmer              : sp12
         AVR Part                      : ATMEGA8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0    0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0    0 0x00 0x00

         Programmer Type : PPI
         Description     : Steve Bolt's Programmer
           VCC     = 4,5,6,7,8
           BUFF    =  (not used)
           RESET   = 3
           SCK     = 2
           MOSI    = 9
           MISO    = 11
           ERR LED = 0
           RDY LED = 0
           PGM LED = 0
           VFY LED = 0

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.


Was mich wundert, ist das "AVR device not responding" im zweiten Output. Was hat das zu bedeuten?

Vielen Dank für eure Anmerkungen!
BeitragVerfasst am: 27.04.2010, 20:24 Antworten mit Zitat
Berecke
Anmeldungsdatum: 13.11.2008
Beiträge: 170
Wohnort: Berlin




Kenne mich leider auch nicht mit dem AVRDUDE aus, aber die Fuse sollten wie folgt gesetzt sein:

lfuse 0x0E1
hfuse 0xD9
lock 0xFF

Bei Dir steht nichts drin Question

Code:
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00


bzw.:
Code:
avrdude: writing output file "<stdout>"
:01000000FF00
:00000001FF


Bei mir habe ich ausgelesen:
Code:
avrdude: writing output file "<stdout>"
:01000000E1D9
:00000001FF


Ich denke, die Fuse werden falsch gesetzt. Das würde auch zu den Daten über die EIA232 passen.

_________________
Gruß Berecke
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
BeitragVerfasst am: 14.06.2010, 21:08 Antworten mit Zitat
Gast




Das Problem hat sich von selbst gelöst - habe einen neuen AtMega8 eingesetzt und plötzlich ging es.

Einstellungen des neuen Chips:

lfuse 0xe1
hfuse 0xd9
lock 0x3f

Danke nochmal für die Hilfe. Smile


UART Problem - es kommt immer nur 0xEF oder 0xFF an
myAVR.de Foren-Übersicht » myAVR Board MK1 LPT
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 1  

  
  
 Neues Thema eröffnen  Neue Antwort erstellen  


Powered by phpBB © 2001-2004 phpBB Group
Designed for Trushkin.net | Themes Database
Deutsche Übersetzung von phpBB.de