Avr projekt funkar inte. Nybörjare nerladdad kod

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

Tjena!
Tänkte försöka mig på seriell kommunikation mellan atmega16 och datorn.
Har en bok "make avr programming" som jag utgår ifrån.
Kopierade kod från bokens hemsida för att enkelt testa att jag kopplat upp allt rätt på breadboarden.
När jag ska "builda" programmet i avr studio kommer det bara upp massa fel?
Skapade PinDefine.h och USART.h och kopierade även där in koden för dessa filer från hemsidan.

Någon som har en aning om vad problemet kan vara?
Någon dum miss eller 2års extra pluggande om seriell programmering som krävs?

Hagla gärna på med tips eller idiotförklaringar om ni är mer sugna på det ;)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43147
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av sodjan »

Du kan inte bara markera den relevanta texten (speciellt felmeddelanden så klart)
och klippa in det mellan "code" markeringar? Det är t.ex helt omöjligt att klippa
något intressant från dina bilder för att förklara.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

Jag förstod inte riktigt ditt inlägg.
Att det blev tokigt när jag bara tog en halv bild?
Ska jag kopiera in hela koden här istället?
.h filerna också?
Användarvisningsbild
Klas-Kenny
Inlägg: 11291
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av Klas-Kenny »

Det räcker inte med USART.h, du behöver implementationskoden för alla de där funktionerna också. Antagligen en USART.c
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

Det fanns ingen sån från boken.
Bara serialloopback.c plus de två h filerna.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

fil nr 1 SerialLoopback.c

Kod: Markera allt

   
/*
A simple test of serial-port functionality.
Takes in a character at a time and sends it right back out,
 displaying the ASCII value on the LEDs.
*/

// ------- Preamble -------- //
#include <avr/io.h>
#include <util/delay.h>
#include "pinDefines.h"
#include "USART.h"

int main(void) {
  char serialCharacter;

  // -------- Inits --------- //
  LED_DDR = 0xff;                            /* set up LEDs for output */
  initUSART();
  printString("Hello World!\r\n");                          /* to test */

  // ------ Event loop ------ //
  while (1) {

    serialCharacter = receiveByte();
    transmitByte(serialCharacter);
    LED_PORT = serialCharacter;
                           /* display ascii/numeric value of character */

  }                                                  /* End event loop */
  return 0;
}

Senast redigerad av tokfan 24 april 2018, 22:40:40, redigerad totalt 1 gång.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

PinDefines.h

Kod: Markera allt

   // ---------------
//   Pin Defines
// ---------------

#define LED_PORT                PORTB
#define LED_PIN                 PINB
#define LED_DDR                 DDRB

#define LED0                    PB0
#define LED1                    PB1
#define LED2                    PB2
#define LED3                    PB3
#define LED4                    PB4
#define LED5                    PB5
#define LED6                    PB6
#define LED7                    PB7

#define BUTTON_PORT             PORTD
#define BUTTON_PIN              PIND
#define BUTTON_DDR              DDRD

#define BUTTON                  PD2
#define BUTTON2                 PD3
#define BUTTON3                 PD4

#define SPEAKER                 PD6                            /* OC0A */
#define SPEAKER_PORT            PORTD
#define SPEAKER_PIN             PIND
#define SPEAKER_DDR             DDRD

#define ANTENNA                 PD5                            /* OC0B */
#define ANTENNA_PORT            PORTD
#define ANTENNA_PIN             PIND
#define ANTENNA_DDR             DDRD

#define MODULATION              PD3                            /* OC2B */
#define MODULATION_PORT         PORTD
#define MODULATION_PIN          PIND
#define MODULATION_DDR          DDRD

#define LIGHT_SENSOR            PC0                            /* ADC0 */
#define LIGHT_SENSOR_PORT       PORTC
#define LIGHT_SENSOR_PIN        PINC
#define LIGHT_SENSOR_DDR        DDRC

#define CAP_SENSOR              PC1                            /* ADC1 */
#define CAP_SENSOR_PORT         PORTC
#define CAP_SENSOR_PIN          PINC
#define CAP_SENSOR_DDR          DDRC

#define PIEZO                   PC2                            /* ADC2 */
#define PIEZO_PORT              PORTC
#define PIEZO_PIN               PINC
#define PIEZO_DDR               DDRC

#define POT                     PC3                            /* ADC3 */
#define POT_PORT                PORTC
#define POT_PIN                 PINC
#define POT_DDR                 DDRC

//  SPI and I2C serial mode defines

#define SPI_SS                     PB2
#define SPI_SS_PORT                PORTB
#define SPI_SS_PIN                 PINB
#define SPI_SS_DDR                 DDRB

#define SPI_MOSI                     PB3
#define SPI_MOSI_PORT                PORTB
#define SPI_MOSI_PIN                 PINB
#define SPI_MOSI_DDR                 DDRB

#define SPI_MISO                     PB4
#define SPI_MISO_PORT                PORTB
#define SPI_MISO_PIN                 PINB
#define SPI_MISO_DDR                 DDRB

