Avr projekt funkar inte. Nybörjare nerladdad kod
Avr projekt funkar inte. Nybörjare nerladdad kod
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
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.
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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.
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.
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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å?
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å?
- Klas-Kenny
- Inlägg: 11343
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
Det räcker inte med USART.h, du behöver implementationskoden för alla de där funktionerna också. Antagligen en USART.c
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
Det fanns ingen sån från boken.
Bara serialloopback.c plus de två h filerna.
Bara serialloopback.c plus de två h filerna.
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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.
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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.
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
[/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.
- Klas-Kenny
- Inlägg: 11343
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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
https://github.com/hexagon5un/AVR-Programming
Under AVR-Programming-Library
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
Det gick tydligen inte hem.sodjan skrev:Du kan inte bara markera den relevanta texten och klippa in det mellan "code" markeringar?
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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...
[/code]
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;
}
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
ska fixa code.
hittade detta när jag googlade. kanske säger er något?
https://github.com/hexagon5un/AVR-Programming/issues/8
hittade detta när jag googlade. kanske säger er något?
https://github.com/hexagon5un/AVR-Programming/issues/8
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
Första "issuen" där: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
https://github.com/hexagon5un/AVR-Programming/issues/19
/j
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
Dum fråga.
Kan man ha två c filer i samma projekt?
Kan man ha två c filer i samma projekt?
Re: Avr projekt funkar inte. Nybörjare nerladdad kod
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.
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.