Funktionsproblem i C AVR (löst)
Postat: 16 mars 2007, 15:59:08
Har lite problem med funktionr i C när jag programmera min AVR atmega128.
Problemet är att så fort jag kallar på en funktion så fastnar programmet där och sedan resetas hela programmet(eller kretsen?) och programmet körs om.
Ett exempel:
Antagligen ett lätt programmeringsfel, har gått igenom ett antal C tutorials på nätet och läst en massa om funktioner å funktionsanrop och return värden m.m.
Har också varit igenom ett antal LCD c program till avr där samtliga funktioner där ser ut som på mitt sätt. men nåt fel är de ju
Tacksam för alla förslag
Problemet är att så fort jag kallar på en funktion så fastnar programmet där och sedan resetas hela programmet(eller kretsen?) och programmet körs om.
Ett exempel:
Kod: Markera allt
#define F_CPU 1000000UL /* 1 MHz Internal Oscillator */
#include <avr/io.h>
#include <util/delay.h>
#define E PC2
#define RS PC0
void enable(){ // min funktion som ja vill kalla på
PORTC |= (1 << E); //sätt E hög och sänd datan
_delay_ms(5); // vänta och sen...
PORTC &= ~(1 << E); //sätt E låg och skicka nästa instruktion
}
int main()
{
... // initera LCD för hand med alla enable inlagda i main, alltså ej några yttre funktionsanrop
PORTA = 0x40;
PORTC |= (1 << E); //sätt E hög och sänd datan
_delay_ms(5000); // vänta och sen...
PORTC &= ~(1 << E); //sätt E låg och skicka nästa instruktion
PORTA = 0x40;
enable(); // hit kommer koden sen startar hela alltet om, så funktionen funkar iaf en gång som den skall, för att sedan gå om.
PORTA = 0x30; // detta kommer aldrig med
enable();
while(1){}
}
Har också varit igenom ett antal LCD c program till avr där samtliga funktioner där ser ut som på mitt sätt. men nåt fel är de ju
Tacksam för alla förslag