#define SPI_SCK                     PB5
#define SPI_SCK_PORT                PORTB
#define SPI_SCK_PIN                 PINB
#define SPI_SCK_DDR                 DDRB

#define I2C_SDA                     PC4
#define I2C_SDA_PORT                PORTC
#define I2C_SDA_PIN                 PINC
#define I2C_SDA_DDR                 DDRC
Senast redigerad av tokfan 24 april 2018, 22:39:52, redigerad totalt 2 gånger.
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

[/code] USART.h

Kod: Markera allt

/* Functions to initialize, send, receive over USART

   initUSART requires BAUD to be defined in order to calculate
     the bit-rate multiplier.
 */

#ifndef BAUD                          /* if not defined in Makefile... */
#define BAUD  9600                     /* set a safe default baud rate */
#endif

                                  /* These are defined for convenience */
#define   USART_HAS_DATA   bit_is_set(UCSR0A, RXC0)
#define   USART_READY      bit_is_set(UCSR0A, UDRE0)

/* Takes the defined BAUD and F_CPU,
   calculates the bit-clock multiplier,
   and configures the hardware USART                   */
void initUSART(void);

/* Blocking transmit and receive functions.
   When you call receiveByte() your program will hang until
   data comes through.  We'll improve on this later. */
void transmitByte(uint8_t data);
uint8_t receiveByte(void);

void printString(const char myString[]);
             /* Utility function to transmit an entire string from RAM */
void readString(char myString[], uint8_t maxLength);
/* Define a string variable, pass it to this function
   The string will contain whatever you typed over serial */

void printByte(uint8_t byte);
                  /* Prints a byte out as its 3-digit ascii equivalent */
void printWord(uint16_t word);
        /* Prints a word (16-bits) out as its 5-digit ascii equivalent */

void printBinaryByte(uint8_t byte);
                                     /* Prints a byte out in 1s and 0s */
char nibbleToHex(uint8_t nibble);
char nibbleToHexCharacter(uint8_t nibble);
void printHexByte(uint8_t byte);
                                   /* Prints a byte out in hexadecimal */
uint8_t getNumber(void);
/* takes in up to three ascii digits,
 converts them to a byte when press enter */
  
Senast redigerad av tokfan 24 april 2018, 22:37:55, redigerad totalt 1 gång.
Användarvisningsbild
Klas-Kenny
Inlägg: 11291
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av Klas-Kenny »

När jag googlar "make avr programming" får jag en github som ett av de första resultaten, vilken verkar ha all kod från boken. Inklusive usart.c

https://github.com/hexagon5un/AVR-Programming
Under AVR-Programming-Library
Användarvisningsbild
säter
Inlägg: 32513
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av säter »

sodjan skrev:Du kan inte bara markera den relevanta texten och klippa in det mellan "code" markeringar?
Det gick tydligen inte hem.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43147
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av sodjan »

Nej... :-)

Notera de två code och /code taggarna i början och slutet nedan.
(Jag har använt dubbla så att de syns i exemplet också). Sen så
hade ju din kod tappat all indentering, så det blev inte snyggt ändå...

Det räcker med att du gör "edit" på dina inlägg ovan och lägger till
code taggarna så bör det bli bra...

Kod: Markera allt

[code]
/*
A simple test of serial-port functionality.
Takes in a character at a time and sends it right back out,
displaying the ASCII value on the LEDs.
*/

// ------- Preamble -------- //
#include <avr/io.h>
#include <util/delay.h>
#include "pinDefines.h"
#include "USART.h"

int main(void) {
char serialCharacter;

// -------- Inits --------- //
LED_DDR = 0xff; /* set up LEDs for output */
initUSART();
printString("Hello World!\r\n"); /* to test */

// ------ Event loop ------ //
while (1) {

serialCharacter = receiveByte();
transmitByte(serialCharacter);
LED_PORT = serialCharacter;
/* display ascii/numeric value of character */

} /* End event loop */
return 0;
}
[/code]
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

ska fixa code.

hittade detta när jag googlade. kanske säger er något?

https://github.com/hexagon5un/AVR-Programming/issues/8
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av johano »

Klas-Kenny skrev:När jag googlar "make avr programming" får jag en github som ett av de första resultaten, vilken verkar ha all kod från boken. Inklusive usart.c

https://github.com/hexagon5un/AVR-Programming
Under AVR-Programming-Library
Första "issuen" där:
https://github.com/hexagon5un/AVR-Programming/issues/19

/j
tokfan
Inlägg: 694
Blev medlem: 10 juni 2010, 14:05:13

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av tokfan »

Dum fråga.
Kan man ha två c filer i samma projekt?
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Avr projekt funkar inte. Nybörjare nerladdad kod

Inlägg av Icecap »

Om de har olika namn är svaret ja.

Ett projekt består mycket ofta av fler .C-filer där en innehåller main() och resten kan vara "drivrutiner" för hårdvara (UART, I²C osv) medan andra kan vara uträkningar som kan behövas i andra projekt.

Mina projekt (INTE Arduino!) innehåller oftast runt 20 - 30 olika .C-filer.
Skriv svar